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_);

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

相关推荐
晴天¥1 分钟前
达梦数据库共享存储集群搭建(DSC双节点+Openfiler-IP SAN存储)
linux·数据库·达梦数据库
2401_8971905520 分钟前
Golang怎么写TODO待办应用_Golang TODO应用教程【深入】
jvm·数据库·python
渔舟小调21 分钟前
P11 | 收藏与行程:用户行为类接口的设计模式
数据库·设计模式·oracle
m0_6784854525 分钟前
CSS实现浮动图标与文本居中对齐_配合浮动与flex
jvm·数据库·python
做时间的朋友。28 分钟前
MySQL 8.0 窗口函数
android·数据库·mysql
试试勇气30 分钟前
MySQL--库的操作
数据库·mysql
2401_8877245033 分钟前
uni-app动画效果实现 uni-app如何使用animation API
jvm·数据库·python
m0_7488394935 分钟前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
2401_887724501 小时前
在 Ubuntu Core 上部署 Go Web 服务的完整实践指南
jvm·数据库·python
Polar__Star1 小时前
C#怎么实现Redis分布式缓存 C#如何在ASP.NET Core中集成Redis实现分布式缓存方案【架构】
jvm·数据库·python