这是我参与8月更文挑战的第16天,活动详情查看:8月更文挑战
AbstractWrapper主要封装的是查询条件,
AbstractWrapper主要封装的是查询条件,QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 都继承了AbstractWrapper。
分享一些AbstractWrapper封装的常用条件(只分享一些常用的):
- 等于:=
eq(R column, Object val)
// eq("name", "123")`--->`name = '123'
- 不等于 <>
ne(R column, Object val)
// ne("name", "123")--->`name <> '123'
- 大于 >
gt(R column, Object val)
// gt("age", 18)--->`age > 18`
- 大于等于 >=
ge(R column, Object val)
// ge("age", 18)--->`age >= 18`
- 小于 <
lt(R column, Object val)
// lt("age", 18)`--->`age < 18`
- BETWEEN 值1 AND 值2(notBetween和这个相似)
between(R column, Object val1, Object val2)
// between("age", 18, 30)`--->`age between 18 and 30
- LIKE '%值%'
like(R column, Object val)
// like("name", "王")`--->`name like '%王%'`
(notLike,likeLeft,likeRight与like相似 只是所匹配的数据不同)
- 字段 IS NULL
isNull(R column)
// isNull("name")--->`name is null`
(isNotNull 类似)
- 字段 IN (value.get(0), value.get(1), ...)
in(R column, Collection<?> value)
// `in("age",{1,2,3})`--->`age in (1,2,3)`
(NOT IN 与上基本相似)
- 字段 IN ( sql语句 ) 这个想比上面的in更为的灵活
inSql(R column, String inValue)
// `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)`
(字段 NOT IN ( sql语句 ) 类似)
- 分组:GROUP BY 字段, ...
groupBy(R... columns)
// `groupBy("id", "name")`--->`group by id,name`
ORDER BY 字段, ... DESC
orderByDesc(R... columns)
// `orderByDesc("id", "name")`--->`order by id DESC,name DESC`
(orderByDesc,orderBy与上面相似 其中orderBy默认是ASC排序)
- 拼接 OR
这个是我们再开发过程中需要注意的:
主动调用
or表示紧接着下一个方法不是用and连接!(不调用or则默认为使用and连接)
贴一张图:
- 总结:以上这些查询条件是再开发过程中回经常使用到的,这也证实了mybatis-plus中的一个特性:更有强大的条件构造器,满足各类使用需求 这些查询条件基本包含了我们常用的查询。但是争对业务查询比较复杂的语句,不是很建议用查询条件完成,可以直接再mapper.xml文件中写sql查询语句。也可以使用注解
QueryWrapper
继承AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
补充一个字段:设置查询字段 (其他的查询条件可以参考上面的条件)
//eg: select("id", "name", "age")
UpdateWrapper
补充:
- SQL SET 字段 // set("name", "123")
总结
编写sql我们一般会加上各种条件,而条件构造器恰恰就帮我简化了这些操作,我们可以直接调用条件构造器中的这些方法来进行带条件查询,这篇文章主要分享这些查询条件中如何调用,多使用几次就会熟悉,更详细的可以查看官方文档。