mybatis数据库查询的几种常见方法

 更新时间:2026年01月14日 14:15:46   作者:memgLIFE  
本文介绍了几种在MyBatis中进行数据库查询的常见方法,包括使用OR条件查询、FIND_IN_SET函数查询逗号分隔的字符串、LIKE查询进行模糊匹配,以及使用JSON_OVERLAPS函数查询数组,建议根据数据库实际存储格式选择合适的查询方法,感兴趣的朋友跟随小编一起看看吧

1、使用 OR 条件查询 可以替换成SQL的IN条件(查询多条记录字段存一个值)

queryWrapper.and(!CollectionUtils.isEmpty(req.getWorkshopCodes()), wrapper -> {
            for (String paramType : req.getWorkshopCodes()) {
                wrapper.or().eq(DeviceShiftInfo::getWorkshopCode, paramType);
            }
        });
SQL:  (workshop_code = '测试1'	OR workshop_code = '测试2')
      queryWrapper.in(!CollectionUtils.isEmpty(req.getWorkshopCodes()),DeviceShiftInfo::getWorkshopCode,req.getWorkshopCodes())            
 SQ:workshop_code IN('测试1','测试2')

2、数据库存的是逗号分隔的字符串(存的是测试1,测试2)查询的值存在性

queryWrapper.and(!CollectionUtils.isEmpty(req.getWorkshopCodes()), wrapper -> {
            for (String paramType : req.getWorkshopCodes()) {
                wrapper.or()
                        .apply("FIND_IN_SET({0}, workshop_code)", paramType);
            }
        });
SQL:WHERE	((FIND_IN_SET('1', workshop_code) OR FIND_IN_SET('2', workshop_code)))

3、模糊查询

queryWrapper.and(!CollectionUtils.isEmpty(req.getWorkshopCodes()), wrapper -> {
            for (String paramType : req.getWorkshopCodes()) {
                wrapper.or().like(DeviceShiftInfo::getWorkshopCode, paramType);
            }
        });
SQL: WHERE ((workshop_code LIKE '%1%' OR workshop_code LIKE '%2%'))

4、数据库存的是数组
假如库里存数组
JSON_OVERLAPS() 是 MySQL 8.0.17 及以上版本引入的一个函数,用于判断两个 JSON 文档是否存在重叠(overlap)的元素。它常用于比较两个 JSON 数组是否包含至少一个相同的值

WHERE 	((JSON_OVERLAPS(remark,	'["1","2"]'))) 只要数据库字段的数组存在查询集合的值则就会被返回

建议:

  • 确认数据库实际存储格式:先检查数据库字段的实际存储值
  • 如果存的是单个值:用方法1(OR条件)
  • 如果存的是逗号分隔:用方法2(FIND_IN_SET)
  • 如果需要模糊匹配:用方法3(LIKE查询)

到此这篇关于mybatis数据库查询的文章就介绍到这了,更多相关mybatis数据库查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解SpringBoot获得Maven-pom中版本号和编译时间戳

    详解SpringBoot获得Maven-pom中版本号和编译时间戳

    这篇文章主要介绍了详解SpringBoot获得Maven-pom中版本号和编译时间戳,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • MyBatis传入多个参数时parameterType的写法

    MyBatis传入多个参数时parameterType的写法

    这篇文章主要介绍了MyBatis传入多个参数时parameterType的写法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • 基于java流实现压缩图片过程解析

    基于java流实现压缩图片过程解析

    这篇文章主要介绍了基于java流实现压缩图片过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java实现俄罗斯方块小游戏源码

    Java实现俄罗斯方块小游戏源码

    这篇文章主要为大家详细介绍了Java实现俄罗斯方块小游戏源码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • java分页拦截类实现sql自动分页

    java分页拦截类实现sql自动分页

    这篇文章主要为大家详细介绍了java分页拦截类可以实现sql自动分页,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • SpringBoot 启动时自动执行代码的几种方式讲解

    SpringBoot 启动时自动执行代码的几种方式讲解

    本文主要介绍了SpringBoot 启动时自动执行代码的几种方式,包括static代码块、构造方法、@PostConstruct注解、ApplicationRunner和CommandLineRunner接口,感兴趣的可以了解一下
    2025-12-12
  • SpringBoot开发中使用DTO层的方法示例

    SpringBoot开发中使用DTO层的方法示例

    DTO层是在应用程序的业务逻辑层和数据访问层之间引入的一个中间层,用于在不同层之间传输数据,本文主要介绍了SpringBoot开发中使用DTO层,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • IDEA2020.1使用LeetCode插件运行并调试本地样例的方法详解

    IDEA2020.1使用LeetCode插件运行并调试本地样例的方法详解

    这篇文章主要介绍了IDEA2020.1使用LeetCode插件运行并调试本地样例的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-09-09
  • 搭建一个基础的Resty项目框架

    搭建一个基础的Resty项目框架

    这篇文章主要为大家介绍了如何搭建一个基础的Resty项目框架示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • Springboot处理CORS跨域请求的三种方法

    Springboot处理CORS跨域请求的三种方法

    这篇文章主要介绍了Springboot处理CORS跨域请求的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论