MyBatis-Plus条件查询
MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。
·
MyBatis-Plus条件查询
MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。
本文练习数据采用MyBatis-Plus官网快速开始中的User表:
id | name | age | |
---|---|---|---|
1 | Jone | 18 | test1@baomidou.com |
2 | Jack | 20 | test2@baomidou.com |
3 | Tom | 28 | test3@baomidou.com |
4 | Sandy | 21 | test4@baomidou.com |
5 | Billie | 24 | test5@baomidou.com |
测试代码如下:
@SpringBootTest
class ApplicationTests {
@Autowired
UserMapper userMapper;
@Test
public void testSelectCondition() {
//方式一 字符串
//QueryWrapper qw = new QueryWrapper();
//qw.gt("age", 20);
//方式二 lambda
//QueryWrapper<User> qw = new QueryWrapper<>();
//qw.lambda().gt(User::getAge, 20);
//方式三 LambdaQueryWrapper
LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
//多条件查询 and
//qw.gt(User::getAge, 20).lt(User::getAge, 25);
//多条件查询 or
qw.gt(User::getAge, 25).or().lt(User::getAge, 20);
List<User> userList = userMapper.selectList(qw);
userList.forEach(System.out::println);
}
}
MyBatis使用if等标签实现动态SQL,MP中类似功能如何实现呢?gt(greater than)等方法提供了带拼接条件的重载形式。
//模拟参数获取
User user = new User();
//age为空时的SQL语句: SELECT id,name,age,email FROM user
//age不为空时的SQL语句: SELECT id,name,age,email FROM user WHERE (age > ?)
//user.setAge(20);
//封装查询条件
LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
qw.gt(null != user.getAge(), User::getAge, user.getAge());
//执行查询
List<User> userList = userMapper.selectList(qw);
userList.forEach(System.out::println);
更多推荐
已为社区贡献2条内容
所有评论(0)