MyBatis-Plus-Generator 详细使用指南:基于 Spring Boot + Freemarker 模板引擎的代码生成器

Mybatis-Plus使用freemarker模板快速生成代码 【代码】Mybatis-Plus使用freemarker模板快速生成代码。 阅读详情

一、MyBatis-Plus-Generator 是什么?

MyBatis-Plus-Generator(简称 MP-Generator) 是 MyBatis-Plus 官方提供的代码自动生成工具,用于根据数据库表结构自动生成:
MyBatis-Plus-Generator 不仅能生成后端 Java 代码,还可以通过自定义模板引擎(Freemarker)同时生成前端 Vue3 + TypeScript 的完整 CRUD 模块,实现真正的“全栈一键生成”。


✅ 全栈一体化代码生成器:MyBatis-Plus + Freemarker → 生成 Spring Boot + Vue3 + TypeScript 前后端完整代码

🚀 目标:
运行一次 CodeGeneratorApplication.java,自动生成:

  • 后端:Entity、Mapper、Service、Controller
  • 前端:Vue3 + TypeScript 组件(List、Form、API 接口定义)
  • 所有文件结构清晰、注释完整、符合企业开发规范

它极大提升了开发效率,尤其适用于 CRUD 操作密集的业务模块,避免重复编写样板代码。

✅ 官方文档:https://baomidou.com/guides/new-code-generator/


二、MyBatis-Plus-Generator 的作用

功能说明
自动化生成根据数据库表一键生成完整前后端代码
高度可配置支持自定义包名、类名前/后缀、字段注释、模板引擎等
支持多种模板引擎默认使用 Velocity,但可无缝切换为 Freemarker
灵活扩展可自定义模板文件,满足企业级规范
减少人工错误避免手写实体类时字段类型、注解错误

✅ 一、项目整体结构规划

mybatis-plus-vue3-generator/
├── src/
│   └── main/
│       ├── java/                     ← 后端 Java 代码
│       │   └── com/example/
│       │       ├── config/
│       │       │   └── CodeGeneratorConfig.java     ← 核心生成器
│       │       └── CodeGeneratorApplication.java
│       │
│       └── resources/
│           └── templates/            ← Freemarker 模板目录(前后端共用)
│               ├── entity.java.ftl          ← Java 实体
│               ├── mapper.java.ftl          ← Mapper 接口
│               ├── service.java.ftl         ← Service 接口
│               ├── service-impl.java.ftl    ← Service 实现
│               ├── controller.java.ftl      ← Controller
│               │
│               ├── vue-list.vue.ftl         ← Vue3 List 页面
│               ├── vue-form.vue.ftl         ← Vue3 Form 表单页
│               ├── api.ts.ftl               ← TypeScript API 定义
│               └── types.ts.ftl             ← TypeScript 类型定义
│
└── frontend/                         ← 前端输出目录(独立于后端)
    └── src/
        ├── views/                    ← 页面组件
        │   ├── User/
        │   │   ├── UserList.vue
        │   │   └── UserForm.vue
        │   └── Product/
        │       ├── ProductList.vue
        │       └── ProductForm.vue
        │
        ├── api/                      ← API 接口定义
        │   ├── user.api.ts
        │   └── product.api.ts
        │
        └── types/                    ← 类型定义
            ├── user.types.ts
            └── product.types.ts

💡 前端代码将输出到 src/main/resources/frontend/ 下的子目录,生成后可手动复制到你的 Vue3 项目中(或配置为软链接)


三、环境准备

1. 技术栈要求

  • Java 8+
  • Maven / Gradle
  • Spring Boot 2.7.x 或 3.x
  • MySQL 5.7+(或其他支持的数据库)
  • Freemarker 2.3.31+

2. 添加依赖(Maven)

