3分钟上手!Mybatis Mapper代码生成器:告别90%重复CRUD工作

3分钟上手!Mybatis Mapper代码生成器:告别90%重复CRUD工作

【免费下载链接】Mapper Mybatis Common Mapper - Easy to use 【免费下载链接】Mapper 项目地址: https://gitcode.com/gh_mirrors/ma/Mapper

你还在手写MyBatis的CRUD接口吗?面对十几张业务表,重复编写insert()/update()/selectByPrimaryKey()这些模板代码?现在,只需3分钟配置,Mybatis Common Mapper代码生成器就能帮你一键生成完整的实体类、Mapper接口和XML文件,让你专注真正有价值的业务逻辑开发。本文将带你从环境搭建到高级定制,彻底掌握这款提效工具。

为什么选择这款代码生成器?

传统MyBatis开发中,每个数据表都需要手动创建:

  • 带注解的实体类(Entity)
  • 包含CRUD方法的Mapper接口
  • 映射SQL语句的XML文件

以一个用户表为例,仅实体类就需要编写20+行注解代码,Mapper接口需继承通用接口并添加自定义方法。当数据表超过10张时,这种重复劳动会消耗大量开发时间。

Mybatis Common Mapper代码生成器通过以下特性解决这些痛点:

  • 零侵入集成:基于MyBatis Generator扩展,保留原生MBG功能
  • 模板化设计:使用Freemarker模板自定义生成代码结构
  • 高度可配置:支持Lombok注解、自定义命名规则、数据库方言适配
  • 完整生态支持:无缝对接通用Mapper接口(base/src/main/java/tk/mybatis/mapper/common/Mapper.java)

快速开始:3步生成完整代码

1. 添加依赖配置

在Maven项目的pom.xml中添加生成器依赖:

<dependency>
  <groupId>tk.mybatis</groupId>
  <artifactId>mapper-generator</artifactId>
  <version>最新版本</version>
</dependency>
<!-- Freemarker模板引擎 -->
<dependency>
  <groupId>org.freemarker</groupId>
  <artifactId>freemarker</artifactId>
  <version>2.3.31</version>
</dependency>

依赖配置文件位置:all/dependencies/pom.xml

2. 编写生成器配置文件

创建generatorConfig.xml配置文件,定义数据源、生成规则和模板路径:

<generatorConfiguration>
  <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
    <!-- 通用Mapper插件 -->
    <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
      <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
      <property name="lombok" value="Data,Accessors"/> <!-- 启用Lombok注解 -->
      <property name="beginningDelimiter" value="`"/>
      <property name="endingDelimiter" value="`"/>
    </plugin>
    
    <!-- 自定义Mapper接口生成插件 -->
    <plugin type="tk.mybatis.mapper.generator.TemplateFilePlugin">
      <property name="targetProject" value="src/main/java"/>
      <property name="targetPackage" value="com.example.mapper"/>
      <property name="templatePath" value="generator/mapper.ftl"/>
      <property name="fileName" value="${tableClass.shortClassName}Mapper.java"/>
    </plugin>

    <!-- 数据库连接配置 -->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                    connectionURL="jdbc:mysql://localhost:3306/test"
                    userId="root" password="123456"/>

    <!-- 实体类生成配置 -->
    <javaModelGenerator targetPackage="com.example.entity" targetProject="src/main/java"/>
    
    <!-- 数据表映射 -->
    <table tableName="user" domainObjectName="User"/>
    <table tableName="order" domainObjectName="Order"/>
  </context>
</generatorConfiguration>

完整配置示例:generator/src/test/resources/generatorConfig.xml

3. 运行生成器

通过Java代码或Maven插件执行生成器:

public class GeneratorRunner {
  public static void main(String[] args) throws Exception {
    List<String> warnings = new ArrayList<>();
    ConfigurationParser cp = new ConfigurationParser(warnings);
    Configuration config = cp.parseConfiguration(
      GeneratorRunner.class.getResourceAsStream("/generatorConfig.xml")
    );
    DefaultShellCallback callback = new DefaultShellCallback(true);
    MyBatisGenerator generator = new MyBatisGenerator(config, callback, warnings);
    generator.generate(null);
  }
}

Java执行入口类:generator/src/test/java/tk/mybatis/mapper/generator/Generator.java

核心功能详解

模板化代码生成

生成器采用Freemarker模板引擎,支持自定义代码结构。项目内置两种常用模板:

模板文件结构示例(mapper.ftl):

package ${package};

import ${tableClass.fullClassName};
import tk.mybatis.mapper.common.Mapper;

