官方文档

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

Maven

        <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--MyBatis-Plus Generator--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId></dependency><!--Velocity--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.2</version></dependency>

DEMO

package com.hailiu.generator.mybatisplus;import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.InjectionConfig;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;import java.text.SimpleDateFormat;
import java.util.*;/*** MyBatis Plus 代码生成器* @author ShenTuZhiGang* @version 1.0.2* @date 2020-03-31 17:02*/
// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class MyBatisPlusGenerator {/*** <p>* 读取控制台内容* </p>*/public static String scanner(String tip) {Scanner scanner = new Scanner(System.in);String help = "请输入" + tip + ":";System.out.println(help);if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotBlank(ipt)) {return ipt;}}throw new MybatisPlusException("请输入正确的" + tip + "!");}public static void main(String[] args) {ResourceBundle resource = ResourceBundle.getBundle("mybatisplus-demo");// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir");gc.setOutputDir(projectPath + "/src/main/java");gc.setAuthor("ShenTuZhiGang");gc.setOpen(false);gc.setSwagger2(true); //实体属性 Swagger2 注解gc.setBaseResultMap(true); //通用查询映射结果gc.setBaseColumnList(true); //通用查询结果列mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(resource.getString("datasource.url"));dsc.setSchemaName(resource.getString("datasource.schema-name"));dsc.setDriverName(resource.getString("datasource.driver-class-name"));dsc.setUsername(resource.getString("datasource.username"));dsc.setPassword(resource.getString("datasource.password"));mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();pc.setModuleName("hailiu");pc.setParent("com");pc.setEntity("model"); // 定义实体类包名mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothingMap<String, Object> map = new HashMap<>();map.put("time", new SimpleDateFormat("HH:mm").format(new Date()));map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");this.setMap(map);}};// 如果模板引擎是 freemarker//String templatePath = "/templates/mapper.xml.ftl";// 如果模板引擎是 velocityString templatePath = "/templates/mapper.xml.vm";// 自定义输出配置List<FileOutConfig> focList = new ArrayList<>();// 自定义配置会被优先输出focList.add(new FileOutConfig(templatePath) {@Overridepublic String outputFile(TableInfo tableInfo) {// 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!!return projectPath + "/src/main/resources/db/mapper" //+ pc.getModuleName()+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});/*cfg.setFileCreate(new IFileCreate() {@Overridepublic boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {// 判断自定义文件夹是否需要创建checkDir("调用默认方法创建的目录");return false;}});*/cfg.setFileOutConfigList(focList);mpg.setCfg(cfg);// 配置模板TemplateConfig templateConfig = new TemplateConfig();// 配置自定义输出模板//指定自定义模板路径,注意不要带上.ftl/.vm, 会根据使用的模板引擎自动识别// templateConfig.setEntity("templates/entity2.java");// templateConfig.setService();// templateConfig.setController();templateConfig.setXml(null);mpg.setTemplate(templateConfig);// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setNaming(NamingStrategy.underline_to_camel);strategy.setColumnNaming(NamingStrategy.underline_to_camel);//strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");strategy.setEntityLombokModel(true);strategy.setRestControllerStyle(true);// 公共父类//strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");// 写于父类中的公共字段//strategy.setSuperEntityColumns("id");strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(pc.getModuleName() + "_");mpg.setStrategy(strategy);//mpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}}

参考文章

基于mybatis-plus的代码自动生成工具(自定义模板)

Mybatis Plus——AutoGenerator配置BaseResultMap(通用查询映射结果)和BaseColumnList(通用查询结果列)自动生成

