说明:基于 MyBatis 有很多第三方功能插件,这些插件可以完成数据操作方法的封装、数据库逆向工程的生成等 。
tkMapper
和 MyBatis-plus
都是基于 MyBatis 提供的第三方插件,功能类似,下面介绍 tkMapper 的使用 。
简介tkMapper 就是一个 MyBatis 插件,基于 MyBatis 提供很多工具,提高开发效率 , 主要有以下两个功能 。
- 提供针对单表通用的数据库操作方法
- 逆向工程(根据数据表自动生成实体类、Dao 接口、Mapper 映射文件)
MyBatis 基础环境
tkMapper 的使用需要基于 MyBatis 。
- 创建 Spring Boot 项目,选中 Lombok、Spring Web、MyBatis Framework、MySQL Driver 依赖
- 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 文件夹
- 创建 dao 文件夹,在启动类上添加 dao 的包扫描器
@MapperScan(basePackages = {"com.luis.dao"})
tkMapper 环境搭建
- 添加依赖
<!-- tkMapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.1.5</version></dependency>
如果自己在 maven 仓库中搜索,注意搜索关键词:mapper starter
![Spring Boot 中使用 tkMapper](http://img.zhejianglong.com/231019/1912393215-0.png)
文章插图
PS:添加后,注意手动刷新 pom
- 更换启动类上 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
- 以上,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 中提供的
Mapper
和
MySqlMapper
两个接口 , 这两个接口提供了对单表的通用操作 。
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> {}
推荐阅读
-
潼南区小学招生政策 2023重庆潼南区小学报名网站
-
请问1975年出生属兔人到底是水命还是木命,五行属到底是属水还是木呢?
-
-
新生儿奶粉排行榜前十位,新生儿奶粉排行榜前十位国内
-
-
-
-
-
-
2021年最旺财的微信头像,本人属水,缺木,火旺,做学科补习行业。 微
-
-
-
-
-
甜瓜几月份种植,什么时候成熟上市 甜瓜什么季节上市
-
超市里的龙利鱼为什么那么便宜 龙利鱼为什么那么便宜
-
-
-
-