时间:2021-05-20
场景
MyBaitsPlus3.x与2.x是不一样的。这里使用3.0.1版本。
官方文档
https://mp.baomidou.com/guide/generator.html
这里在IDEA上的SpringBoot项目中进行代码生成测试。
实现
添加依赖
添加 代码生成器 依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version></dependency>注意:MyBatis-Plus 从 3.0.3 之后移除了代码生成器与模板引擎的默认依赖,需要手动添加相关依赖
<!-- 模板引擎velocity start--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.0</version> </dependency> <!-- 模板引擎velocity end--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.0.1</version> </dependency>模板引擎
MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎。
注意!如果您选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。
AutoGenerator generator = new AutoGenerator();// set freemarker enginegenerator.setTemplateEngine(new FreemarkerTemplateEngine());// set beetl enginegenerator.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<TableFill> 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(); }}效果
运行测试
生成成功后会自动弹出生成代码的目录
到此这篇关于MyBatisPlus3.x中使用代码生成器(全注释)的文章就介绍到这了,更多相关MyBatisPlus3.x代码生成器内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
MybatisPlus给我们提供了更加强大的代码生成器MyBatisPlus在3.0.3版本之前使用代码生成器因为存在默认依赖,所以不需要其他的依赖,项目中使用
1.前言前几天写了篇关于MybatisPlus代码生成器的文章,不少同学私下问我这个代码生成器是如何运作的,为什么要用到一些模板引擎,所以今天来说明下代码生成器
代码生成器MyBatisPlus是MyBatis的扩展框架,而代码生成器是MP的核心功能之一,另外还有“条件构造器”和“通用CRUD”等功能。步骤演示mp的代码
按照官网上实例尝试了一下,感觉MyBatisplus中代码生成器还是很强大的,以下是测试的总结:使用MybatisPlus的主要依赖引入plus依赖(苞米豆)c
生成器就是自己用python代码写的迭代器,生成器的本质就是迭代器。通过以下两种方式构建一个生成器:1、通过生成器函数2、生成器表达式生成器函数:函数deffu