3分钟上手!Mybatis Mapper代码生成器:告别90%重复CRUD工作
【免费下载链接】Mapper Mybatis Common Mapper - Easy to use 项目地址: 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接口模板:generator/src/main/resources/generator/mapper.ftl
- XML映射文件模板:generator/src/main/resources/generator/mapperXml.ftl
模板文件结构示例(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;
}
高级配置指南
自定义命名规则
通过targetPackage和fileName属性实现灵活的文件路径和命名:
<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 |
| lombok | Lombok注解列表 | Data,Accessors,ToString |
总结与资源
Mybatis Common Mapper代码生成器通过模板化、可配置的方式,彻底解决了MyBatis开发中的重复劳动问题。3分钟配置即可生成规范的实体类、Mapper接口和XML文件,配合通用Mapper提供的17+预置方法,让数据访问层开发效率提升80%以上。
官方资源:
- 项目主页:README.md
- 通用Mapper文档:base/README.md
- 高级模板示例:generator/src/main/resources/generator/
现在就动手试试吧!克隆项目仓库:
git clone https://gitcode.com/gh_mirrors/ma/Mapper.git
只需按照本文步骤配置,你也能告别重复CRUD工作,让开发效率飞起来!
【免费下载链接】Mapper Mybatis Common Mapper - Easy to use 项目地址: https://gitcode.com/gh_mirrors/ma/Mapper
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




