MyBatis-Plus条件查询

本文介绍了如何使用MyBatis-Plus进行条件查询,包括字符串方式、Lambda表达式方式和LambdaQueryWrapper的使用。示例代码展示了通过不同条件组合生成SQL查询,并演示了动态条件构造,如当年龄为空时和不为空时的SQL拼接。这种编程形式简化了复杂SQL的编写。

MyBatis-Plus条件查询

MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。

本文练习数据采用MyBatis-Plus官网快速开始中的User表:

idnameageemail
1Jone18test1@baomidou.com
2Jack20test2@baomidou.com
3Tom28test3@baomidou.com
4Sandy21test4@baomidou.com
5Billie24test5@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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值