MyBatisPlus3.x中使用代码生成器(全注释)

网友投稿 284 2022-11-24


MyBatisPlus3.x中使用代码生成器(全注释)

场景

MyBaitsPlus3.x与2.x是不一样的。这里使用3.0.1版本。

官方文档

https://mp.baomidou.com/guide/generator.html

这里在IDEA上的SpringBoot项目中进行代码生成测试。

实现

添加依赖

添加 代码生成器 依赖

com.baomidou

mybatis-plus-generator

3.2.0

注意:MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖

org.apache.velocity

velocity-engine-core

2.0

com.baomidou

mybatis-plus-boot-starter

3.0.1

模板引擎

MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎。

注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。

AutoGenerator generator = new AutoGenerator();

// set freemarker engine

generator.setTemplateEngine(new FreemarkerTemplateEngine());

// set beetl engine

generator.setTemplateEngine(new BeetlTemplateEngine());

// set custom engine (reference class is your custom engine class)

generator.setTemplateEngine(new CustomTemplateEngine());

编写代码

在test下新建单元测试类Generatortest.java

全局配置

//全局配置

GlobalConfig config = new GlobalConfig();

//设置是否支持AR模式

config.setActiveRecord(true)

.setAuthor("badaoliumangqizhi")

//设置输出代码的位置

.setOutputDir("f:output")

//.setEnableCache(false)// XML 二级缓存

//.setBaseResultMap(true)// XML ResultMap

//.setBaseColumnList(true)// XML columList

//.setKotlin(true) 是否生成 kotlin 代码

//设置是否覆盖原来的代码

.setFileOverride(true);

数据源配置

//数据库连接url

String dbUrl = "jdbc:sqlserver://;DatabaseName=";

//数据源配置

DataSourceConfig dataSourceConfig = new DataSourceConfig();

//数据库类型 枚举

dataSourceConfig.setDbType(DbType.SQL_SERVER)

//设置url

.setUrl(dbUrl)

//设置用户名

.setUsername("")

//设置密码

.setPassword("")

//设置数据库驱动

.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

// 自定义数据库表字段类型转换【可选】

.setTypeConvert(new mysqlTypeConvert() {

@Override

public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {

System.out.println("转换类型:" + fieldType);

//tinyint转换成Boolean

if ( fieldType.toLowerCase().contains( "tinyint" ) ) {

return DbColumnType.BOOLEAN;

}

//将数据库中datetime转换成date

if ( fieldType.toLowerCase().contains( "datetime" ) ) {

return DbColumnType.DATE;

}

return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);

}

});

策略配置

//策略配置

StrategyConfig strategyConfig = new StrategyConfig();

strategyConfig

//全局大写命名是否开启

.setCapitalMode(true)

//【实体】是否为lombok模型

.setEntityLombokModel(true)

//表名生成策略 下划线转驼峰

.setNaming(NamingStrategy.underline_to_camel)

//自动填充设置

//.setTableFillList(tableFillList)

//修改替换成你需要的表名,多个表名传数组

.setInclude("wms_receive_order");

集成注入配置

//注入全局设置

new AutoGenerator().setGlobalConfig(config)

//注入数据源配置

.setDataSource(dataSourceConfig)

//注入策略配置

.setStrategy(strategyConfig)

//设置包名信息

.setPackageInfo(

new PackageConfig()

//提取公共父级包名

.setParent("com.badao.bus.sys")

//设置controller信息

.setController("controller")

//设置实体类信息

.setEntity("entity")

)

//设置自定义模板

.setTemplate(

new TemplateConfig()

//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)

//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别

// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy

// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:

// .setController("...");

// .setEntity("...");

// .setMapper("...");

// .setXml("...");

// .setService("...");

.setServiceImpl("templates/serviceImpl.java")

)

//开始执行代码生成

.execute();

}

完整生成器代码

package com.ws.test.generator;

import com.baomidou.mybatisplus.annotation.DbType;

import com.baomidou.mybatisplus.annotation.FieldFill;

import com.baomidou.mybatisplus.generator.config.*;

import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;

import com.baomidou.mybatisplus.generator.config.po.TableFill;

import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;

import org.junit.Test;

import com.baomidou.mybatisplus.generator.AutoGenerator;

import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

