返回

Mybatisplus-generator+freemarker: 打造属于你自己的SpringBoot代码生成器

后端

利用 Mybatisplus-Generator 和 freemarker 自定义 Spring Boot 代码生成

在繁琐的 Spring Boot 数据库开发过程中,编写 CRUD 代码无疑是一项重复且费时的工作。为了提升开发效率和代码质量,我们可以借助 Mybatisplus-Generator 和 freemarker 构建一个定制的代码生成器,自动化生成所需的 Java 代码。

Mybatisplus-Generator 介绍

Mybatisplus-Generator 是一款强大的代码生成工具,可根据数据库表结构自动创建 Java 代码。它支持广泛的数据库类型,并提供灵活的配置选项,允许开发者定制生成的代码内容和格式。

freemarker 介绍

freemarker 是一款模板引擎,能够根据模板文件生成文本文件。它支持各种数据类型,并提供丰富的模板指令,赋予开发者控制模板逻辑和格式的能力。

整合 Mybatisplus-Generator 和 freemarker

在 Spring Boot 项目中集成 Mybatisplus-Generator 和 freemarker 非常简单,只需执行以下步骤:

  1. 添加依赖项:
<dependency>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-core</artifactId>
    <version>1.3.7</version>
</dependency>
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>
  1. 创建模板文件:

模板文件的后缀为 .ftl,通常放置在 resources/templates 目录下。

  1. 配置 Mybatisplus-Generator:
@Configuration
public class MybatisGeneratorConfiguration {

    // 配置生成器设置

    @Bean
    public SqlSessionFactory sqlSessionFactory() {
        // 初始化配置和数据库连接,生成 Java 代码
    }
}
  1. 编写代码生成脚本:

脚本后缀为 .xml,通常放置在 resources/generator 目录下。

  1. 运行代码生成脚本:
@SpringBootApplication
public class CodeGeneratorApplication {

    public static void main(String[] args) {
        // 运行生成器,生成 Java 代码
    }
}

优点

使用 Mybatisplus-Generator 和 freemarker 自定义代码生成器具备以下优势:

  • 提高效率: 自动化代码生成,大幅提升开发速度。
  • 增强质量: 生成的代码遵循最佳实践,减少缺陷。
  • 确保一致性: 生成的代码风格统一,符合项目规范。

示例

以下是一个示例脚本,展示如何使用 Mybatisplus-Generator 和 freemarker 生成实体类:

<?xml version="1.0" encoding="UTF-8"?>
<generatorConfiguration>
    <context id="MyBatis Generator Context">
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/test" driverClass="com.mysql.cj.jdbc.Driver" password="password" userId="root" />
        <javaModelGenerator targetPackage="com.example.demo.model" targetProject="target/generated-sources" />
        <sqlMapGenerator targetPackage="com.example.demo.sqlmap" targetProject="target/generated-sources" />
        <table tableName="user" />
    </context>
</generatorConfiguration>

常见问题解答

1. 如何自定义生成的代码?

通过 freemarker 模板可以灵活地自定义代码格式和内容。

2. 如何支持不同的数据库类型?

Mybatisplus-Generator 支持 MySQL、Oracle、SQL Server 等多种数据库类型。

3. 如何提高代码质量?

遵守最佳实践,如使用驼峰命名法、适当的注释和异常处理。

4. 如何确保代码一致性?

建立编码规范并使用代码审查工具强制执行。

5. 如何避免代码重复?

利用代码生成器自动生成重复的代码,如实体类、映射器和服务层。