一、創建並初始化數據庫
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