条件构造器
setSqlSele
设置 SELECT 查询字段
where
WHERE 语句,拼接 + WHERE 条件
and
AND 语句,拼接 + AND 字段=值
andNew
AND 语句,拼接 + AND (字段=值)
or
OR 语句,拼接 + OR 字段=值
orNew
OR 语句,拼接 + OR (字段=值)
eq
等于=
allEq
基于 map 内容等于=
ne
不等于
gt
大于
ge
大于等于>=
lt
小于<
le
小于等于<=
like
模糊查询LIKE
notLike
模糊查询 NOT LIKE
in
IN查询
notIn
NOT IN 查询
isNull
NULL 值查询
isNotNull
IS NOT NULL
groupBy
分组 GROUP BY
having
HAVING 关键词
orderBy
排序 ORDER BY
orderAsc
ASC 排序 ORDER BY
orderDesc
DESC 排序 ORDER BY
exists
EXISTS 条件语句
notExists
NOT EXISTS 条件语句
between
BETWEEN 条件语句
notBetween
NOT BETWEEN 条件语句
addFilter
自由拼接 SQL
last
拼接在最后,例如:last("LIMIT 1")
除新增以外,修改、删除、查询的 SQL 语句都需要指定where条件,因此BaseMapper中提供了除id作为where条件以外的其他查询方法,支持更加复杂的where条件。
QueryWrapper
继承自 AbstractQueryWrapper,自身的内部属性 entity 也用于生成条件及 LambdaQueryWrapper,可以通过 new QueryWrapper().lambda() 的方式获取。
设置查询字段
以上方法分为两类,一类是直接传入字段名,另一类是传入一个 Predicate 函数式接口,用于过滤字段。
例如:·
无论是修改、删除、查询,都可以使用QueryWrapper来构造查询条件。
查询:查询名字中带o的用户,存款大于等于1000的人。
更新:更新用户名为李小明的用户余额为2000元。
删除:删除名字中带o的用户,存款大于1000的用户
UpdateWrapper
继承自 AbstractUpdateWrapper,自身的内部属性 entity 也用于生成条件及 LambdaUpdateWrapper,可以通过 new UpdateWrapper().lambda() 的方式获取。
set
设置 SET 部分 SQL
例如:
lambda
获取 LambdaWrapper,在 QueryWrapper 中是获取 LambdaQueryWrapper,在 UpdateWrapper 中是获取 LambdaUpdateWrapper。
基于BaseMapper中提供的update方法在执行更新时只能对字段进行赋值,而不能对齐进行计算,对于一些复杂的需求就难以实现。
例如:扣除id为1,2,3的用户200元。
这种情况下就要利用UpdateWrapper中的setSql功能来实现。
LambdaQueryWrapper
上述的示例中,我们都是在构造条件的时候写死了字段名称,会出现字符串魔法值,这在编程规范中是不推荐的。那么怎么才能不写字字段名,又能准确知道字段名呢?
其中一种办法是基于变量的gettter方法结合反射技术。因此我们只要将条件对应的字段的getter方法传递给 MybatisPlus,它就能计算出对应的变量名了。而传递方法可以使用JDK8中的方法引用和Lambda表达式。
LambdaQueryWrapperLambdaUpdateWrapper
LambdaQueryChainWrapper
以前是创建一个条件构造器,在通过 mapper 或 service 一条件构造器为参数进行查询,LambdaQueryChainWrapper 将前两步合并,直接通过链式调用进行查询。
LambdaQueryChainWrapper 有以下方法获取结果:
list:返回 List
one:返回一条数据
map:返回 Map
count:返回 count
remove:删除
update:更新
page:分页查询
select:自定义查询
使用 Wrapper 自定义SQL
链式调用lambda式
最后更新于