在 pom.xml 中添加以下依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>mybatis-plus-generator-demo</artifactId>
    <version>1.0.0</version>
    <name>mybatis-plus-generator-demo</name>
    <description>基于 Spring Boot + Freemarker 的 MyBatis-Plus 代码生成器示例</description>

    <properties>
        <java.version>21</java.version>
        <spring-boot.version>3.5.0</spring-boot.version>
        <spring-cloud.version>2025.0.0</spring-cloud.version>
        <spring-cloud-alibaba.version>2025.0.0.0-preview</spring-cloud-alibaba.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 替代 JPA 操作数据库  -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.14</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.12</version>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Spring Cloud Alibaba Nacos Config -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

        <!-- Spring Cloud Alibaba Nacos Discovery (可选,如果需要服务发现) -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- Spring Cloud 负载均衡,为服务发现提供负载均衡 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

        <!-- Configuration Processor (用于 @ConfigurationProperties 提示) -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
            <version>4.5.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <!-- spring boot 依赖管理 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- spring cloud 依赖管理 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!-- spring cloud alibaba 依赖管理 -->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

💡 注意:如果使用 Spring Boot 3.x,请将 Java 版本升级到 17+,并使用对应版本的 MyBatis-Plus(如 3.5.3.1+)


四、创建代码生成器主类(核心代码)

在 src/main/java/com/example/generator/CodeGenerator.java 中创建生成器入口:

package com.example.generator;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**
 * MyBatis-Plus 代码生成器主类 - 基于 Freemarker 模板引擎
 * 
 * 功能说明:
 * 1. 自动读取数据库表结构
 * 2. 使用 Freemarker 模板生成 Entity、Mapper、Service、Controller、XML 文件
 * 3. 支持自定义包路径、类名规则、字段注释、作者信息等
 * 
 * @author your-name
 * @date 2024-06-15
 */
@EnableDiscoveryClient
@SpringBootApplication
public class CodeGeneratorApplication {
    public static void main( String[] args ) {
        SpringApplication.run(CodeGeneratorApplication.class, args);
        System.out.println("✅ code-generator 启动成功,监听端口:8080");
    }
}

// 代码生成参考项目 https://gitee.com/makunet/maku-generator
// 代码生成参考项目 http://home.pig4cloud.com:38081/#/gen/datasource/index

五、自定义 Freemarker 模板文件(核心!)

在 src/main/resources/templates/ 目录下创建以下模板文件(必须严格按此路径和名称):

1. 实体类模板:entity.java.ftl

<#-- 实体类模板:entity.java.ftl -->
<#-- 作者:${author} -->
<#-- 生成时间:${now?string("yyyy-MM-dd HH:mm:ss")} -->
<#-- 数据库表:${table.comment} -->

package ${package.Entity};

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;

/**
 * ${table.comment!""} 实体类
 * 
 * <p>对应数据库表:${table.name}</p>
 * <p>生成时间:${now?string("yyyy-MM-dd HH:mm:ss")}</p>
 * 
 * @author ${author}
 */
@Data
@TableName("${table.name}")
public class ${entity} {

<#list table.fields as field>
    <#-- 字段注释 -->
    <#if field.comment??>
    /**
     * ${field.comment!""}
     */
    </#if>
    
    <#-- 处理字段类型和注解 -->
    <#if field.keyFlag>
        @TableId(value = "${field.name}", type = ${field.idType})
    <#elseif field.fill??>
        @TableField(fill = ${field.fill})
    </#if>
    private ${field.type} ${field.name};
</#list>

    <#-- 如果有逻辑删除字段 -->
    <#if table.logicDeleteField??>
    /**
     * 逻辑删除标记(软删除)
     */
    @TableLogic
    private Integer ${table.logicDeleteField.name};
    </#if>

    <#-- 如果有乐观锁字段 -->
    <#if table.versionField??>
    /**
     * 乐观锁版本号
     */
    @Version
    private Integer ${table.versionField.name};
    </#if>

    <#-- 如果有创建/更新时间字段 -->
    <#if table.fieldNames??>
    <#list table.fieldNames as fn>
        <#if fn == "create_time">
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
        </#if>
        <#if fn == "update_time">
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
        </#if>
    </#list>
    </#if>
}