MyBatis Plus Generator——MyBatis Plus代码生成器DEMO相关推荐

  1. MyBatis Plus Generator——基于Velocity的Controller参考模板(集成MyBatis Plus、Swagger2、自封装Response、分页)

    代码生成器 MyBatis Plus Generator--MyBatis Plus代码生成器DEMO 解决方案 包含:MyBatis Plus.Swagger2.自封装Response.MyBati ...

  2. MyBatis Plus Generator 代码生成器 v3.5.x 案例,含校验、MapStruct、Swagger、QO、VO,自定义 FreeMarker 模板引擎

    v3.5.3.v3.5.3.1 详情请点击 v3.5.1 代码生成器 import com.baomidou.mybatisplus.annotation.IdType; import com.bao ...

  3. 搭建eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo

    前言:我这里搭建好eclipse版的ssm+maven+tk.mybatis+redis及mybatis+spring多数据源配置集成的demo.新手快速上手直接看demo. 最后处提供完整高质量de ...

  4. mybatis plus generator配置

    mybatis plus generator配置 代码生成器AutoGenerator AutoGenerator autoGenerator = new AutoGenerator(); Globa ...

  5. springboot mybatis easyui 整合的一个小demo

    springboot mybatis easyui 整合的一个小demo 这是最终完成界面 话不多说 开整! 这是项目结构 数据库 表结构和数据库 (有点乱 之前本来是个正经图书表的 = =.) /* ...

  6. 使用MyBatis的Generator自动创建实体类和dao的接口与xml

    在实际的项目中其实建立数据库和设计数据库的时候特别重要,而等数据库设计完成之后,根据数据库创建实体类的工作就特别麻烦和繁琐了,不仅很麻烦,而且很浪费时间,不做又不行,这次就找到了一个简单的方法可以让m ...

  7. 用mybatis的generator自动生成代码--坑我都走了一遍,后面的同学别踩了

    先说什么是mybatis-generator? mybatis-geneator是一款mybatis自动代码生成工具,可以通过配置,快速生成mapper和xml文件. 步骤一:在pom文件中添加插件配 ...

  8. 如何用MyBatis-Generator自动创建代码(映射生成实体类、DAO接口和Mapping映射文件)

    如何用MyBatis自动生成实体类.DAO接口和Mapping映射文件 引言: 什么是 MyBatis ? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBa ...

  9. MyBatis逆向工程 Generator

    正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表.Hibernate是支持正向工程 的. 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapp ...

最新文章

  1. 鸿蒙系统能内测吗,鸿蒙系统内测用户:使用体验已经超越ios
  2. Map json数据解析
  3. startActivities的使用
  4. android 数据存储怎么保存图片_文章要保存为TXT文件,其中的图片要怎么办?Python帮你解决...
  5. gradle 的 依赖管理(八)
  6. 用python批量创建docker_「docker实战篇」python的docker-docker镜像的创建使用dockerfile(3...
  7. hot编码 字符one_用 PyTorch 实现基于字符的循环神经网络 | Linux 中国
  8. android OEM unlocking分析
  9. 论无线网络中的网络与信息安全技术
  10. 疫情之下困难的设备维护工作该如何解决? ​
  11. SQL注入学习part07:(SQL注入语句总结)
  12. Oracle OCP题库变了,052全新题库收集整理-30
  13. Apollo学习笔记(6)module control
  14. IOS性能优化方面的文章,Mark下
  15. 第一章:计算机基础知识——知识点整理
  16. Lucene 深入学习(3)Lucene索引初识
  17. android父布局的右侧,相对布局(RelativeLayout)的控件运用
  18. ps 绘制的 路径丢失了
  19. linux断网过一段时间就好了,网络总是隔一段时间丢包或者不通,过10分钟就好了?求解决 - 思科技术论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  20. 乐高教育版45544零件---分类识别

热门文章

  1. cmf php,cmf公共函数解析-common.php
  2. php mysql.x86 64_centos7.2yum安装php70w.x86_64
  3. java 处理byte_java - 文件到Java中的byte [] - 堆栈内存溢出
  4. python pytorch自定义_PyTorch使用自定义模块创建数据模型
  5. linux搭建环境经验,经验总结54--搭建linux虚拟机环境
  6. java底层原理书籍_阿里面试题:Java中this和super关键字的底层实现原理
  7. 机器人简化图画手绘图_高通推出全新RB3 机器人平台,年内支持5G连接
  8. java压缩对象_Java 对象指针压缩
  9. airflow sql_alchemy_conn mysql_搭建AirFlow—— 一段波折后的总结
  10. 风吹来_风吹年年,雪落片片