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<User> {

    }

  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<User> {

    }

实现类继承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. 引入依赖

    <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.1</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> </dependency>
  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_);

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

相关推荐
小小AK2 小时前
吉客云与MySQL数据集成方案
数据库·mysql
shengli7223 小时前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
xcLeigh3 小时前
IoTDB Python原生接口全攻略:从基础读写到高级实战
开发语言·数据库·python·api·iotdb·原生接口·读写数据
xcLeigh3 小时前
Python操作国产金仓数据库(KingbaseES)全流程:从环境搭建到实战应用
开发语言·数据库·python·国产数据库·kingbasees·金仓数据库
人道领域4 小时前
Day | 11 【苍穹外卖统计业务的实现:含详细思路分析】
java·数据库·后端·苍穹外卖
ZTLJQ10 小时前
数据的基石:Python中关系型数据库完全解析
开发语言·数据库·python
升鲜宝供应链及收银系统源代码服务11 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
跟着珅聪学java11 小时前
js编写中文转unicode 教程
前端·javascript·数据库
小江的记录本11 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存