import java.util.ArrayList;

import java.util.List;

/**

* Created by badado on 2019/4/25.

*/

public class Generatortest {

@Test

public void generateTest(){

//全局配置

GlobalConfig config = new GlobalConfig();

//设置是否支持AR模式

config.setActiveRecord(true)

.setAuthor("badaoliumangqizhi")

//设置输出代码的位置

.setOutputDir("f:output")

//.setEnableCache(false)// XML 二级缓存

//.setBaseResultMap(true)// XML ResultMap

//.setBaseColumnList(true)// XML columList

//.setKotlin(true) 是否生成 kotlin 代码

//设置是否覆盖原来的代码

.setFileOverride(true);

//******************************数据源配置***************************************

//数据库连接url

String dbUrl = "jdbc:sqlserver://;DatabaseName=";

//数据源配置

DataSourceConfig dataSourceConfig = new DataSourceConfig();

//数据库类型 枚举

dataSourceConfig.setDbType(DbType.SQL_SERVER)

//设置url

.setUrl(dbUrl)

//设置用户名

.setUsername("")

//设置密码

.setPassword("")

//设置数据库驱动

.setDriverName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

// 自定义数据库表字段类型转换【可选】

.setTypeConvert(new MySqlTypeConvert() {

@Override

public DbColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {

System.out.println("转换类型:" + fieldType);

//tinyint转换成Boolean

if ( fieldType.toLowerCase().contains( "tinyint" ) ) {

return DbColumnType.BOOLEAN;

}

//将数据库中datetime转换成date

if ( fieldType.toLowerCase().contains( "datetime" ) ) {

return DbColumnType.DATE;

}

return (DbColumnType) super.processTypeConvert(globalConfig, fieldType);

}

});

//******************************策略配置******************************************************

// 自定义需要填充的字段 数据库中的字段

List tableFillList = new ArrayList<>();

tableFillList.add(new TableFill("gmt_modified", FieldFill.INSERT_UPDATE));

tableFillList.add(new TableFill("modifier_id", FieldFill.INSERT_UPDATE));

tableFillList.add(new TableFill("creator_id", FieldFill.INSERT));

tableFillList.add(new TableFill("gmt_creat", FieldFill.INSERT));

tableFillList.add(new TableFill("available_flag", FieldFill.INSERT));

tableFillList.add(new TableFill("deleted_flag", FieldFill.INSERT));

tableFillList.add(new TableFill("sync_flag", FieldFill.INSERT));

//策略配置

StrategyConfig strategyConfig = new StrategyConfig();

strategyConfig

//全局大写命名是否开启

.setCapitalMode(true)

//【实体】是否为lombok模型

.setEntityLombokModel(true)

//表名生成策略 下划线转驼峰

.setNaming(NamingStrategy.underline_to_camel)

//自动填充设置

.setTableFillList(tableFillList)

//修改替换成你需要的表名,多个表名传数组

.setInclude("wms_receive_order");

//集成注入设置

//注入全局设置

new AutoGenerator().setGlobalConfig(config)

//注入数据源配置

.setDataSource(dataSourceConfig)

//注入策略配置

.setStrategy(strategyConfig)

//设置包名信息

.setPackageInfo(

new PackageConfig()

//提取公共父级包名

.setParent("com.badao.bus.sys")

//设置controller信息

.setController("controller")

//设置实体类信息

.setEntity("entity")

)

//设置自定义模板

.setTemplate(

new TemplateConfig()

//.setXml(null)//指定自定义模板路径, 位置:/resources/templates/entity2.java.ftl(或者是.vm)

//注意不要带上.ftl(或者是.vm), 会根据使用的模板引擎自动识别

// 自定义模板配置,模板可以参考源码 /mybatis-plus/src/main/resources/template 使用 copy

// 至您项目 src/main/resources/template 目录下,模板名称也可自定义如下配置:

// .setController("...");

// .setEntity("...");

// .setMapper("...");

// .setXml("...");

// .setService("...");

.setServiceImpl("templates/serviceImpl.java")

)

//开始执行代码生成

.execute();

}

}

效果

运行测试

生成成功后会自动弹出生成代码的目录


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java 解析XML数据的4种方式
下一篇:Spring启动流程refresh()源码深入解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~