1.为什么要使用同用mapper,当你的实体类需要添加字段的时候,你对应的mapperxml文件也需要跟着修改。而通用mapper的使用不需要你书写sql语句。Mapper中已经封装好了关于增删改查的sql操作。
添加依赖:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
实体类需要添加表名,不然会默认首字母小写的表名
@Data
@Table(name="people")
public class People {
private String name;
private Integer age;
}
此时的mapper层只需要继承mapper即可
package com.shuai.tkmapper;
import com.shuai.entity.People;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
@Service
public interface TkMapper extends Mapper<People>,MySqlMapper<People>{
}
通过看源码发现查找的方法有:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package tk.mybatis.mapper.common.base;
@RegisterMapper
public interface BaseSelectMapper<T> extends SelectOneMapper<T>, SelectMapper<T>, SelectAllMapper<T>, SelectCountMapper<T>, SelectByPrimaryKeyMapper<T>, ExistsWithPrimaryKeyMapper<T> {
}
配置文件:
#tkmapper配置
mapper.mappers=com.shuai.tkmapper.TkMapper
mapper.identity=MYSQL
启动类:
@SpringBootApplication
@MapperScan(basePackages = "com.shuai.tkmapper")
public class TkmapperrApplication {
public static void main(String[] args) {
SpringApplication.run(TkmapperrApplication.class, args);
}
}
这里要注意,启动类的Mapperscan需要是tk包下面的。否则会报buildermapper错。或者在接口上添加mapper注解。
网友评论