一、创建并初始化数据库
1、创建数据库:
mybatis_plus
2、创建 User
表
其表结构如下:
id | name | age | |
---|---|---|---|
1 | Jone | 18 | [email protected] |
2 | Jack | 20 | [email protected] |
3 | Tom | 28 | [email protected] |
4 | Sandy | 21 | [email protected] |
5 | Billie | 24 | [email protected] |
其对应的数据库 Schema 脚本如下:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
`age` int(11) NULL DEFAULT NULL COMMENT '年龄',
`email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
其对应的数据库 Data 脚本如下:
INSERT INTO `user` VALUES (1, 'Jone', 18, '[email protected]');
INSERT INTO `user` VALUES (2, 'Jack', 20, '[email protected]');
INSERT INTO `user` VALUES (3, 'Tom', 28, '[email protected]');
INSERT INTO `user` VALUES (4, 'Sandy', 21, '[email protected]');
INSERT INTO `user` VALUES (5, 'Billie', 24, '[email protected]');
二、初始化工程
使用 Spring Initializr 快速初始化一个 Spring Boot 工程
Group:cn.hanzhuang42
Artifact:mybatis-plus
-
2.2.6.RELEASE
- JDK 8
三、添加依赖
1、引入依赖
存在:spring-boot-starter、spring-boot-starter-test
添加:mybatis-plus-boot-starter、MySQL、lombok
在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写
<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.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
**注意:**引入 MyBatis-Plus
之后请不要再次引入 MyBatis
以及 MyBatis-Spring
,以避免因版本差异导致的问题。
2、idea中安装Lombok插件
setting->plugins->Marketpalce
搜索Lombok(注意是大写不然可能搜索不到)
四、配置
在 application.properties
配置文件中添加 MySQL 数据库的相关配置:
这里的 driver-class-name 使用了 com.mysql.cj.jdbc.Driver
,在 jdbc 8 中 建议使用这个驱动,之前的 com.mysql.jdbc.Driver
已经被废弃,否则运行测试用例的时候会有 WARN 信息
mysql8以上必须使用该驱动使用
url 使用了 ?serverTimezone=GMT%2B8 后缀,因为这个版本的 jdbc 驱动需要添加这个后缀,否则运行测试用例会报错。
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
五、编写代码
1、主类
在 Spring Boot 启动类中添加 @MapperScan
注解,扫描 Mapper 文件夹
@SpringBootApplication
@MapperScan("cn.hanzhuang42.mybatisplus.mapper")
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
2、实体
创建包 entity 编写实体类 User.java
(此处使用了 Lombok 简化代码)
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
查看编译结果
3、mapper
创建包 mapper 编写Mapper 接口,它继承了BaseMapper,其中有很多mapper方法,并以泛型的形式传入了User。这样MyBatis-Plus自动生成UserMapper的实现类,不用编写,甚至连sql语句都可以不用写
public interface UserMapper extends BaseMapper<User> {
}
六、开始使用
添加测试类,进行功能测试:
@SpringBootTest
class MybatisPlusApplicationTests {
@Autowired
UserMapper userMapper;
@Test
void findAll() {
List<User> userList = userMapper.selectList(null);
for (User user : userList) {
System.out.println(user);
}
}
}
**注意:**IDEA在 userMapper 处报错,因为找不到注入的对象,因为类是动态创建的,但是程序可以正确的执行。为了避免报错,可以在 dao 层 的接口上添加 @Repository 注
控制台输出:
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)
七、配置日志
查看sql输出日志
#mybatis日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
这样就可以在控制台看到sql语句等信息
JDBC Connection [HikariProxyConnection@635739314 wrapping com.mysql.cj.jdbc.ConnectionImpl@7f7af971] 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
<== Row: 1273618618428489730, Ada, 22, ada@qq.com
<== Total: 6
m
<== Row: 3, Tom, 28, test3@baomidou.com
<== Row: 4, Sandy, 21, test4@baomidou.com
<== Row: 5, Billie, 24, test5@baomidou.com
<== Row: 1273618618428489730, Ada, 22, ada@qq.com
<== Total: 6