MybatisPlus——代码生成器

目录

[10 代码生成器](#10 代码生成器)

[10.1 生成的内容](#10.1 生成的内容)

[10.2 代码实现](#10.2 代码实现)


10 代码生成器

10.1 生成的内容

MyBatis-Plus 的代码生成器(AutoGenerator)能根据数据库表结构,自动生成从数据层(Mapper)到业务层(Service)再到控制层(Controller)的全套代码,开发者只需专注于业务逻辑即可。具体包括:

  1. 实体类
    对应数据库表结构

    package com.qcby.mybatisplus1129.entity;

    import com.baomidou.mybatisplus.annotation.IdType;
    import com.baomidou.mybatisplus.annotation.TableId;
    import com.baomidou.mybatisplus.annotation.TableName;
    import java.io.Serializable;

    /**

    • @author 03666

    • @since 2025-11-30
      */
      @TableName("tx_user")
      public class User implements Serializable {

      private static final long serialVersionUID = 1L;

      /**

      • 主键ID
        */
        @TableId(value = "id", type = IdType.AUTO)
        private Long id;

      /**

      • 姓名
        */
        private String name;

      /**

      • 年龄
        */
        private Integer age;

      /**

      • 邮箱
        */
        private String email;

      /**

      • 逻辑删除
        */
        private Integer isDeleted;

      private Integer sex;

      public Long getId() {
      return id;
      }

      public void setId(Long id) {
      this.id = id;
      }
      public String getName() {
      return name;
      }

      public void setName(String name) {
      this.name = name;
      }
      public Integer getAge() {
      return age;
      }

      public void setAge(Integer age) {
      this.age = age;
      }
      public String getEmail() {
      return email;
      }

      public void setEmail(String email) {
      this.email = email;
      }
      public Integer getIsDeleted() {
      return isDeleted;
      }

      public void setIsDeleted(Integer isDeleted) {
      this.isDeleted = isDeleted;
      }
      public Integer getSex() {
      return sex;
      }

      public void setSex(Integer sex) {
      this.sex = sex;
      }

      @Override
      public String toString() {
      return "User{" +
      "id=" + id +
      ", name=" + name +
      ", age=" + age +
      ", email=" + email +
      ", isDeleted=" + isDeleted +
      ", sex=" + sex +
      "}";
      }
      }

  2. Mapper 接口
    继承BaseMapper

    package com.qcby.mybatisplus1129.mapper;

    import com.qcby.mybatisplus1129.entity.User;
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;

    /**

    • Mapper 接口
    • @author 03666
    • @since 2025-11-30
      */
      public interface UserMapper extends BaseMapper {

    }

  3. Service 接口及实现类
    Service 接口继承IService

    package com.qcby.mybatisplus1129.service;

    import com.qcby.mybatisplus1129.entity.User;
    import com.baomidou.mybatisplus.extension.service.IService;

    /**

    • 服务类
    • @author 03666
    • @since 2025-11-30
      */
      public interface IUserService extends IService {

    }

实现类继承ServiceImpl

复制代码
package com.qcby.mybatisplus1129.service.impl;

import com.qcby.mybatisplus1129.entity.User;
import com.qcby.mybatisplus1129.mapper.UserMapper;
import com.qcby.mybatisplus1129.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author 03666
 * @since 2025-11-30
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

}
  1. Controller 层

    package com.qcby.mybatisplus1129.controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.stereotype.Controller;

    /**

    • 前端控制器
    • @author 03666
    • @since 2025-11-30
      */
      @Controller
      @RequestMapping("/mybatisplus1129/user")
      public class UserController {

    }

  2. Mapper XML 文件
    包含基础的 SQL 标签骨架。

10.2 代码实现

  1. 引入依赖

    com.baomidou mybatis-plus-generator 3.5.1 org.freemarker freemarker
  2. 快速生成

    package com.qcby.mybatisplus1129.config;

    import com.baomidou.mybatisplus.generator.FastAutoGenerator;
    import com.baomidou.mybatisplus.generator.config.OutputFile;
    import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;

    import java.util.Collections;

    public class FastAutoGeneratorTest {
    public static void main(String[] args) {
    FastAutoGenerator.create("jdbc:mysql://127.0.0.1:3306/mybatis_plus?characterEncoding=utf-8&userSSL=false",
    "root",
    "036520")
    //全局配置
    .globalConfig(builder -> {
    builder.author("03666") // 设置作者
    //.enableSwagger() // 开启 swagger 模式
    .fileOverride() // 覆盖已生成文件
    .outputDir("D://mybatis_plus"); // 指定输出目录,会自己创建
    })
    //设置包的
    .packageConfig(builder -> {
    builder.parent("com.qcby") // 设置父包名
    .moduleName("mybatisplus1129") // 设置父包模块名
    .pathInfo(Collections.singletonMap(OutputFile.mapperXml, "D://mybatis_plus"));
    // 设置mapperXml生成路径
    })
    //策略的配置
    .strategyConfig(builder -> {
    builder.addInclude("tx_user") // 设置需要生成的表名,如果要设多个值就用逗号隔开
    .addTablePrefix("tx_", "c_"); // 设置过滤表前缀 可以设置多个值
    })
    .templateEngine(new FreemarkerTemplateEngine())
    // 使用Freemarker引擎模板,默认的是Velocity引擎模板
    //.execute()执行的意思
    .execute();
    }
    }

注:第31行代码设置需要过滤的数据库表前缀,生成代码时会自动去掉这些前缀,让生成的实体类名称更简洁。比如:数据库表名是 tx_user,前缀是 tx_,生成的实体类名会是 User(去掉 tx_);

运行后会自动跳出这个页面

相关推荐
麦聪聊数据32 分钟前
电商大促数据库管控(下):数据需求小时级交付与全链路安全管控
数据库
喜欢的名字被抢了1 小时前
MySQL核心机制:事务、锁与存储引擎
数据库·sql·mysql·教程
JosieBook1 小时前
【数据库】时序数据库通过国测认证,TimechoAI开放体验:工业数据的“存”与“智”如何协同?
数据库·时序数据库
卓怡学长2 小时前
w263基于springboot + vue 健康饮食管理系统
java·数据库·vue.js·spring boot·spring·intellij-idea
阿演4 小时前
DataDjinn v0.2.11:SQL 编辑、AI 协作和表格操作继续打磨
数据库·人工智能·sql
智脑API平台5 小时前
Codex 国内使用会封号吗?账号安全、中转站和合规边界说明
数据库·redis·缓存
l1t5 小时前
duckdb 1.6dev新增的.manual命令
开发语言·数据库
辉灰笔记5 小时前
第一篇:MySQL8.0生产备份实战|XtraBackup全自动全量+增量备份(钉钉告警+异地Binlog归档)
数据库·mysql·钉钉·运维开发
山峰哥5 小时前
‌Explain实战:打开数据库执行计划的黑盒‌
大数据·服务器·数据库·sql·深度优先·宽度优先
ClickHouseDB6 小时前
ClickHouse 26.6 版本发布说明
数据库