/**
 * ${tableClass.remarks!''}
 * @author generator
 */
public interface ${tableClass.shortClassName}Mapper extends Mapper<${tableClass.shortClassName}> {
}

Lombok注解支持

通过配置启用Lombok注解,大幅精简实体类代码:

<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
  <property name="lombok" value="Data,Accessors,ToString"/>
</plugin>

生成的实体类效果:

@Data
@Accessors(chain = true)
@Table(name = "user")
public class User {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;
  private String username;
  private String password;
}

高级配置指南

自定义命名规则

通过targetPackagefileName属性实现灵活的文件路径和命名:

<plugin type="tk.mybatis.mapper.generator.TemplateFilePlugin">
  <!-- 按模块划分目录 -->
  <property name="targetPackage" value="com.example.${tableClass.lowerCaseName}/mapper"/>
  <!-- 自定义文件名后缀 -->
  <property name="fileName" value="${tableClass.shortClassName}Repository.java"/>
</plugin>
多数据库支持

针对不同数据库方言,可配置专用生成规则:

<!-- MySQL配置 -->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>

<!-- Oracle配置 -->
<property name="beginningDelimiter" value=""/>
<property name="endingDelimiter" value=""/>
<property name="useOracleMappers" value="true"/>

数据库方言适配模块:base/src/main/java/tk/mybatis/mapper/common/MySqlMapper.java

实际应用案例

以用户表(user)为例,生成完整代码结构如下:

src/main/java/
└── com/example/
    ├── entity/
    │   └── User.java        // 带注解的实体类
    └── mapper/
        ├── UserMapper.java  // Mapper接口
        └── UserMapper.xml   // XML映射文件

生成的UserMapper接口自动继承通用Mapper,获得17个预置CRUD方法:

  • int insert(User record);
  • User selectByPrimaryKey(Long id);
  • int updateByPrimaryKey(User record);
  • int deleteByPrimaryKey(Long id);
  • 以及条件查询、批量操作等高级方法

通用Mapper接口定义:base/src/main/java/tk/mybatis/mapper/common/Mapper.java

常见问题解决

中文乱码问题

在generatorConfig.xml中添加编码配置:

<context>
  <property name="javaFileEncoding" value="UTF-8"/>
</context>

生成文件覆盖策略

通过overwrite参数控制文件覆盖行为:

// Java代码方式
DefaultShellCallback callback = new DefaultShellCallback(true); // true表示覆盖

// Maven插件方式
<configuration>
  <overwrite>true</overwrite>
</configuration>

自定义类型转换器

实现TypeHandler接口并配置:

<javaTypeResolver>
  <typeHandler handler="com.example.handler.StatusTypeHandler" 
               javaType="com.example.enums.StatusEnum"/>
</javaTypeResolver>

类型转换器示例:base/src/test/java/tk/mybatis/mapper/typehandler/DictTypeHandler.java

企业级最佳实践

多模块项目配置

在Spring Boot多模块项目中,推荐将生成器配置在独立模块:

project/
├── api/           // 接口层
├── service/       // 服务层
├── dao/           // 数据访问层(存放生成的代码)
└── generator/     // 代码生成器模块

Spring Boot集成示例:spring-boot-starter/mapper-spring-boot-samples/

版本控制忽略生成文件

在.gitignore中添加规则,避免提交自动生成的代码:

# 忽略生成的实体类和Mapper
/src/main/java/com/example/entity/**/*.java
/src/main/java/com/example/mapper/**/*.java
/src/main/resources/mapper/**/*.xml

配置参数说明

配置参数说明

核心配置参数速查表:

参数名作用示例值
targetProject目标项目目录src/main/java
targetPackage目标包名com.example.mapper
templatePath模板文件路径generator/mapper.ftl
fileName生成文件名模板${tableClass.shortClassName}Mapper.java
lombokLombok注解列表Data,Accessors,ToString

总结与资源

Mybatis Common Mapper代码生成器通过模板化、可配置的方式,彻底解决了MyBatis开发中的重复劳动问题。3分钟配置即可生成规范的实体类、Mapper接口和XML文件,配合通用Mapper提供的17+预置方法,让数据访问层开发效率提升80%以上。

官方资源:

现在就动手试试吧!克隆项目仓库:

git clone https://gitcode.com/gh_mirrors/ma/Mapper.git

只需按照本文步骤配置,你也能告别重复CRUD工作,让开发效率飞起来!

【免费下载链接】Mapper Mybatis Common Mapper - Easy to use 【免费下载链接】Mapper 项目地址: https://gitcode.com/gh_mirrors/ma/Mapper

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值