基于mybatis-plus的多条件查询语句关联

AbstractWrapper:
说明:
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

1.allEq -> 全部eq(或个别isNull)
例1: allEq({id:1,name:“老王”,age:null})—>id = 1 and name = ‘老王’ and age is null
例2: allEq({id:1,name:“老王”,age:null}, false)—>id = 1 and name = ‘老王’

2.eq -> 等于
等于 =
例: eq(“name”, “老王”)—>name = ‘老王’

3.gt-> 大于
大于 >
例: gt(“age”, 18)—>age > 18

4.ge - > 大于等于
大于等于 >=
例: ge(“age”, 18)—>age >= 18

5.lt
小于 <
例: lt(“age”, 18)—>age < 18

6.le
小于等于 <=
例: le(“age”, 18)—>age <= 18

7.between
BETWEEN 值1 AND 值2
例: between(“age”, 18, 30)—>age between 18 and 30

8.notBetween
NOT BETWEEN 值1 AND 值2
例: notBetween(“age”, 18, 30)—>age not between 18 and 30

9.like
LIKE ‘%值%’
例: like(“name”, “王”)—>name like ‘%王%’

10.in
字段 IN (value.get(0), value.get(1), …)
例: in(“age”,{1,2,3})—>age in (1,2,3)

11.insql
字段 IN ( sql语句 )
例: inSql(“age”, “1,2,3,4,5,6”)—>age in (1,2,3,4,5,6)
例: inSql(“id”, “select id from table where id < 3”)—>id in (select id from table where id < 3)

12.groupBy
分组:GROUP BY 字段, …
例: groupBy(“id”, “name”)—>group by id,name

13.orderByDesc
排序:ORDER BY 字段, … ASC
例: orderByAsc(“id”, “name”)—>order by id ASC,name ASC

14.and
AND 嵌套
例: and(i -> i.eq(“name”, “李白”).ne(“status”, “活着”))—>and (name = ‘李白’ and status <> ‘活着’)

QueryWrapper
说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取
#select 设置查询字段
例: select(“id”, “name”, “age”)
例: select(i -> i.getProperty().startsWith(“test”))

UpdateWrapper
说明:
继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!
#set
SQL SET 字段
例: set(“name”, “老李头”)
例: set(“name”, “”)—>数据库字段值变为空字符串
例: set(“name”, null)—>数据库字段值变为null

lambda
获取 LambdaWrapper
在QueryWrapper中是获取LambdaQueryWrapper
在UpdateWrapper中是获取LambdaUpdateWrapper
#使用 Wrapper 自定义SQL
需求来源:
在使用了mybatis-plus之后, 自定义SQL的同时也想使用Wrapper的便利应该怎么办? 在mybatis-plus版本3.0.7得到了完美解决 版本需要大于或等于3.0.7, 以下两种方案取其一即可

Service.java
mysqlMapper.getAll(Wrappers.<MysqlData>lambdaQuery().eq(MysqlData::getGroup, 1));
方案一 注解方式 Mapper.java
@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);
方案二 XML形式 Mapper.xml
<select id="getAll" resultType="MysqlData">
	SELECT * FROM mysql_data ${
     ew.customSqlSegment}
</select>

你可能感兴趣的:(基于mybatis-plus的多条件查询语句关联)