文章目录
一. 简介
tkMapper就是⼀个MyBatis插件,是在MyBatis的基础上提供了很多⼯具,让开发变得简单,提⾼开发效率。
- 提供了针对单表通用的数据库操作⽅法
- 逆向⼯程(根据数据表生成实体类、dao接⼝、映射⽂件)
二. 集成mybatis
因为tkmapper是基于mybatis的一个插件,因此首先要集成mybatis
2.1 引入依赖
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<!-- mybatis依赖-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!--jdbc依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
2.2 配置yml
spring:
datasource:
druid:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/fmmall?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: root
mybatis:
#mapper映射文件路径
mapper-locations: classpath:mappers/*Mapper.xml
#实体类扫描路径(用于mapper中的别名)
type-aliases-package: org.ljh.entity
2.3 加上接口注解扫描
@SpringBootApplication
@MapperScan("org.ljh.mapper")
public class WebApplication {
public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}
}
三. 集成tkmapper
3.1 引入依赖
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
引入依赖后需修改启动类上的@MapperScan
的包,将它替换为tkmapper的包
3.2 创建DAO接口
tkMapper已经完成了对单表的通⽤操作的封装,封装在Mapper接⼝和MySqlMapper接⼝;因此如果我们要完
成对单表的操作,只需⾃定义DAO接⼝继承Mapper接⼝和MySqlMapper接⼝
public interface UserDAO extends Mapper<User>, MySqlMapper<User> {
}
四. 逆向工程
4.1 引入依赖
此依赖是⼀个mybatis的maven插件
注意依赖版本号,否则在生成相关类时会报错
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.5</version>
<!--此处为逆向工程的相关配置文件-->
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.4</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
4.2 逆向工程配置文件
在resources/generator⽬录下创建generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 引入数据库连接配置 -->
<!-- <properties resource="jdbc.properties"/>-->
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- 配置 GeneralDAO -->
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="org.ljh.general.GeneralDao"/>
</plugin>
<!-- 配置数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/fmmall"
userId="root" password="root">
</jdbcConnection>
<!-- 配置实体类存放路径 -->
<javaModelGenerator targetPackage="org.ljh.entity" targetProject="src/main/java"/>
<!-- 配置 XML 存放路径 -->
<sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mappers"/>
<!-- 配置 DAO 存放路径 -->
<javaClientGenerator targetPackage="org.ljh.mapper" targetProject="src/main/java" type="XMLMAPPER"/>
<!-- 配置需要指定生成的数据库和表,% 代表所有表 -->
<table tableName="%"></table>
<!-- <table tableName="tb_roles"> -->
<!-- <!– mysql 配置 –>-->
<!-- <generatedKey column="roleid" sqlStatement="Mysql" identity="true"/>-->
<!-- </table>-->
<!-- <table tableName="tb_permissions">-->
<!-- <!– mysql 配置 –>-->
<!-- <generatedKey column="perid" sqlStatement="Mysql" identity="true"/>-->
<!-- </table>-->
</context>
</generatorConfiguration>
4.3 编写公共接口
/*
* @className: GeneralDao
* @description tkmapper的公共接口 供其它接口继承
* @since JDK1.8
* @author ljh
* @createdAt 2021/7/27
* @version 1.0.0
**/
public interface GeneralDao<T> extends Mapper<T>, MySqlMapper<T> {
}
4.4 执行插件
执行maven插件生成数据库表相对应的实体类及接口映射文件
执行后相应的文件就已全部生成
4.5 测试
因为所有的接口都继承自Mapper<T>, MySqlMapper<T>
,这2个接口中封装好了所有的单表操作,直接调用相关方法即可。如若有多表关联操作时,也可以在mapper映射文件中直接编写相关的sql脚本即可(规则同mybatis一致)。
@SpringBootTest
class WebApplicationTests {
@Autowired
UsersMapper usersMapper;
@Test
void contextLoads() {
List<Users> users = usersMapper.selectAll();
System.out.println(users);
}
}