ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Mybatis-Plus-Generator

2026/8/16 9:42:17 拓冰建站 浏览量
Mybatis-Plus-Generator

mybatis-plus-generator 自动生成代码

<!-- mybatis plus自动代码生成 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.0</version><scope>provided</scope>
</dependency><!-- mybatis-plus默认模板 -->
<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.2</version><scope>provided</scope>
</dependency><!-- 使用Freemarker引擎模板,默认的是Velocity引擎模板 -->
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.31</version></dependency>

模板一

import com.baomidou.mybatisplus.generator.*;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.*;
import java.util.Objects;/*** 如何使用:将工具类的静态常量改成符合你自己的需要即可。*/
public class MybatisPlusGeneratorApp {/* mysql 连接 */private static final String         ip = "127.0.0.1";private static final String       port = "3306";private static final String   database = "scott";private static final String        url = String.format("jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", ip, port, database);private static final String driverName = "com.mysql.cj.jdbc.Driver";private static final String   username = "root";private static final String   password = "123456";/* 各种、各级别包名 */private static final String moduleName = null;  // 模块名。如果是不是 maven 多模块项目,这里写 null ,注意,不是 "null" 。private static final String parentPackage = "xxx.yyy.zzz"; // 父包名。如果为空,将下面子包名必须写全部,否则就只需写子包名private static final String  entityIn = "bean.po";private static final String  mapperIn = "dao";private static final String     xmlIn = "mappers";private static final String serviceIn = "service";/* 要操作的表名 */private static final String tableNames = "department,employee"; // 多个表名用逗号隔开。不要有空格。public static void main(String[] args) {try {generator();System.out.println("mybatis 代码生成成功");} catch (Exception e) {e.printStackTrace();}}/*** Mybatis一键生成entity,mapper,mapper.xml,service,serviceImpl,controller*/public static void generator() {AutoGenerator mpg = new AutoGenerator();mpg.setGlobalConfig(globalConfig());// 全局配置mpg.setDataSource(dataSourceConfig());// 数据源配置mpg.setPackageInfo(packageConfig());// 包配置mpg.setStrategy(strategyConfig());// 策略配置mpg.setTemplate(templateConfig());// 模板配置mpg.execute();}/*** 全局配置** @return GlobalConfig*/private static GlobalConfig globalConfig() {String projectPath = System.getProperty("user.dir");GlobalConfig globalConfig = new GlobalConfig();// 文件输出目录if (Objects.equals(moduleName, null) || Objects.equals(moduleName.trim(), ""))globalConfig.setOutputDir(projectPath + "/src/main/java");elseglobalConfig.setOutputDir(projectPath + "/" + moduleName + "/src/main/java");// 添加作者信息globalConfig.setAuthor(System.getProperty("user.name"));//设置时间类型为DateglobalConfig.setDateType(DateType.TIME_PACK);// 生成文件后不默认打开globalConfig.setOpen(false);// 设置生成的各种“东西”的名字globalConfig.setEntityName("%sPo");globalConfig.setMapperName("%sDao");// 自定义service生成的名字,用于删除自动生成的I前缀//globalConfig.setServiceName("%sService");return globalConfig;}/*** 数据源设置** @return DataSourceConfig*/private static DataSourceConfig dataSourceConfig() {DataSourceConfig dataSourceConfig = new DataSourceConfig();dataSourceConfig.setUrl(url);dataSourceConfig.setDriverName(driverName);dataSourceConfig.setUsername(username);dataSourceConfig.setPassword(password);return dataSourceConfig;}/*** 包配置** @return PackageConfig*/private static PackageConfig packageConfig() {// 包配置PackageConfig packageConfig = new PackageConfig();// 包名packageConfig.setParent(parentPackage);// 各个包目录起名packageConfig.setEntity(entityIn);packageConfig.setMapper(mapperIn);packageConfig.setXml(xmlIn);
//        packageConfig.setService(serviceIn);return packageConfig;}/*** 策略配置** @return StrategyConfig*/private static StrategyConfig strategyConfig() {// 策略配置StrategyConfig strategyConfig = new StrategyConfig();// 表名自动下划线转驼峰strategyConfig.setNaming(NamingStrategy.underline_to_camel);// 字段名自动下划线转驼峰命strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);// 设置实体类的lombok(此处看个人使用,如果不使用lombok,那么在生成之后再去添加构造方法等等)strategyConfig.setEntityLombokModel(true);strategyConfig.setRestControllerStyle(true);// scanner("表名,多个英文逗号分割").split(",")strategyConfig.setInclude((tableNames).split(","));// 驼峰生成方法strategyConfig.setControllerMappingHyphenStyle(true);return strategyConfig;}/*** 模板配置项** @return TemplateConfig*/private static TemplateConfig templateConfig() {TemplateConfig templateConfig = new TemplateConfig();templateConfig.setXml(ConstVal.TEMPLATE_XML);// 不生成 mapper.xml 文件// templateConfig.setXml(null);// 不生成 servicetemplateConfig.setService(null);// 不生成 service 实现类templateConfig.setServiceImpl(null);// 不生成 controller 类templateConfig.setController(null);return templateConfig;}
}

模板二(推荐、简单够用)

public void generator() {String rootDir = "E:/generator";String outputDir = rootDir + "/java";                  //生成的文件放置目录String packageName = "xxx.yyy.zzz";    //设置父包名String mapperXmlDir = rootDir + "/resources/" + packageName.replaceAll("\\.", "/") + "/mapper"; //xml文件放置目录String url =""  //同上设置即可;FastAutoGenerator.create(url, "root", "123456")//name password.globalConfig(builder -> {builder.author("myname") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式.fileOverride() // 覆盖已生成文件.outputDir(outputDir); // 指定输出目录}).packageConfig(builder -> {builder.parent(packageName) // 设置父包名// 设置mapperXml生成路径.pathInfo(Collections.singletonMap(OutputFile.mapperXml, mapperXmlDir));}).strategyConfig(builder -> {builder.addInclude("id_departmant","test_employee")  //给该表生成.addTablePrefix("id_", "test_") //设置过滤表前缀.entityBuilder().enableLombok()//entity使用lombok.entityBuilder().columnNaming(NamingStrategy.no_change)  //是否开启驼峰.controllerBuilder() //创建Controller.enableRestStyle() //使用restController.mapperBuilder().enableMapperAnnotation();//开启mapper注解// 使用Freemarker引擎模板,默认的是Velocity引擎模板}).templateEngine(new FreemarkerTemplateEngine()).execute();}