条件构造器

条件字段
说明

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条件。

Drawing
BaseMapper

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方法在执行更新时只能对字段进行赋值,而不能对齐进行计算,对于一些复杂的需求就难以实现。

例如:扣除id1,2,3的用户200元。

这种情况下就要利用UpdateWrapper中的setSql功能来实现。

LambdaQueryWrapper

上述的示例中,我们都是在构造条件的时候写死了字段名称,会出现字符串魔法值,这在编程规范中是不推荐的。那么怎么才能不写字字段名,又能准确知道字段名呢?

其中一种办法是基于变量的gettter方法结合反射技术。因此我们只要将条件对应的字段的getter方法传递给 MybatisPlus,它就能计算出对应的变量名了。而传递方法可以使用JDK8中的方法引用Lambda表达式。

  • LambdaQueryWrapper

  • LambdaUpdateWrapper

LambdaQueryChainWrapper

以前是创建一个条件构造器,在通过 mapper 或 service 一条件构造器为参数进行查询,LambdaQueryChainWrapper 将前两步合并,直接通过链式调用进行查询。

LambdaQueryChainWrapper 有以下方法获取结果:

  • list:返回 List

  • one:返回一条数据

  • map:返回 Map

  • count:返回 count

  • remove:删除

  • update:更新

  • page:分页查询

  • select:自定义查询

使用 Wrapper 自定义SQL

链式调用lambda式

最后更新于