springBoot整合tkMybatis
一.实现步骤
1: 引入依赖
2: 实体类配置注解(@Id @Table)
3: Mapper继承tk的接口
4:启动类定义扫描Mapper接口的路径(@MapperScan)
5:配置文件定义扫描mapper.xml文件的路径(yml 或者 properties文件)
6:调用tk提供的接口和数据库交互
1.pom依赖(版本可自行调整)
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.3</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
2.实体类添加注解
@Table(name = "user")
public class User {
@Id (注意,一定要写,不写使用tk的主键相关功能会失效)
private Integer id;
......other properties
}
3.Mapper继承tk接口
public interface UserMapper extends Mapper<User>, MySqlMapper<User> {
}
4.启动类定义扫描Mapper接口的路径(@MapperScan)
@SpringBootApplication
@MapperScan("com.vivo.study.discipline.mapper")
public class DisciplineApplication {
public static void main(String[] args) {
SpringApplication.run(DisciplineApplication.class, args);
}
}
5.配置文件定义扫描mapper.xml文件的路径(yml文件)
spring:
datasource:
url: jdbc:mysql://localhost:3306/xxxxx?zeroDateTimeBehavior=convertToNull&useSSL=false
username: xxxxx
password: xxxxx
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
mapper-locations: classpath*:mybatis/mapping/*.xml
type-aliases-package: com.xxxx.study.discipline.entity
6. 调用tk提供的接口和数据库交互
在对应的Service层@Autowired注入你的Mapper接口对象,即可调用tk对应的方法,和数据库做交互。
7.注意事项
7.1 :tk提供的sql不能满足需求时,可以在配置的对应的xml路径内创建sql.xml文件,自己编写sql,声明方法。但是需要的是在tk已有的查询接口,mapper中不能重复,否则启动会异常。
7.2:实体类中的@ID 和 @Table属性一定要加上,以@Id注解为例,不加则在使用tk提供的相关主键方法会使用使得方法失效,如 selectByPrimaryKey(),deleteByPrimaryKey(),updateByPrimaryKey()等。因为不加注解tk无法判断表中那一列是你的主键,所以无法提供你预期操作。
7.3:xml的nameSpace及实体类的映射注意不要配置错误
8.踩坑点
在创建mybatis.mapping文件时,直接使用数字键盘的 . 的符号创建。导致路径不对,扫描不到xml文件。经过尝试发现,在IDEA中 newPackage 创建文件夹时,直接输入 mybatis.mapping 和 先创建mybatis文件夹,再创建mapping文件夹之后在项目结构中展示的情况是一样。如下图:
但实际情况是:
前者mybatis.mapping 路径是: 上一级/mybatis.mapping/下一级
后者分开创建mybatis mapping 路径是:上一级/mybatis/mapping/下一级
END~