【Spring Boot】Mybatis Plus 2.X 条件查询

【引言】

    在前面的博客中,有总结两篇与Mybatis-Plus相关的文章,《知道Mybatis,知道Mybatis-Plus么?》以及《自动生成代码配置》。Mybatis的增强版、更简洁的xml、更强大的代码生成,这些都很大程度上节省了我们的开发时间。

    因为最近接触的项目中,用到了Mybatis-Plus,简单的增删改都不需要我们再去写方法,而对于查询,单个条件、多个条件,精确查询、模糊查询,查询结果排序,类似这些接口,我们该如何去实现,这就是本篇博客内容要总结的。

【核心及应用】

    在Mybatis-Plus 2.1中,查询主要是通过核心类EntityWrapper实现的,而在Mybatis-Plus3.1中,则主要是通过QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类,用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。

    而前面博客中,引用的版本是2.1,所以,先在此基础上,简单举例实现各种查询。后期再对3.1版本做相关总结。

说明
  • 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中
  • 以下代码实例化的为EntityWrapper,可根据实体属性直接拼接查询条件
EntityWrapper wrapper=new EntityWrapper();
wrapper.setEntity(article);
  • 以下只是将几个比较常用的做了简单列举,具体更全面的方法可参考官方文档:

https://baomidou.gitee.io/mybatis-plus-doc/#/quick-start

  • 以下代码示例已上传github,地址:

https://github.com/huzhiting/spring-boot-mybatis-plus-generator.git

eq
eq(boolean condition, String column, Object params)
eq(String column, Object params)
  • 等于 =
  • 例: eq(“site”, “INFO”)—>site = ‘INFO’
//根据某列单个条件查询
wrapper.eq("site",article.getSite());
allEq
allEq(boolean condition, Map<String, Object> params)
allEq(Map<String, Object> params)
  • 全部eq(或个别isNull)
  • 例: allEq({site:“LIFE”,cat_id:“1”})—>site = ‘LIFE’ and cat_id= 1
//多个条件组合查询
Map<String,Object> params=new HashMap<>();
params.put("site","LIFE");
params.put("cat_id","1");
wrapper.allEq(params);
like
like(boolean condition, String column, String value)
like(String column, String value)
  • LIKE ‘%值%’
  • 例: like(“title”, “头条”)—>title like ‘%头条%’
// 模糊查询("%头条%"、"%头条"、"头条%")
article.setTitle("'头条'");
wrapper.like(true,"title",article.getTitle());
in
in(boolean condition, String column, String value)
in(String column, String value)
  • 字段 IN (v0, v1, …)
  • 例: in(“status”, 0,2)—>status in (0,2)
//in条件查询
wrapper.in("status","0,2");
orderBy
orderBy(boolean condition, String columns)
orderBy(String columns)
orderBy(String columns, boolean isAsc)
orderBy(boolean condition, Collection<String> columns, boolean isAsc)
...
  • 排序:ORDER BY 字段, …
  • 例: 例: orderBy(“update_time”,false)—>order by update_time DESC
//order by 排序
wrapper.orderBy("update_time",false);

【总结】

    用Mybatis的时候,是可以使用生成的Example做一系列条件查询。每个实体下都有对应的一套Example,就会感觉代码冗余。

    而Mybatis-Plus省去了这一套代码的生成,便可以将实体的各个属性都可以作为查询条件。

    另外,Mybatis-Plus2.X和3.X版本还是挺大差异的,不过对于这些查询条件的运用,其实是一样的。根据官方文档或者是自己查看源代码实现,都可以快速实现。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值