Mybatis-plus Wrapper使用
第一种:==QueryWrapper==lt: 小于(<) ,最终的sql语句为SELECT id,name,password,age,tel FROM user WHERE (age < ?)第一种方式介绍完后,有个小问题就是在写条件的时候,容易出错,比如age写错,就会导致查询不成功第二种:==QueryWrapper的基础上使用lambda==User::getAget,为lam
第一种:==QueryWrapper==
lt: 小于(<) ,最终的sql语句为
SELECT id,name,password,age,tel FROM user WHERE (age < ?)
第一种方式介绍完后,有个小问题就是在写条件的时候,容易出错,比如age写错,就会导致查询不成功
第二种:==QueryWrapper的基础上使用lambda==
User::getAget,为lambda表达式中的,类名::方法名,最终的sql语句为:
SELECT id,name,password,age,tel FROM user WHERE (age < ?)
注意:构建LambdaQueryWrapper的时候泛型不能省。
此时我们再次编写条件的时候,就不会存在写错名称的情况,但是qw后面多了一层lambda()调用
第三种:==LambdaQueryWrapper==
这种方式就解决了上一种方式所存在的问题。
多条件构建
-
gt:大于(>),最终的SQL语句为
SELECT id,name,password,age,tel FROM user WHERE (age < ? AND age > ?)
-
构建多条件的时候,可以支持链式编程
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>(); lqw.lt(User::getAge, 30).gt(User::getAge, 10); List<User> userList = userDao.selectList(lqw); System.out.println(userList);
查询数据库表中,年龄小于10或年龄大于30的数据
or()就相当于我们sql语句中的or
关键字,不加默认是and
,最终的sql语句为:
SELECT id,name,password,age,tel FROM user WHERE (age < ? OR age > ?)
null判定
查询投影
目前我们在查询数据的时候,什么都没有做默认就是查询表中所有字段的内容,我们所说的查询投影即不查询所有字段,只查询出指定内容的数据。
select(...)方法用来设置查询的字段列,可以设置多个,最终的sql语句为:
SELECT id,name,age FROM user
如果使用的不是lambda,就需要手动指定字段
聚合查询
需求:聚合函数查询,完成count、max、min、avg、sum的使用
count:总记录数
max:最大值
min:最小值
avg:平均值
sum:求和
为了在做结果封装的时候能够更简单,我们将上面的聚合函数都起了个名称,方面后期来获取这些数据
分组查询
groupBy为分组,最终的sql语句为
SELECT count(*) as count,tel FROM user GROUP BY tel
注意:
-
聚合与分组查询,无法使用lambda表达式来完成
-
MP只是对MyBatis的增强,如果MP实现不了,我们可以直接在DAO接口中使用MyBatis的方式实现
查询条件
前面我们只使用了lt()和gt(),除了这两个方法外,MP还封装了很多条件对应的方法,这一节我们重点把MP提供的查询条件方法进行学习下。
MP的查询条件有很多:
-
范围匹配(> 、 = 、between)
-
模糊匹配(like)
-
空判定(null)
-
包含性匹配(in)
-
分组(group)
-
排序(order)
-
……
等值查询
需求:根据用户名和密码查询用户信息
-
eq(): 相当于
=
,对应的sql语句为SELECT id,name,password,age,tel FROM user WHERE (name = ? AND password = ?)
-
selectList:查询结果为多个或者单个
-
selectOne:查询结果为单个
范围查询
需求:对年龄进行范围查询,使用lt()、le()、gt()、ge()、between()进行范围查询
-
gt():大于(>)
-
ge():大于等于(>=)
-
lt():小于(<)
-
lte():小于等于(<=)
-
between():between ? and ?
模糊查询
需求:查询表中name属性的值以J
开头的用户信息,使用like进行模糊查询
-
like():前后加百分号,如 %J%
-
likeLeft():前面加百分号,如 %J
-
likeRight():后面加百分号,如 J%
排序查询
-
orderBy排序
-
condition:条件,true则添加排序,false则不添加排序
-
isAsc:是否为升序,true升序,false降序
-
columns:排序字段,可以有多个
-
-
orderByAsc/Desc(单个column):按照指定字段进行升序/降序
-
orderByAsc/Desc(多个column):按照多个字段进行升序/降序
-
orderByAsc/Desc
-
condition:条件,true添加排序,false不添加排序
-
多个columns:按照多个字段进行排序
-
更多推荐
所有评论(0)