MyBatisPlus
入门
1. 创建并初始化数据库 1.1 创建数据库
1.2 创建 User
表
其对应的数据库 Schema 脚本如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 DROP TABLE IF EXISTS user ;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) ); DELETE FROM user ;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' );
2. 初始化工程
使用 Spring Initializr
快速初始化一个 Spring Boot 工程
Group:cn.justweb
Artifact:mybatis-plus
版本:2.2.6.RELEASE
3. 添加依赖
在项目中使用Lombok
可以减少很多重复代码的书写。比如说getter/setter/toString
等方法的编写
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 <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 > <dependency > <groupId > com.baomidou</groupId > <artifactId > mybatis-plus-boot-starter</artifactId > <version > 3.0.5</version > </dependency > <dependency > <groupId > mysql</groupId > <artifactId > mysql-connector-java</artifactId > </dependency > <dependency > <groupId > org.projectlombok</groupId > <artifactId > lombok</artifactId > </dependency > <dependency > <groupId > junit</groupId > <artifactId > junit</artifactId > <scope > test</scope > </dependency > </dependencies >
注意: 引入 MyBatis-Plus
之后请不要再次引入 MyBatis
以及 MyBatis-Spring
,以避免因版本差异导致的问题。
4. 配置
在 application.properties
配置文件中添加 MySQL 数据库的相关配置
这里的 url
使用了 ?serverTimezone=GMT%2B8
后缀,因为Spring Boot 2.2 集成了 8.0版本的jdbc
驱动,这个版本的 jdbc
驱动需要添加这个后缀,否则运行测试用例报告如下错误:java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver
,在 jdbc8
中 建议使用这个驱动,之前的 com.mysql.jdbc.Driver
已经被废弃,否则运行测试用例的时候会有 WARN 信息.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 spring.datasource.driver-class-name =com.mysql.jdbc.Driver spring.datasource.url =jdbc:mysql://cdb-o6r75r3g.bj.tencentcdb.com:10015/mybatisplus spring.datasource.username =root spring.datasource.password =zqw9797332 spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver spring.datasource.url =jdbc:mysql://cdb-o6r75r3g.bj.tencentcdb.com:10015/mybatisplus?serverTimezone=GMT%2B8 spring.datasource.username =root spring.datasource.password =zqw9797332
5. 编写代码 启动类
在 Spring Boot 启动类中添加 @MapperScan
注解,扫描 Mapper 文件夹
注意: 扫描的包名根据实际情况修改
1 2 3 4 5 6 7 8 9 @MapperScan("cn.justweb.mybatisplus.mapper") @SpringBootApplication public class MybatisPlusApplication { public static void main (String[] args) { SpringApplication.run(MybatisPlusApplication.class, args); } }
实体
创建包 pojo
编写实体类 User.java
(此处使用了 Lombok 简化代码)
1 2 3 4 5 6 7 8 9 10 11 12 @Data public class User { private Long id; private String name; private Integer age; private String email; }
查看编译结果
Lombok
使用参考:https://blog.csdn.net/motui/article/details/79012846
mapper
创建包 mapper 编写Mapper 接口: UserMapper.java
1 2 3 4 5 6 7 8 @Repository public interface UserMapper extends BaseMapper <User> {}
6. 开始使用
添加测试类,进行功能测试
因为SpringRunner.class继承了SpringJUnit4ClassRunner.class且没有进行任何修改
所以@RunWith(SpringRunner.class)基本等同于@RunWith(SpringJUnit4ClassRunner.class)
注解的作用:让测试在Spring容器环境下执行。如测试类中无此注解,将导致service,dao
等自动注入失败。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @RunWith(SpringRunner.class) @SpringBootTest public class MybatisPlusApplicationTests { @Autowired private UserMapper userMapper; @Test public void testSelectList () { List<User> users = userMapper.selectList(null ); users.forEach(System.out::println); } }
IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。
为了避免报错,可以在 dao
层 的接口上添加 @Repository 注解
通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!
1 2 3 4 5 6 #控制台输出: User(id=1 , name=Jone, age=18 , email=test1@baomidou.com) User(id=2 , name=Jack, age=20 , email=test2@baomidou.com) User(id=3 , name=Tom, age=28 , email=test3@baomidou.com) User(id=4 , name=Sandy, age=21 , email=test4@baomidou.com) User(id=5 , name=Billie, age=24 , email=test5@baomidou.com)
7. 配置日志 1 2 3 mybatis-plus.configuration.log-impl =org.apache.ibatis.logging.stdout.StdOutImpl