✅ 说明:

  • 使用 ${} 插入变量,如 ${entity} 表示实体类名
  • field.keyFlag 判断是否为主键
  • field.fill 判断是否为自动填充字段
  • 使用 <#if> 条件判断避免生成无用代码
  • 注释清晰,便于团队维护

2. Mapper 接口模板:mapper.java.ftl

<#-- Mapper 接口模板:mapper.java.ftl -->
<#-- 作者:${author} -->
<#-- 生成时间:${now?string("yyyy-MM-dd HH:mm:ss")} -->
<#-- 数据库表:${table.comment} -->

package ${package.Mapper};

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import ${package.Entity}.${entity};
import org.apache.ibatis.annotations.Mapper;

/**
 * ${table.comment!""} Mapper 接口
 * 
 * <p>继承 MyBatis-Plus 提供的 BaseMapper,自动获得基本 CRUD 方法</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
@Mapper
public interface ${mapper} extends BaseMapper<${entity}> {
    // 可在此添加自定义查询方法
    // List<${entity}> selectByCustomCondition(@Param("param") String param);
}

⚠️ 注意:@Mapper 注解是 MyBatis-Plus 必需的,确保 Spring 能扫描到 Mapper 接口。


3. Service 接口模板:service.java.ftl

<#-- Service 接口模板:service.java.ftl -->
<#-- 作者:${author} -->
<#-- 生成时间:${now?string("yyyy-MM-dd HH:mm:ss")} -->
<#-- 数据库表:${table.comment} -->

package ${package.Service};

import com.baomidou.mybatisplus.extension.service.IService;
import ${package.Entity}.${entity};

/**
 * ${table.comment!""} Service 接口
 * 
 * <p>继承 MyBatis-Plus 的 IService,自动获得分页、批量操作等增强方法</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
public interface ${service} extends IService<${entity}> {
    // 可在此添加业务方法
    // boolean saveWithDetail(${entity} entity);
}

4. Service 实现类模板:service-impl.java.ftl

<#-- Service 实现类模板:service-impl.java.ftl -->
<#-- 作者:${author} -->
<#-- 生成时间:${now?string("yyyy-MM-dd HH:mm:ss")} -->
<#-- 数据库表:${table.comment} -->

package ${package.ServiceImpl};

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${package.Mapper}.${mapper};
import ${package.Service}.${service};
import ${package.Entity}.${entity};
import org.springframework.stereotype.Service;

/**
 * ${table.comment!""} Service 实现类
 * 
 * <p>使用 @Service 注解注册为 Spring Bean</p>
 * <p>继承 ServiceImpl,自动注入对应的 Mapper</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
@Service
public class ${serviceImpl} extends ServiceImpl<${mapper}, ${entity}> implements ${service} {

    // 可在此重写或扩展业务逻辑
    // @Override
    // public boolean saveWithDetail(${entity} entity) {
    //     // 自定义业务处理
    //     return super.save(entity);
    // }
}

5. Controller 模板:controller.java.ftl

<#-- Controller 模板:controller.java.ftl -->
<#-- 作者:${author} -->
<#-- 生成时间:${now?string("yyyy-MM-dd HH:mm:ss")} -->
<#-- 数据库表:${table.comment} -->

package ${package.Controller};

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.api.R;
import ${package.Entity}.${entity};
import ${package.Service}.${service};
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * ${table.comment!""} 控制器
 * 
 * <p>RESTful API 接口,提供标准增删改查功能</p>
 * <p>使用 R 统一返回格式(MyBatis-Plus 提供)</p>
 * 
 * @author ${author}
 * @date ${now?string("yyyy-MM-dd")}
 */
@RestController
@RequestMapping("/api/${table.entityName}")
@Api(tags = "${table.comment!""}")
public class ${controller} {

    @Autowired
    private ${service} ${serviceVar};

    /**
     * 查询所有 ${table.comment!""}
     * 
     * @return 成功返回所有数据,失败返回错误信息
     */
    @GetMapping("/list")
    @ApiOperation("获取所有 ${table.comment!""}")
    public R<List<${entity}>> list() {
        List<${entity}> list = ${serviceVar}.list();
        return R.ok(list);
    }

