SpringBoot集成Mybatis-plus

本节主要介绍如何在新项目中集成Mybatis-plus;从而完成对一个数据库表的增删查改操作。

创建一个Springboot工程

— 此处略过

引入对应的依赖包

完整的pom.xml文件如下

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
xml复制代码<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.hank</groupId>
<artifactId>mybatisdemo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mybatisdemo</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<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>
<!-- mybatis -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->
<!-- <version>1.1.20</version>-->
<!-- </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>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

以上内容,与Mybatis-plus相关主要为以下部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
xml复制代码 <!-- mybatis -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba</groupId>-->
<!-- <artifactId>druid</artifactId>-->
<!-- <version>1.1.20</version>-->
<!-- </dependency>-->

Mybatis-plus是基于Mybatis的一个增强插件,默认具备Mybatis的所有特性外加分页功能;

最后我们可以在项目结构中最终映入的Jar包资源,其中与Mybatis-plus相关的资源如下

(在IDEA工具中,通过File–>Project Structure…–>Modules–>选中自己的项目–>Dependencies)

从以上我们可以看到,虽然我们只在pom.xml中引入了mybatis-plus-boot-starter,版本为3.3.1,但是最终实际引入了其他的相关资源包。

\

编码部分

添加启动扫描注解

在项目启动类添加启动注解扫描;如果不在启动类配置,也可以在每个mapper上加上@Mapper注解

1
2
3
4
5
6
7
java复制代码@SpringBootApplication
@MapperScan("com.hank.mybatisdemo.dao")
public class MybatisdemoApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisdemoApplication.class, args);
}
}

编写实体类和Mapper类

此处以T_Temp为例;注意,这里接口类需要继承BaseMapper类,泛型为User实体对象

1
2
3
4
5
6
7
java复制代码package com.hank.mybatisdemo.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hank.mybatisdemo.entity.User;

public interface UserMapper extends BaseMapper<User> {
}

User实体对象如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
java复制代码package com.hank.mybatisdemo.entity;

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.Data;

@Data
@TableName(value = "T_Temp")
public class User {

@TableId(value = "id",type= IdType.AUTO)
Integer id;
@TableField(value = "user_name")
String userName;
Integer age;
String sex;
String remark;
}

对应表的结构如下

1
2
3
4
5
6
7
8
9
10
11
12
java复制代码/*Table structure for table `t_temp` */

DROP TABLE IF EXISTS `t_temp`;

CREATE TABLE `t_temp` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(30) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` varchar(2) DEFAULT NULL,
`remark` varchar(225) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4;

配置文件

1
2
3
4
5
6
7
8
properties复制代码spring:
datasource:
# type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/btest?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.mysql.cj.jdbc.MysqlDataSource

\

编写测试用例验证

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
java复制代码@RunWith(SpringRunner.class)
@SpringBootTest
public class UserTest {
@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection")
@Autowired
UserMapper userMapper;

@Test
public void testUser(){
List<User> userList=userMapper.selectList(null);
userList.forEach(System.out::println);
}

@Test
public void testUser2(){
for (int i = 0; i <10 ; i++) {
User u=new User();
u.setUserName("张三"+i);
Random random = new Random();
u.setAge(random.nextInt());
u.setSex(i%2>1?"男":"女");
int row=userMapper.insert(u);
Assert.assertEquals(1, row);
}
}
}

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%