SpringBoot整合Mybatis-Plus
2019年10月27日
简介
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
快速入门
定义 user
表,表结构如下:
id | name | age | manager_id | create_time | |
---|---|---|---|---|---|
1087982257332887553 | 大boss | 40 | boss@baomidou.com | 2019-01-11 14:20:20 | |
1088248166370832385 | 王天风 | 25 | wtf@baomidou.com | 1087982257332887553 | 2019-02-05 11:12:22 |
1088250446457389058 | 李艺伟 | 28 | lyw@baomidou.com | 1088248166370832385 | 2019-02-14 08:31:16 |
定义实体类 :
1 |
|
dao
接口,UserMapper,只需要继承 BaseMapper<User>
测试例子:
1 | 4j |
条件查询
名字包含雨并且年龄小于40 (name like ‘%雨%’ and age < 40)
1
2
3
4
5
6
7
8
public void selectByWrapper(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "雨").lt("age", 40);
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}名字包含雨并且年龄大于等于20且小于等于40并且email不能为空 (name like ‘%雨%’ and age between 20 and 40 and email is not null)
1
2
3
4
5
6
7
public void selectByWrapper2(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "雨").between("age", 20, 40).isNotNull("email");
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}创建日期为2019/2/14并且直属上级名字为王姓 (date_formate(‘%Y-%M-%d’, date) and manager_id in (select manager_id from user where name like ‘王%’))
1
2
3
4
5
6
7
8
9
10
public void selectByWrapper4(){
Date date = new Date(2019, 2, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.
apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-02-05")
.inSql("manager_id", "select manager_id from user where name like '王%'");
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}按照直属上级分组,查询每组的平均年龄、最大年龄、最小年龄,并且只取年龄总和小于500的组 (select avg(age), max(age), min(age) from user group by manager_id having sum(age) < 500)
1
2
3
4
5
6
7
8
9
public void selectByWrapper12(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("avg(age), max(age), min(age)")
.groupBy("manager_id")
.having("sum(age) < {0}", 500);
List<Map<String, Object>> users = userMapper.selectMaps(queryWrapper);
users.forEach(System.out::println);
}lambda 条件查询器
1
2
3
4
5
6
7
public void selectByWrapper13(){
LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
lambdaQuery.like(User::getName, "雨").lt(User::getAge, 40);
List<Map<String, Object>> users = userMapper.selectMaps(lambdaQuery);
users.forEach(System.out::println);
}根据实体查询
1
2
3
4
5
6
7
8
9
public void selectByEntity(){
User user = new User();
user.setName("王天风");
user.setAge(25);
QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}