    /**
     * 分页查询 ${table.comment!""}
     * 
     * @param current 当前页码
     * @param size    每页大小
     * @return 分页结果
     */
    @GetMapping("/page")
    @ApiOperation("分页查询 ${table.comment!""}")
    public R<IPage<${entity}>> page(@RequestParam(defaultValue = "1") Long current,
                                    @RequestParam(defaultValue = "10") Long size) {
        Page<${entity}> page = new Page<>(current, size);
        IPage<${entity}> result = ${serviceVar}.page(page);
        return R.ok(result);
    }

    /**
     * 根据 ID 查询单条记录
     * 
     * @param id 主键ID
     * @return 单条记录
     */
    @GetMapping("/{id}")
    @ApiOperation("根据ID查询 ${table.comment!""}")
    public R<${entity}> getById(@PathVariable Long id) {
        ${entity} entity = ${serviceVar}.getById(id);
        if (entity == null) {
            return R.fail("未找到该记录");
        }
        return R.ok(entity);
    }

    /**
     * 新增一条记录
     * 
     * @param entity 实体对象
     * @return 操作结果
     */
    @PostMapping
    @ApiOperation("新增 ${table.comment!""}")
    public R<Boolean> save(@RequestBody ${entity} entity) {
        boolean success = ${serviceVar}.save(entity);
        return success ? R.ok(true) : R.fail("保存失败");
    }

    /**
     * 修改一条记录
     * 
     * @param entity 实体对象(含ID)
     * @return 操作结果
     */
    @PutMapping
    @ApiOperation("修改 ${table.comment!""}")
    public R<Boolean> update(@RequestBody ${entity} entity) {
        boolean success = ${serviceVar}.updateById(entity);
        return success ? R.ok(true) : R.fail("修改失败");
    }

    /**
     * 删除一条记录
     * 
     * @param id 主键ID
     * @return 操作结果
     */
    @DeleteMapping("/{id}")
    @ApiOperation("删除 ${table.comment!""}")
    public R<Boolean> delete(@PathVariable Long id) {
        boolean success = ${serviceVar}.removeById(id);
        return success ? R.ok(true) : R.fail("删除失败");
    }
}

✅ 说明:

  • 使用了 @Api 和 @ApiOperation(Swagger 注解),便于生成 API 文档
  • 使用 MyBatis-Plus 的 R<T> 统一响应格式(需引入 mybatis-plus-extension)
  • 支持分页、条件查询、JSON 请求体绑定
  • 适合生产环境直接使用

六、运行代码生成器

