MyBatis-Plus提供了简单的CRUD方法,这次来研究MyBatis-Plus的条件构造器。
构造器关系

- 蓝色线连起来的是Wrapper的类,其他都是继承
- 最下边四个是正常类,可以new对象
- 加了Abstract的是抽象类
- 蓝色实线是继承关系
wapper介绍 :
Wrapper: 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示AbstractWrapper: 用于查询条件封装,生成 sql 的 where 条件AbstractLambdaWrapper: Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。LambdaQueryWrapper:看名称也能明白就是用于Lambda语法使用的查询WrapperLambdaUpdateWrapper: Lambda 更新封装WrapperQueryWrapper: Entity 对象封装操作类,不是用lambda语法UpdateWrapper: Update 条件封装,用于Entity对象更新操作
构造器方法
| FunctionName | Desc | Example |
|---|---|---|
| eq( ); | 等于 = | eq(“name”,”Allwayz”) -> name = ‘Allwayz’ |
| ne( ); | 不等于 != | ne(“name”,”Allwayz”) -> name<>’Allwayz’ |
| gt( ); | 大于 > | gt(“age”,18) -> age > 18 |
| ge( ); | 大于等于 >= | ge(“age”,18) -> age >= 18 |
| lt( ); | 小于 < | lt(“age”,18) -> age < 18 |
| le( ); | 小于等于 <= | le(“age”,18) -> age <= 18 |
| between( ); | BETWEEN | between(“age”,18,30) -> age between 18 and 30 |
| notBetween( ); | NOT BETWEEN | notBetween(“age”,18,30) -> age not between 18 and 30 |
| like( ); | LIKE ‘%value%’ | like(“name”,”All”) -> name like ‘%All%’ |
| notLike( ); | NOT LIKE ‘%value%’ | notLike(“name”,”All”) -> name not like ‘%All%’ |
| likeLeft( ); | LIKE ‘%value’ | likeLeft(“name”,”All”) -> name like ‘%All’ |
| likeRight( ); | LIKE ‘value%’ | likeRight(“name”,”All”) -> name like ‘All%’ |
| isNull( ); | Value IS NULL | isNull(“name”) ->name is null |
| isNotNull( ); | Value IS NOT NULL | isNotNull(“name”) ->name is not null |
| in( ); | Value IN(v0,v1…) | in(“age”,{1,2,3}) -> age in (1,2,3) |
| notIn( ); | Value NOT IN(v0,v1…) | notIn(“age”,{1,2,3}) -> age not in (1,2,3) |
| inSql( ); | Value IN(sql) | inSql(“id”,”Select id from table where id < 3”) -> id in (Select id from table where id < 3) |
| notInSql( ); | Value NOT IN(sql) | notInSql(“id”,”Select id from table where id < 3”) -> id not in (Select id from table where id < 3) |
| groupBy( ); | 分组 | groupBy(“id”,”name”) -> group by id, name |
| orderByAsc( ); | 升序排列 | orderByAsc(“id”,”name”) -> order by id ASC, name ASC |
| orderByDesc( ); | 降序排列 | orderByDesc(“id”,”name”) -> order by id DESC, nameDESC |
| orderBy( ); | 排列 | orderBy(true, true,”id”,”name”) -> order by id ASC, name ASC |
| having( ); | HAVING(sql) | having(“sum(age) > {0}”,11) -> having sum (age) >11 |
| or( ); | 拼接 OR | |
| and( ); | AND 嵌套 | |
| apply( ); | 拼接 sql | |
| last( ) | 无视优化规则直接拼接到sql最后 | |
| exists( ); | 拼接 EXISTS(sql) | |
| notExists( ); | 拼接 NOT EXIXSTS (sql) | |
| nested( ); | 正常嵌套 不带AND OR |
使用过程
1 | /** |
控制台
1 | JDBC Connection [HikariProxyConnection@2005675644 wrapping com.mysql.cj.jdbc.ConnectionImpl@b70fa38] will not be managed by Spring |