这是一篇干货文章!
Mybatis-Plus简介:
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。
条件构造器:
说明:
以下出现的第一个入参
boolean condition
表示该条件是否加入最后生成的sql中以下代码块内的多个方法均为从上往下补全个别
boolean
类型的入参,默认为true
以下出现的泛型
Param
均为Wrapper
的子类实例(均具有AbstractWrapper
的所有方法)以下方法在入参中出现的
R
为泛型,在普通wrapper中是String
,在LambdaWrapper中是函数(例:Entity::getId
,Entity
为实体类,getId
为字段id
的getMethod)以下方法入参中的
R column
均表示数据库字段,当R
具体类型为String
时则为数据库字段名(字段名是数据库关键字的自己用转义符包裹!)!而不是实体类数据字段名!!!,另当R
具体类型为SFunction
时项目runtime不支持eclipse自家的编译器!!!以下举例均为使用普通wrapper,入参为
Map
和List
的均以json
形式表现!使用中如果入参的
Map
或者List
为空,则不会加入最后生成的sql中!!!
警告:
不支持以及不赞成在 RPC 调用中把 Wrapper 进行传输
wrapper 很重
传输 wrapper 可以类比为你的 controller 用 map 接收值(开发一时爽,维护火葬场)
正确的 RPC 调用姿势是写一个 DTO 进行传输,被调用方再根据 DTO 执行相应的操作
我们拒绝接受任何关于 RPC 传输 Wrapper 报错相关的 issue 甚至 pr
AbstractWrapper
说明:
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为
QueryWrapper
说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取
具体查询方法
查询方法 | 说明 |
---|---|
eq | 等于= |
ne | 不等与<> |
gt | 大于> |
ge | 大于等于>= |
lt | 小于< |
le | 小于等于<= |
like | 模糊查询 LIKE |
notLike | 模糊查询 NOT LIKE |
in | IN 查询 |
notIn | NOT IN 查询 |
isNull | NULL 值查询 |
isNotNull | IS NOT NULL |
示例
taskQueryWrapper.and(wrapper -> wrapper.like("task_name", adminBaseBO.getSearchWord()).or().in("create_user", userIdList));taskQueryWrapper.like("task_name", adminBaseBO.getSearchWord());taskQueryWrapper.in("assistantId",userIdList);taskQueryWrapper.ge(!StringUtils.isEmpty(adminBaseBO.getStartTime()),"create_time",adminBaseBO.getStartTime()) .le(!StringUtils.isEmpty(adminBaseBO.getEndTime()),"create_time",adminBaseBO.getEndTime());
如果觉得有帮助请三连哦!
![3bfde93d840923ca107cb0cc6e6e6720.png](https://i-blog.csdnimg.cn/blog_migrate/d5ec1d77559779c38c580d36a02c27de.png)
![005768c20dda83631b19b12176a4202e.png](https://i-blog.csdnimg.cn/blog_migrate/0a46be52411204a58fc01a32f6ecd016.png)
![b4f06a21cfa61891a04d721862da8d73.png](https://i-blog.csdnimg.cn/blog_migrate/0940c4a796a10a4c99a7dd96ffdc09d7.png)
![f994ba77c561bbdbeb3a385b5a031de2.gif](https://i-blog.csdnimg.cn/blog_migrate/cdf303a1ab1db450243b72ee49f5f2bb.gif)