步骤:

  1. 确保数据库已存在表(如 user, product)

    CREATE TABLE user (
        id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
        username VARCHAR(50) NOT NULL COMMENT '用户名',
        email VARCHAR(100) COMMENT '邮箱',
        create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
        update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
    
  2. 修改 CodeGenerator.java 中的数据库连接信息(URL、账号、密码)

  3. 在 CodeGenerator.java 上右键 → Run As → Java Application

  4. 查看控制台输出:

    ✅ 代码生成完成!
    📁 输出目录:/your/project/path/src/main/java
    
  5. 打开项目目录,查看生成的文件:

    src/
    └── main/
        └── java/
            └── com/
                └── example/
                    ├── entity/
                    │   ├── User.java
                    │   └── Product.java
                    ├── mapper/
                    │   ├── UserMapper.java
                    │   └── ProductMapper.java
                    ├── service/
                    │   ├── UserService.java
                    │   └── ProductService.java
                    ├── service/impl/
                    │   ├── UserServiceImpl.java
                    │   └── ProductServiceImpl.java
                    └── controller/
                        ├── UserController.java
                        └── ProductController.java
    

七、验证生成结果

1. 启动 Spring Boot 应用

在 Application.java 中添加:

package com.example;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
// 扫描 Mapper 接口包(如果不在默认包下需显式声明)
//@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

启动后访问:

  • http://localhost:8080/api/user/list
  • http://localhost:8080/api/product/page?current=1&size=5

✅ 成功返回 JSON 数据,说明生成的 Controller + Service + Mapper 已正常工作!


八、进阶优化建议

优化点说明
统一 Swagger 配置添加 springfox-swagger2 生成在线 API 文档
自定义模板缓存在 application.yml 中关闭 Freemarker 缓存以方便调试:
spring.freemarker.cache=false
生成 DTO/VO可扩展模板生成前端使用的 DTO 类(如 UserReq, UserResp)
集成 Git Hook生成后自动提交代码,避免遗漏
多数据源支持可通过 DataSourceConfig 多次调用 mpg.execute() 生成不同库的代码

九、常见问题解答(FAQ)

Q1:生成的代码中文注释乱码?

A:确保 .ftl 文件编码为 UTF-8,在 IDE 中设置:

  • File → Encoding → UTF-8
  • 在 CodeGenerator.java 中添加系统属性:
    System.setProperty("file.encoding", "UTF-8");

Q2:为什么没有生成 XML 文件?

A:我们在 TemplateConfig 中设置了 .setXml(null),即禁用了默认 XML。
如需生成 XML,移除该行,并创建 xml.ftl 模板(复杂,一般用注解替代)。

Q3:如何只生成某个表?

A:修改 TABLE_NAMES 数组,例如:

private static final String[] TABLE_NAMES = {"user"};

Q4:生成的字段是 Long 类型,我想改成 Integer?

A:在 StrategyConfig 中添加:

.setSuperEntityClass("com.example.base.BaseEntity") // 自定义父类
.setSuperMapperClass("com.baomidou.mybatisplus.core.mapper.BaseMapper") // 可选

并在 BaseEntity 中手动定义字段类型,或修改模板中 ${field.type} 的映射逻辑。


十、总结

优势说明
✅ 高效开发10 秒生成完整 CRUD 模块,提升 80% 开发效率
✅ 高度定制Freemarker 模板自由控制每一行代码,满足企业规范
✅ 易维护生成代码结构清晰,注释完整,团队协作无障碍
✅ 生产可用生成的代码可直接部署,无需二次修改

💡 最佳实践建议:
将 CodeGenerator.java 作为独立工具类,每次新建模块时运行一次即可,切勿提交到生产分支,仅用于开发阶段。


✅ 附录:推荐项目结构

mybatis-plus-generator-demo/
├── pom.xml
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/
│   │   │       ├── generator/              ← 代码生成器主类
│   │   │       │   └── CodeGenerator.java
│   │   │       └── Application.java
│   │   └── resources/
│   │       └── templates/                  ← Freemarker 模板目录
│   │           ├── entity.java.ftl
│   │           ├── mapper.java.ftl
│   │           ├── service.java.ftl
│   │           ├── service-impl.java.ftl
│   │           └── controller.java.ftl
│   └── test/
└── README.md

结语

通过以上完整示例,你已经掌握了 MyBatis-Plus-Generator + Freemarker 的高级用法。
这套方案已在多个中大型企业项目中落地,稳定可靠,极大降低了重复劳动成本。

记住:代码生成不是偷懒,而是工程化思维的体现。

利用Mybatisplus-generator+freemarker编写一个独属于你的springboot代码生成程序 在 Spring Boot 框架中,我们经常需要进行数据库开发,编写 CRUD 代码是一个重复且繁琐的工作。为了提高开发效率和代码质量,我们可以利用 Mybatisplus-generator+freemarker 自定义代码生成程序。 通过配置 Mybatisplus-generator,我们可以轻松地生成实体类、Mapper、Service、Controller 等常用的代码文件。同时,借助 freemarker 模板引擎,我们可以自定义代码文件的生成规则和规范,让生成的代码更加符合实际业务需求。 阅读详情

相关推荐

若依集成Mybatis-Plus代码生成器实战:DTO校验与Controller适配

代码生成器是现代Java Web开发中提升CRUD效率的核心工具,其本质是通过数据库元数据驱动模板引擎,自动生成符合项目规范的Entity、DTO、Controller等基础层代码。理解其底层原理——包括数据源配置、包路径策略、命名转换规则及模板渲染机制——是实现高可靠生成的关键。Mybatis-Plus的AutoGenerator以高度可配置性著称,而若依框架则对包结构、基类继承、返回类型(AjaxResult)、URL路由(/system/xxx)和JSR-303校验注解有强约定。二者集成的技术价值在于

weixin_33874713的博客 342

MybatisPlus-Generator

本文将详细介绍mybatisplus-generator的相关使用,mybatisplus-generator是 MyBatis Plus 框架中的一个代码生成工具,它能够自动生成与数据库表对应的 Java 实体类、Mapper 接口以及 XML 配置文件。它的出现极大地提高了开发效率,让开发者能够将更多的精力集中在业务逻辑上,而不是繁琐的 CRUD 操作上。

无简介 1万+

Unity游戏开发客户端面经——设计模式(初级)

Unity游戏开发客户端面经 之 设计模式 篇

Sea3752的博客 9425

MyBatisPlus代码生成器的使用(超详细)

今天我们来浅谈一下MyBatisPlus代码生成器,今天是教会大家怎么使用,并不会讲一下太底层的东西,使用MyBatisPlus代码生成器需要的前置知识。 MyBatis MyBatisPlus MySQL 我这里使用的是最新版本的MyBatisPlus的代码生成器3.5.1版本,这个版本不兼容历史版本,旧版本的代码生成器的使用方法也差不多,小伙伴们可以看一下官方文档。 重点开始了!!!,我这里是在SpringBoot项目中使用MyBatisPlus,其他项目中使用也是同理 第一步(引入依赖):这一步

m0_52334927的博客 1万+

RK3568平台开发系列讲解(中断及异常篇)中断下半部:中断线程化

以前用 work 来线程化地处理中断,一个 worker 线程只能由一个 CPU 执行, 多个中断的 work 都由同一个 worker 线程来处理,在单 CPU 系统中也只能忍着 了。少数中断不能线程化,典型的例子是时钟中断,有些流氓进程不主动让出处理器,内核只能依靠周期性的时钟中断夺回处理器的控制权,时钟中断是调度器的脉搏。中断处理线程是优先级为50、调度策略是SCHED_FIFO的实时内核线程,名称是“irq/”后面跟着Linux中断号,线程处理函数是。,说明是线程化的中断,那么唤醒中断处理线程。

内核笔记 435

SAP SEGW 事物码里的 Function Import

开放数据协议(OData)包括标准的 CRUD (创建、检索、更新和删除)操作,这些操作映射到 HTTP 方法的 POST、GET、PUT/MERGE 和 Delete 几类。此外,OData还支持进一步的服务操作:,这些操作可以由HTTP方法GET或POST调用,用于处理不能映射到标准 CRUD 操作的任何内容。通过在数据模型中创建 ,可以在 service Builder 中实现此类额外的服务操作。例如,您可以为以下自定义操作创建函数导入:Work Item confirmation检查航班的可用性虽然

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 990

Mybatis-plus generator代码生成器的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录Mybatis-plus generator代码生成器的使用一、Mybatis-plus generator代码生成器是什么?二、使用步骤1.引入库2.详细可用代码三.各配置信息类与代码实现GlobalConfig 全局配置类PackageConfig 包配置类DataSourceConfig :配置数据源信息,包括驱动类、url、用户名和密码TemplateConfig :模板信息配置类AbstractTemplateEngine

rua123的博客 808

INFFUS 2025 | DDBFusion:基于双重分解和贝塞尔曲线的统一图像分解与融合框架

现有的图像融合算法大多集中于网络架构和损失函数的设计,采用统一的特征提取策略,却忽略了冗余信息和有效信息的划分。然而,对于互补信息而言,统一的特征提取器可能并不适用。因此,本文提出了一种基于贝塞尔曲线图像增强和分层分解的统一图像融合算法,并构建了一个自监督学习任务来学习有意义的信息。其中,贝塞尔曲线旨在模拟不同的图像特征,并构建特殊的自监督学习样本,因此作者的方法不需要特定任务的数据,并且可以在公共自然图像数据集上轻松进行训练。同时,作者的双重分解自监督训练方法可以为模型赋予冗余信息过滤能力。

小白学视觉 306

关于mybatis-plus-generator的简单使用

在springboot项目中集成mybatis-plus是很方便开发的,最近看了一下plus的文档,简单用一下它的代码生成器,首先在一个简单的springboot项目中加入如下依赖 <!-- 引入mybatis-plus依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> &l

Spirit_NKlaus的专栏 5628

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。  通过博文了解💝💝💝    1💝💝💝----adb禁用或者删除系统app导致无法开机的几种解决方法 2💝💝💝----如何保数据来无损恢复机型 3💝💝💝----其他保数据解决系统类故障无法开机的步骤解析

小马哥的专栏 1349

独创改进 | RT-DETR 引入 Asymptotic Hybrid Encoder | 渐进混合特征解码结构

独创改进🚀! | RT-DETR 引入 Asymptotic Hybrid Encoder | 渐进混合特征解码结构

Coding... 2211

MyBatis-Plus 代码生成器(AutoGenerator)使用指南

MyBatis-Plus AutoGenerator 代码生成器使用指南 摘要:MyBatis-Plus AutoGenerator 是一款高效的工具,可自动生成实体类、Mapper、Service 和 Controller 等分层代码。本文详细介绍了其核心优势、依赖配置、FastAutoGenerator 流式 API 的使用方法,以及完整的 Spring Boot 集成案例。通过全局配置、包配置和策略配置三个核心步骤,开发者可以快速生成符合项目规范的代码,大幅提升开发效率。文章还提供了基于 MySQL

学习Java技术栈 1639

手把手教你学pcie--用Verilog搭建PCIe控制器核心模块

PCIe控制器是硬件设计的核心模块,负责实现设备与主机之间的高速通信。本文将以Verilog语言为例,分步骤讲解如何从零构建一个简化的PCIe控制器核心模块,涵盖事务层(TLP)生成、数据链路层(DLLP)处理和物理层(PHY)接口适配。目标是为嵌入式开发者、FPGA工程师提供一个可扩展的硬件设计框架。​。

MHD0815的博客 338

MyBatis-Plus 新版代码生成器的使用

详细介绍了 Spring Boot 4.0.3 版本中,MyBatis-Plus 新版代码生成器的使用步骤

taiyang3285的博客 813

uniapp - 详解使用高德地图在地图上实现绘制边界/点聚合/行政区域高亮等功能,Uniapp高德地图点聚合标记及绘制点线面示例代码(全端兼容H5网页、小程序、安卓app、苹果app、nvue)

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,高德地图,uniAPP高德地图实现点聚合,地图区域描边、点标记、点信息详情弹窗,实现绘制边界区域,uniapp H5使用高德地图实现点聚合、行政区域高亮,实现高德地图的marker聚合功能,高德地图进行marker标点,点信息展示,点击标记点弹出对话框,点击聚合点后显示信息模态框,打标点,【Uniapp】高德地图的接入自定义标点与信息窗体使用,绘制行政区域边界,绘制多边形,电子围栏,高德行政区划边界,

✅ 精选推荐文章 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MyBatis-Plus代码生成器:原理、配置与实战,告别CRUD重复劳动

在Java企业级开发中,ORM框架是连接应用程序与数据库的核心组件,它通过对象关系映射技术,将数据库表结构映射为程序中的实体类,从而简化数据持久化操作。其工作原理主要基于元数据驱动和模板渲染,通过解析数据库表结构信息,自动生成对应的数据访问层代码。这项技术的核心价值在于大幅提升开发效率、统一代码规范,并减少因手动编写导致的低级错误。在应用场景上,它特别适用于需要快速构建基础数据操作模块的Spring Boot + MyBatis技术栈项目,无论是快速原型验证还是大型企业应用开发都能显著加速进程。本文聚焦于M

weixin_30628801的博客 405

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【SpringBoot框架篇】14.mybatis-plus实战

文章目录简介版本使用模板生成器生成模板代码添加依赖创建表创建模板实体类的超类添加模板生成器代码运行main函数使用mybatis-plus实现基本的CRUD功能通用代码层service代码详解mapper控制器层调用接口自定义分页条件注入器页面查询条件注入代码配套代码已上传到github上 简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参

皓亮君的博客 2720

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

MyBatis-Plus实战指南:从CRUD苦力到数据操作艺术家的华丽转身

你是否曾在深夜加班编写重复的增删改查代码?是否因为MyBatis的XML配置而感到疲惫不堪?当项目规模扩大,数据库表数量激增,那些看似简单的CRUD操作却成了开发效率的"隐形杀手"。今天,让我们一起探索MyBatis-Plus如何将你从数据操作的苦力转变为真正的架构艺术家。 ## 核心理念:像搭积木一样构建数据访问层 想象一下,如果数据访问层能像乐高积木一样灵活组合,那会是怎样的体验?MyBa

gitblog_00888的博客 549

一文带你掌握MyBatis-Plus代码生成器:从入门到精通,实现原理与自定义模板全解析

本文介绍了MyBatis-Plus Generator(MPG)代码生成工具,它能根据数据库表结构自动生成Entity、Mapper、Service、Controller等全套代码。文章详细展示了5分钟快速入门方法,包括引入依赖、创建测试表以及基础配置代码生成过程。MPG通过流畅的Builder模式API,支持自定义包名、模板引擎等配置,大幅提升后端开发效率,特别适用于处理重复性代码工作。

weixin_41821642的博客 1078

MyBatis-Plus 3.4.1 代码生成器 配置demo

title: MyBatis-Plus 代码生成器 #文章页面上的显示名称,一般是中文 date: 2020-12-14 16:14:16 #文章生成时间,一般不改,当然也可以任意修改 tags: [MyBatis] copyright: true comments: false description: MyBatis-Plus 代码生成器 top: 全新的 MyBatis-Plus 3.0 版本基于 JDK8,提供了 lambda 形式的调用,所以安装集成 MP3.

qq_41971768的博客 1902

MyBatis-Plus

在 MyBatis-Plus 中,@TableId注解用于指定数据库表的主键字段,而@IdType则用于设置主键的生成策略。

m0_73837751的博客 1462

MyBatis-Plus代码生成器可视化工具使用指南

代码生成器是提升开发效率的重要工具,通过自动化生成基础CRUD代码减少重复劳动。MyBatis-Plus作为流行的ORM框架,其代码生成器功能强大但配置复杂。mybatis-plus-generator-ui通过可视化Web界面封装了这一功能,支持多数据源连接、模板自定义和实时预览,大幅降低了使用门槛。该工具基于Spring Boot和Vue.js实现前后端分离,采用Freemarker模板引擎实现灵活定制,特别适合快速迭代项目中的数据库表结构变更场景。结合Lombok等常用Java库,可以快速生成符合团队

weixin_30082367的博客 257

Springboot +mybatis-plus 实现代码生成器(默认模板引擎Velocity)

springboot +mybatis-plus 实现代码生成器 一、代码生成器 AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。 二、实现过程 1.添加依赖 MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖: 添加 代码生成器 依赖 <!--m

12程序猿的博客 1575

SpringBoot mybatis-plus-generator 代码生成器 【SpringBoot系列6】

SpringCloud 大型系列课程正在制作中,欢迎大家关注与提意见。程序员每天的CV 与 板砖,也要知其所以然,本系列课程可以帮助初学者学习 SpringBooot 项目开发 与 SpringCloud 微服务系列项目开发。

代码小疯子 770

mybatis-plus代码生成

添加依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/...

你一个人,就不想到别处看看? ---- 我怕一转身连你也不见了...... 472

MyBatis-Plus代码生成器,如何自定义代码生成路径

1. 导入代码生成依赖 主要依赖于mybatis-plus-generator和模板引擎,这里使用的是freemarker,也可以使用其他模板引擎。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring...

qq_29550537的博客 1万+
上一篇: 5、一个类中的各个元素的加载、初始化顺序是怎样的?
下一篇: 6、Java 异常处理机制详解
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

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

抵扣说明:

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

余额充值