初步使用
# 介绍
- mybatis增强工具,只做增强不做改变
- 提高开发效率
- 通过简单配置实现CRUD操作
- 有热加载,代码生成,分页,性能分析等功能
- 官网 https://mp.baomidou.com/
# 准备工作
- 需要搭建mysql服务
- 当前使用的 idea 版本2021.1.2
# 创建数据库
- 数据库名称:demo_mybatis_plus
CREATE DATABASE demo_mybatis_plus;
1
# 创建表
CREATE TABLE USER
(
id BIGINT(20) NOT NULL COMMENT '主键ID',
NAME VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年龄',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (id)
);
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 导入数据
INSERT INTO user (id, name, age, email)
VALUES (1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
1
2
3
4
5
6
2
3
4
5
6
# 修改Java编译器
# 修改项目编码配置
- 点击File > Settings 进入
# 创建项目
- 点击File > New > Project
# 修改maven 配置
- 点击File > Settings 更改maven仓库配置为指定目录
# 修改pom文件
- 本项目使用spring-boot版本是
2.2.1.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
1
2
3
4
5
6
2
3
4
5
6
# 添加Mybatis Plus等依赖
- 注意:引入 MyBatis-Plus 之后不要再次引入 MyBatis,避免因版本差异导致的问题
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</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.1</version>
</dependency>
<!--mysql依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok用来简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
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
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
# 安装Lombok插件
# 简单使用
# 配置数据库
- 修改
application.properties
中的数据库相关配置 - spring2.0版本,内置jdbc.0驱动
#mysql数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo_mybatis_plus?characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
1
2
3
4
5
2
3
4
5
- spring2.1以上版本,内置jdbc8.0驱动
- 当前项目使用此配置
- driver-class使用的是
com.mysql.cj.jdbc.Driver
,否则运行测试用例时有 WARN 信息 - url添加时区,否则会有异常 java.sql.SQLException: The server time zone value xx is unrecognized or represents more
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/demo_mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
1
2
3
4
2
3
4
# 启动类添加@MapperScan注解
- 创建mapper包,然后添加
@MapperScan
注解进行扫描
package com.stt.demo.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.stt.demo.mybatisplus.mapper")
public class DemoMybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(DemoMybatisPlusApplication.class, args);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 添加实体
- 创建Entity包,并添加User实体,使用@Data注解,省略getter setter方法
- 注意User实体和user表字段要一致
package com.stt.demo.mybatisplus.entity;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
- 查看编译结果可以看到生成的getxxx setxxx方法
# 添加Mapper
- 注意 IDEA在 userMapper 处报错,由于类是动态创建的,找不到注入的对象,但程序可以正确的执行,为了避免报错,在 dao 层接口上添加 @Repository注解
package com.stt.demo.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.stt.demo.mybatisplus.entity.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- BaseMapper实现了很多通用的CRUD方法,注意观察
# 编写测试类
package com.stt.demo.mybatisplus;
import com.stt.demo.mybatisplus.entity.User;
import com.stt.demo.mybatisplus.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class DemoMybatisPlusApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testFindAll(){
List<User> users = userMapper.selectList(null);
System.out.println(users);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 注意查看控制台输出
# 查看sql输出日志
- 想要查看sql的详细执行情况,需要开启配置
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
1
- 如刚才执行的结果有如下细节
JDBC Connection [HikariProxyConnection@1714539364 wrapping com.mysql.cj.jdbc.ConnectionImpl@19962194] will not be managed by Spring
==> Preparing: SELECT id,name,age,email FROM user
==> Parameters:
<== Columns: id, name, age, email
<== Row: 1, Jone, 18, test1@baomidou.com
<== Row: 2, Jack, 20, test2@baomidou.com
<== Row: 3, Tom, 28, test3@baomidou.com
<== Row: 4, Sandy, 21, test4@baomidou.com
<== Row: 5, Billie, 24, test5@baomidou.com
<== Total: 5
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Last Updated: 2022/01/16, 11:29:51