0%

Springboot整合MybatisPlus

​ 对于MybatisPlus,最好的解释就来自于官网:Mybatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,清晰明了,就是为了方便来的,说通俗点,就是懒,一切技术的发展都是为了更简单高效,为了减少常见的增删改查代码的代码量,MP帮我们在底层封装了大量的基础sql语句,它能够根据我们的数据库表,提供我们需要的常见方法接口,这里写了一个demo进行学习。

1.新建一个Springboot项目,导入依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 引入mybatis-plus的依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<!-- 引入数据源连接池德鲁伊Druid-->
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.20</version>
</dependency>

</dependencies>

2.设计一个简单的数据库user表

user1

3.编写yml配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
spring:
datasource:
username: root
password: root
url: jdbc:mysql://localhost:3306/mybatis-plus?characterEncoding=UTF-8&serverTimezone=UTC
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver

logging:
level:
root: info
cn:
zl: debug

4.编写pojo实体类,实体类中可以写许多的属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import lombok.experimental.Accessors;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Accessors(chain = true)
@TableName("user")//默认是将类名作为表名的,但是也可以设置为数据库中的表名,会于该类名相对应
public class User {
@TableId(value = "id",type = IdType.AUTO)//指定数据表的主键,如果不设置默认就是id
private Integer id;
@TableField(value = "name")
private String name;
private Integer age;
private Date bir;
@TableField(exist = false)//代表不映射数据库
private String aaa;
}

5.编写mapper接口,只需要继承BaseMapper即可

1
2
3
4
5
6
import cn.zl.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

//使用mybatis-plus增强
public interface UserMapper extends BaseMapper<User> {
}

6.编写测试方法,Mybatis-Plus拥有大量的条件构造器,这里只是测试了一部分,更多详情请查看Mybatis-Plus官网

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import cn.zl.pojo.User;
import cn.zl.mapper.UserMapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.List;

@SpringBootTest
class MybatisPlusApplicationTests {
@Autowired
private UserMapper userMapper;

//查询所有
@Test
void testFindAll() {
List<User> users = userMapper.selectList(null);
users.forEach(user -> System.out.println("user= "+user));
for (User user : users) {
System.out.println(user);
}
}

//根据主键查询一个
@Test
public void testFindById(){
//queryWrapper其中放入条件查询,默认为查询全部
User user=userMapper.selectById(1);
System.out.println("user= "+user);
}

//条件查询
@Test
public void testFind(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//queryWrapper.eq("age","19");//设置等值查询
queryWrapper.lt("age",19);//设置小于查询
//queryWrapper.le("age",19);//设置小于等于查询,gt是大于,ge是大于等于
List<User> users=userMapper.selectList(queryWrapper);
users.forEach(user -> System.out.println(user));
}

//模糊查询
@Test
public void testFindLike(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
//queryWrapper.like("name","o");
queryWrapper.likeLeft("name","d");//以XXX结尾,likeRight以XXX开头
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(user -> System.out.println("user= "+user));
}

//保存方法
@Test
public void testSave(){
User entity=new User();
entity.setName("Who").setAge(20).setBir(new Date());
userMapper.insert(entity);
}
//修改方法
//基于主键id进行数据的修改
//@Test
// public void testUpdateById(){
// User user = userMapper.selectById(5);
// user.setName("Love");
// userMapper.updateById(user);
// }

//批量修改。
// @Test
// public void testUpdate(){
// User user = userMapper.selectById(5);
// user.setName("Maybe");
// user.setBir(null).setAge(null);
// QueryWrapper<User> updateWrapper=new QueryWrapper<>();
// updateWrapper.eq("age",19);
// userMapper.update(user,updateWrapper);
// }

//基于id删除一个
@Test
public void testDeleteById(){
userMapper.deleteById(5);
}

//基于条件删除
@Test
public void testDelete(){
QueryWrapper<User> queryWrapper=new QueryWrapper<>();
queryWrapper.gt("age",18);
userMapper.delete(queryWrapper);
}
}

总结:

越使用越感觉到Mybatis-Plus功能的强大,代码生成器、分页插件、Sequence主键等等,很多功能我都还未使用到,它还支持很多的插件扩展,更多详情请查看Mybatis-Plus官网

----------本文结束感谢您的阅读----------