开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):项目技术点-MybatisPlus 实现条件查询】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11277
项目技术点-MybatisPlus 实现条件查询
简介:
Wrapper:条件构造抽象类,最顶端父类
AbstractWrapper:用于查询条件封装,生成 sql 的 where 条件
QueryWrapper:Entity 对象封装操作类,不是用 lambda 语法
UpdateWrapper:Update 条件封装,用于 Entity 对象更新操作
AbstractLambdaWrapper:Lambda 语法使用 Wrapper 统-处理解析 lambda 获取 column。LambdaQueryWrapper:看名称也能明白就是用于 Lambda 语法使用的查询 Wrapper
LambdaUpdateWrapper:Lambda 更新封装 Wrapper
1.mp 实现复杂条件查询的几种方法
(1)ge,gt,le,lt,isNull,isNotNull
@Test
public void testDelete()
Querywrapper<Ufer> querywrapper.new Querywrappero();
querywrapper
.isNull("name")
.ge("age",12)
.isNotNull("email");
int result.userMapper.delete(querywrapper);
System.out.println("delete return count=" + result);
(2)eq,ne
注意:seletOne 返回的是一条实体记录,当出现多条时会报错
@Test
public void testSelectOne()
QueryWrapper<User> queryWrapper.new QueryWrappero>();
querywrapper.eq("name","Tam");
User user = userMapper.selectOne(querywrapper);
System.out.println(user);
(3)between,notBetween
包含大小边界
@Test
public void testSelectCount()
Querywrapper <User> querywrapper = new Querywrappero();
queryWrapper.between("age",20,30);
Integer count = userMapper.selectCount(queryWrapper);
System.out.println(count);
(4)allEq
@Test
public void testSelectList()
Querywrapper<User> querywrapper = new Querywrappero();
Map<String, Object> map.new HashMapo();
map.put("id", 2);
map.put("name","Jack");
map.put("age", 20);
querywrapper.allEq(map);
List<User> users.us erMapper.selectList(queryw-apper);
users.forE ach(System.out::println);
(5)orderBy,orderByDesc,orderByAsc
@Test
public void testSelectListOrderBy()
Querywrapper<User>querywrapper.newQuerywrappero»();
querywrapper.orderByDesc("id");
List<User> users.userMapper.selectList(querywrapper);
users.forEach(System.out::println);
(6)last
直接拼接到 sql 的最后
注意:只能调用一次多次调用以最后一次为准有 sql 注入的风险请谨慎使用
@Test
public vold testSelectListLast()
QueryWrapper<User> querywrapper=new Querywrapper<>();
querywrapper.last("limit 1");
List<User> users = userMapper.selectList(queryhirapper);
users.forEach(System.out::println);
(7)指定要查询的列
@Test
public vold testSelectListColumn()
Querywrapper <User> querywrapper = new Querywrappero>();
querywrapper.select("id","name","age" );
List<User> users.userMapper.selectList(querywrapper);
users.forEach(System.out::println);
2.代码
//mp 实现复杂查询操作
@Test
public void testSelectQuery()
//创建 QueryWrapper5jk
QueryWrapper<User>wrapper=newQueryWrapper<>();
//通过 QueryWrapper 设置条件//ge.gt.le.It
//查询 age>=30记录
//第一个参数字段名称,第二个参数设置值 wrapper.ge(column:.age",val:30) ;
//eq,ne
//wrapper.eq("name,'lilei");
//wrapper.ne("name",lilei");
//between
//查询年龄20-30
wrapper. between(column:"age",val1:20,val2:30)
//like
wrapper.like(column:name,val:"岳):
//orderByDesc
wrapper.orderByDesc(''id' ) ;
//last
wrapper.last("limit 1")
//指定要查询的列
wrapper.select("id"name)
List<User> users = userMapper.selectList (wrapper);
System.out.println(users) ;
注:
ge、gt、le、lt:>=><=<
eq、ne: =!= <>
like:模糊查询
orderByDesc/Asc:排序
last:语句最后拼接 sql 语句
between:范围
select:指定列