tkMapper的简介与使用

tkMapper 是 MyBatis 生态中的高效扩展工具,专注于简化数据库操作开发。它通过封装通用 CRUD 方法、支持逆向工程自动生成代码、兼容 Spring Boot 快速集成,显著提升开发效率。无论是单表增删改查的快速实现,还是复杂条件查询的动态构建,tkMapper 均以低侵入性融入现有项目,成为企业级应用开发中数据访问层的“加速引擎”。

一、tkMapper 是什么?

tkMapper 是基于 MyBatis 的高效开发插件,由 tk.mybatis 团队维护,主要功能包括:

  1. 通用CRUD操作:封装单表增删改查方法(如 selectByPrimaryKey、insertSelective 等),减少重复代码。
  2. 逆向工程支持:结合 MyBatis Generator 自动生成实体类、Mapper 接口及 XML 映射文件。
  3. Spring Boot 集成:通过 mapper-spring-boot-starter 依赖实现快速配置,支持条件查询、分页、动态SQL等。
  4. 扩展性:兼容 MyBatis 原生功能,可自定义 SQL 或扩展接口。

二、核心特性与优势

  1. 简化开发流程:
    ① 无需手动编写基础 CRUD 方法,通过继承 Mapper 和 MySqlMapper 接口即可获得通用方法。
    ② 示例:UserMapper extends Mapper 直接支持 selectByPrimaryKey(id) 等操作。
  2. 逆向工程:
    ① 配合 MyBatis Generator 插件,根据数据库表自动生成实体类、Mapper 接口及 XML 文件。
    ② 配置示例:在 generatorConfig.xml 中指定 tk.mybatis 的 MapperPlugin,生成代码自动集成 tkMapper 功能。
  3. 条件查询与动态SQL:
    ① 使用 Example 对象构建复杂查询条件(如 andEqualTo、andLike)。
    ② 支持自定义 SQL 语句(通过 @Select 注解或 XML 文件)。

三、安装与配置步骤

  1. 添加依赖(以 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>
  1. 配置数据源与 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
  1. 配置 Mapper 扫描(在启动类中添加)
@SpringBootApplication
// 扫描Mapper接口包
@MapperScan("com.example.mapper")
public class Application { ... }

四、基础使用示例

  1. 实体类注解
@Table(name = "users") // 映射表名
public class User {
    @Id // 主键
    private Integer userId;
    private String username;
    @Column(name = "user_mobile") // 显式映射字段
    private String mobile;
}
  1. Mapper 接口定义
public interface UserMapper extends Mapper<User> {
    // 自定义SQL示例(根据name查询)
    @Select("SELECT * FROM users WHERE username = #{name}")
    User findByUsername(@Param("name") String name);
}
  1. 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);
    }
}

五、逆向工程配置

  1. 添加 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>
  1. 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>

六、注意事项

  1. 字段映射:实体类字段需与数据库表字段遵循驼峰命名法,或使用 @Column 注解显式映射。
  2. 主键配置:主键字段必须标注 @Id,否则selectByPrimaryKey 等方法无法生效。
  3. 分页支持:需配合 PageHelper 等分页插件使用。
  4. 版本兼容:确保tkMapper 版本与 Spring Boot、MyBatis 版本兼容(如 Spring Boot 2.x 推荐使用tkMapper 2.1.5)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值