tkMapper 是 MyBatis 生态中的高效扩展工具,专注于简化数据库操作开发。它通过封装通用 CRUD 方法、支持逆向工程自动生成代码、兼容 Spring Boot 快速集成,显著提升开发效率。无论是单表增删改查的快速实现,还是复杂条件查询的动态构建,tkMapper 均以低侵入性融入现有项目,成为企业级应用开发中数据访问层的“加速引擎”。
一、tkMapper 是什么?
tkMapper 是基于 MyBatis 的高效开发插件,由 tk.mybatis 团队维护,主要功能包括:
- 通用CRUD操作:封装单表增删改查方法(如 selectByPrimaryKey、insertSelective 等),减少重复代码。
- 逆向工程支持:结合 MyBatis Generator 自动生成实体类、Mapper 接口及 XML 映射文件。
- Spring Boot 集成:通过 mapper-spring-boot-starter 依赖实现快速配置,支持条件查询、分页、动态SQL等。
- 扩展性:兼容 MyBatis 原生功能,可自定义 SQL 或扩展接口。
二、核心特性与优势
- 简化开发流程:
① 无需手动编写基础 CRUD 方法,通过继承 Mapper 和 MySqlMapper 接口即可获得通用方法。
② 示例:UserMapper extends Mapper 直接支持 selectByPrimaryKey(id) 等操作。 - 逆向工程:
① 配合 MyBatis Generator 插件,根据数据库表自动生成实体类、Mapper 接口及 XML 文件。
② 配置示例:在 generatorConfig.xml 中指定 tk.mybatis 的 MapperPlugin,生成代码自动集成 tkMapper 功能。 - 条件查询与动态SQL:
① 使用 Example 对象构建复杂查询条件(如 andEqualTo、andLike)。
② 支持自定义 SQL 语句(通过 @Select 注解或 XML 文件)。
三、安装与配置步骤
- 添加依赖(以 Spring Boot 为例)
<!-- pom.xml -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
- 配置数据源与 MyBatis(application.yml)
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
type-aliases-package: com.example.entity
mapper-locations: classpath:mapper/*.xml
- 配置 Mapper 扫描(在启动类中添加)
@SpringBootApplication
// 扫描Mapper接口包
@MapperScan("com.example.mapper")
public class Application { ... }
四、基础使用示例
- 实体类注解
@Table(name = "users") // 映射表名
public class User {
@Id // 主键
private Integer userId;
private String username;
@Column(name = "user_mobile") // 显式映射字段
private String mobile;
}
- Mapper 接口定义
public interface UserMapper extends Mapper<User> {
// 自定义SQL示例(根据name查询)
@Select("SELECT * FROM users WHERE username = #{name}")
User findByUsername(@Param("name") String name);
}
- Service 层调用
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
/**
* 根据uasename查询(调用自定义SQL)
*/
public User findByUsername(String name) {
return this.userMapper.findByUsername(name);
}
/**
* 分页查询
*/
public PageInfo<User> queryByPage(String key, Integer page, Integer rows) {
//根据name模糊查询
Example example = new Example(User.class);
Example.Criteria c = example.createCriteria();
if (StringUtils.isNotBlank(key)) {//根据条件查询
c.orLike("username", "%" + key + "%");
}
//分页
PageHelper.startPage(page, rows);
List<User> items = this.userMapper.selectByExample(example);
return new PageInfo(items);
}
/**
* 根据id查询
*/
public User queryById(String id) {
return this.userMapper.selectByPrimaryKey(id);
}
/**
* 新增/编辑
*/
public int save(User record) {
int i = 0;
if (StringUtils.isNotBlank(record.getId())) {
record.setUpdateTime(new Date());
i = this.userMapper.updateByPrimaryKeySelective(record);
} else {
record.setId(SysUtil.getUuid());
record.setCreateTime(new Date());
i = this.userMapper.insertSelective(record);
}
return i;
}
/**
* 根据ID删除
*/
public int delete(String id) {
return this.userMapper.deleteByPrimaryKey(id);
}
}
五、逆向工程配置
- 添加 MyBatis Generator 插件
<build>
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.0</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
- generatorConfig.xml 示例
<generatorConfiguration>
<context id="mysql" targetRuntime="MyBatis3Simple">
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>
<jdbcConnection .../> <!-- 数据库连接配置 -->
<javaModelGenerator targetPackage="com.example.entity" .../>
<javaClientGenerator targetPackage="com.example.mapper" .../>
<table tableName="users" domainObjectName="User"/>
</context>
</generatorConfiguration>
六、注意事项
- 字段映射:实体类字段需与数据库表字段遵循驼峰命名法,或使用 @Column 注解显式映射。
- 主键配置:主键字段必须标注 @Id,否则selectByPrimaryKey 等方法无法生效。
- 分页支持:需配合 PageHelper 等分页插件使用。
- 版本兼容:确保tkMapper 版本与 Spring Boot、MyBatis 版本兼容(如 Spring Boot 2.x 推荐使用tkMapper 2.1.5)。
437

被折叠的 条评论
为什么被折叠?



