Spring Boot入门(13):解锁Mybatis-Plus条件构造器的全新玩法,Spring Boot开发再也不用愁!

1. 前言

MyBatis-Plus是一个非常流行的MyBatis增强工具,它可以简化MyBatis的使用,并且在MyBatis的基础上新增了很多功能。本文将介绍MyBatis-Plus中条件构造器的使用手册,包括基本方法、Lambda表达式、条件构造器链式拼接等等,希望对广大开发者有所帮助。

2. 摘要

MyBatis-Plus中的条件构造器主要用于构建SQL查询条件,它提供了多种构造器,可以通过链式调用来实现复杂的查询条件。本文将详细介绍MyBatis-Plus中条件构造器的使用方法,包括基本方法、Lambda表达式、条件构造器链式拼接等等。

3. 简介

Mybatis-Plus是基于Mybatis的一款优秀开源持久层框架,可以在不编写XML的情况下,实现Mybatis的所有功能,并且提供了一些增强功能,例如条件构造器、分页插件等。条件构造器可以灵活地构造查询条件,实现复杂的查询操作。

4. 正文

4.1 依赖导入

使用Mybatis-Plus之前需要在项目中导入相应的依赖。在pom.xml中添加以下代码:

<dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>mybatis-plus-boot-starter</artifactId>
     <version>${mybatis-plus.version}</version>
</dependency>

4.2 条件构造器常用方法

Mybatis-Plus提供了多种查询条件构造方法,常用的有eq,ne,gt,ge,lt,le,like,in等。例如:

4.2.1 eq方法

eq方法用于等于查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 18);

上述代码表示查询年龄为18的用户。

4.2.2 ne方法

ne方法用于不等于查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ne("age", 18);

上述代码表示查询年龄不为18的用户。

4.2.3 gt方法

gt方法用于大于查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.gt("age", 18);

上述代码表示查询年龄大于18的用户。

4.2.4 ge方法

ge方法用于大于等于查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);

上述代码表示查询年龄大于等于18的用户。

4.2.5 lt方法

lt方法用于小于查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lt("age", 18);

上述代码表示查询年龄小于18的用户。

4.2.6 le方法

le方法用于小于等于查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.le("age", 18);

上述代码表示查询年龄小于等于18的用户。

4.2.7 between方法

between方法用于范围查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.between("age", 18, 30);

上述代码表示查询年龄在18到30之间的用户。

4.2.8 like方法

like方法用于模糊查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "张");

上述代码表示查询名字中包含“张”的用户。

4.2.9 notLike方法

notLike方法用于不包含查询,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notLike("name", "张");

上述代码表示查询名字中不包含“张”的用户。

4.2.10 in方法

in方法用于in查询,例如:

List<Integer> ageList = new ArrayList<>();
ageList.add(18);
ageList.add(20);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.in("age", ageList);

上述代码表示查询年龄为18或20的用户。

4.2.11 notIn方法

notIn方法用于not in查询,例如:

List<Integer> ageList = new ArrayList<>();
ageList.add(18);
ageList.add(20);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.notIn("age", ageList);

上述代码表示查询年龄不为18或20的用户。

4.2.12 isNull方法

isNull方法用于查询为null的数据,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("name");

上述代码表示查询名字为null的用户。

4.2.13 isNotNull方法

isNotNull方法用于查询不为null的数据,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("name");

上述代码表示查询名字不为null的用户。

4.3 Lambda表达式

Lambda表达式是Java 8中的一项新特性,在MyBatis-Plus中也支持Lambda表达式查询,例如:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getAge, 18);

上述代码与上文的eq方法功能相同,但是使用了Lambda表达式。除了eq方法,其他方法也都支持Lambda表达式。

4.4 条件构造器链式拼接

条件构造器支持链式拼接,可以使用and、or方法来实现,例如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三").or().eq("name", "李四");

上述代码表示查询名字为“张三”或者“李四”的用户。

4.5 测试用例

为了验证以上方法的正确性,我们可以编写以下测试用例:

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserMapperTest {
    
    @Autowired
    private UserMapper userMapper;

    @Test
    public void test1() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("age", 18);
        List<User> userList = userMapper.selectList(queryWrapper);
        Assert.assertEquals(userList.size(), 2);
    }

    @Test
    public void test2() {
        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(User::getAge, 18);
        List<User> userList = userMapper.selectList(lambdaQueryWrapper);
        Assert.assertEquals(userList.size(), 2);
    }

    @Test
    public void test3() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name", "张三").or().eq("name", "李四");
        List<User> userList = userMapper.selectList(queryWrapper);
        Assert.assertEquals(userList.size(), 2);
    }
}

上述测试用例分别测试了eq方法、Lambda表达式、条件构造器链式拼接的正确性。

小结

本文介绍了MyBatis-Plus中条件构造器的使用方法,包括基本方法、Lambda表达式、条件构造器链式拼接等等。通过本文的介绍,相信读者已经可以掌握MyBatis-Plus中条件构造器的使用方法,以及如何通过条件构造器来实现复杂的查询条件。

  • 34
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值