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


-
实体类
对应数据库表结构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 +
"}";
}
} - 主键ID
-
-
Mapper 接口
继承BaseMapperpackage 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> {
}
-
-
Service 接口及实现类
Service 接口继承IServicepackage 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 {
}
-
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 {
}
-
-
Mapper XML 文件
包含基础的 SQL 标签骨架。
10.2 代码实现
-
引入依赖
<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> -
快速生成
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_);
运行后会自动跳出这个页面

