Spring Boot 中使用 tkMapper

說明:基于 MyBatis 有很多第三方功能插件,這些插件可以完成數據操作方法的封裝、數據庫逆向工程的生成等 。
tkMapperMyBatis-plus 都是基于 MyBatis 提供的第三方插件,功能類似,下面介紹 tkMapper 的使用 。
簡介tkMapper 就是一個 MyBatis 插件,基于 MyBatis 提供很多工具,提高開發效率 , 主要有以下兩個功能 。
  • 提供針對單表通用的數據庫操作方法
  • 逆向工程(根據數據表自動生成實體類、Dao 接口、Mapper 映射文件)
MyBatis 基礎環境
tkMapper 的使用需要基于 MyBatis 。
  1. 創建 Spring Boot 項目,選中 Lombok、Spring Web、MyBatis Framework、MySQL Driver 依賴
  2. application.yml 配置文件中配置相關信息
    spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/springdb?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8username: rootpassword: luismybatis:type-aliases-package: com.luis.beansmapper-locations: classpath:mappers/*Mapper.xml注意:配置后 , 手動創建 beans 和 mappers 文件夾
  3. 創建 dao 文件夾,在啟動類上添加 dao 的包掃描器 @MapperScan(basePackages = {"com.luis.dao"})
tkMapper 環境搭建
  1. 添加依賴
    <!-- tkMapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency>如果自己在 maven 倉庫中搜索,注意搜索關鍵詞:mapper starter
    Spring Boot 中使用 tkMapper

    文章插圖
    PS:添加后,注意手動刷新 pom
  2. 更換啟動類上 dao 包的包掃描器來源,不使用原先的 @MapperScan,要使用新添加的 tkMapper 的 @MapperScan
    import tk.mybatis.spring.annotation.MapperScan;@SpringBootApplication@MapperScan(basePackages = {"com.luis.dao"}) //使用tkMapper的包掃描器注解public class SpringbootTkMapperDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootTkMapperDemoApplication.class, args);}}PS:注意注解的包來源 import tk.mybatis.spring.annotation.MapperScan
  3. 以上,tkMapper 環境已經搭建完成
tkMapper 對數據的通用操作
tkMapper 提供針對單表通用的數據庫操作方法 。
數據準備1. 創建數據庫表DROP TABLE IF EXISTS `users`;CREATE TABLE `users`(`user_id` int(11) NOT NULL AUTO_INCREMENT,`user_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`user_pwd` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`user_realname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`user_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`user_id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;2. 創建實體類@Data@NoArgsConstructor@AllArgsConstructor@Table(name = "users") //數據庫表名和實體類類名不一致需要指定映射關系!public class User {@Id //指定主鍵private Integer userId;private String userName;private String userPwd;private String userRealname;private String userImg;}3. 創建 Dao 接口【重點】注意:創建的 Dao 接口需要繼承 tkMapper 中提供的 MapperMySqlMapper 兩個接口 , 這兩個接口提供了對單表的通用操作 。
public interface UserDao extends Mapper<User>, MySqlMapper<User> {}
可選優化策略【建議使用】:
如果不想每次創建 dao 接口時都繼承 tkMapper中的兩個接口,可以自己寫一個通用的接口模板,只需要讓這個通用的接口模板繼承 tkMapper中的兩個接口,然后自己創建的 dao 接口只需要繼承這個通用的接口模板即可!
但是,需要注意的是,這個通用的接口模板千萬不能寫在 dao 目錄下!因為 dao 目錄下的接口會被掃描到 , 有固定的功能用處;而我們自定義的通用接口模板只是為了繼承,沒有其他特殊功能!
使用示例:
1、可在 dao 目錄同級創建 general 目錄 , 在 general 目錄下創建 GeneralDao 接口,并繼承 tkMapper中的兩個接口 。
package com.luis.general;import tk.mybatis.mapper.common.Mapper;import tk.mybatis.mapper.common.MySqlMapper;/** * @Author: Luis * @date: 2022/11/9 14:39 * @description: 自定義的通用接口模板 */public interface GeneralDao<T> extends Mapper<T>, MySqlMapper<T> {}

推薦閱讀