spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器

  • 一、Mybatis plus代码自动生成器
    • 1、引入配置
    • 2、创建Controller
    • 3、执行main方法

一、Mybatis plus代码自动生成器

基于官网案例魔改

1、引入配置
<!-- 代码生成器 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.3.1.tmp</version>
</dependency>
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.30</version>
</dependency>
2、创建Controller
package com.dingx.personal.common.util;import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
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 com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import org.apache.commons.lang3.StringUtils;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;// 演示例子,执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
public class CodeGenerator {private final static String url = "jdbc:mysql://127.0.0.1:3306/shopping_wx?characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC";private final static String driver = "com.mysql.cj.jdbc.Driver";private final static String username = "root";private final static String password = "root";//父包名private final static String parent = "com.dingx.personal";//父包名private final static String parentController = "com.dingx.personal.web.base.BaseController";public static void main(String[] args) {// 代码生成器AutoGenerator mpg = new AutoGenerator();// 全局配置GlobalConfig gc = new GlobalConfig();String projectPath = System.getProperty("user.dir");gc.setOutputDir(projectPath + "/shopping_service/src/main/java");gc.setAuthor("dingx");gc.setOpen(false);gc.setSwagger2(true);mpg.setGlobalConfig(gc);// 数据源配置DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl(url);// dsc.setSchemaName("public");dsc.setDriverName(driver);dsc.setUsername(username);dsc.setPassword(password);mpg.setDataSource(dsc);// 包配置PackageConfig pc = new PackageConfig();pc.setModuleName(scanner("模块名"));pc.setParent(parent);mpg.setPackageInfo(pc);// 自定义配置InjectionConfig cfg = new InjectionConfig() {@Overridepublic void initMap() {// to do nothing}};// 如果模板引擎是 freemarkerString templatePath = "/templates/mapper.xml.ftl";// 如果模板引擎是 velocity// String 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/mapper/" + pc.getModuleName()+ "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML;}});/*cfg.setFileCreate(new IFileCreate() {@Overridepublic boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) {// 判断自定义文件夹是否需要创建checkDir("调用默认方法创建的目录,自定义目录用");if (fileType == FileType.MAPPER) {// 已经生成 mapper 文件判断存在,不想重新生成返回 falsereturn !new File(filePath).exists();}// 允许生成模板文件return true;}});*/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.setEntityLombokModel(true);strategy.setRestControllerStyle(true);// 公共父类strategy.setSuperControllerClass(parentController);// 写于父类中的公共字段//strategy.setSuperEntityColumns("id");strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));strategy.setControllerMappingHyphenStyle(true);strategy.setTablePrefix(pc.getModuleName() + "_");strategy.setLogicDeleteFieldName("removed");mpg.setStrategy(strategy);//定义模版为Freemarkermpg.setTemplateEngine(new FreemarkerTemplateEngine());mpg.execute();}/*** <p>* 读取控制台内容* </p>*/public static String scanner(String tip) {Scanner scanner = new Scanner(System.in);StringBuilder help = new StringBuilder();help.append("请输入" + tip + ":");System.out.println(help.toString());if (scanner.hasNext()) {String ipt = scanner.next();if (StringUtils.isNotEmpty(ipt)) {return ipt;}}throw new MybatisPlusException("请输入正确的" + tip + "!");}
}
3、执行main方法



代码已自动生成,这里路径配置为另起一个文件夹,文件拎进来就可以使用了,来日代码托管也不怕误传,最后看一眼生成的entity文件

spring boot:从零开始搭建一个项目 - day 5 Mybatis plus代码自动生成器相关推荐

  1. spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2

    spring boot:从零开始搭建一个项目 - day 4 控制台输出日志美化 + swagger2 一.logback.xml配置日志美化 二.集成swagger2 1.引入依赖 2.编写配置文件 ...

  2. spring boot:从零开始搭建一个项目 - day8 实现jwtToken验证

    锻炼不就是为了吃更多好吃的吗 --刚去完健身房然后开了包薯片=-= spring boot:从零开始搭建一个项目 - day8 实现jwtToken验证 一.生成token 二.重写拦截器 咳,书接上 ...

  3. spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃

    spring boot:从零开始搭建一个项目 - day 7 springboot devtools热加载+MybatisPlus配置+kisso从入门到放弃 一.springboot devtool ...

  4. java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) ---上

    工程结构 Androd studio 替代eclipse给我带来最大的感觉,就是不用每次需要用到什么类库,就得去网上下载一个jar包.只要在项目app/build.gradle中加入代码,就能远程使用 ...

  5. java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) --完结篇

    鸡汤:感到迷茫是因为你没有给自己做好人生规划 接上一章的内容,如果还没看过的朋友, 请点 本章内容 Dagger2的引入 Dagger2的引入 Dagger2是一个依赖注入框架,那么dagger2能起 ...

  6. 从零开始搭建一个项目-前端框架(vue)

    基础框架:Vue UI框架:iview 样式:less 用到模块:vuex vue-router Ajax:anios 第一步 安装淘宝镜像代替npm(可省略,如果省略了,后面所有cnpm改为npm) ...

  7. 自己动手,使用Spring Initializr从零开始搭建Spring Cloud项目

    新建Project 这里使用的开发工具是IDEA,JDK版本1.8. 打开IDEA开发工具,File -> New -> Project 然后一步步往下设置,然后到这一步,选择Spring ...

  8. 【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程

    [Spring Boot]使用Spring Boot来搭建Java web项目以及开发过程 一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

  9. 从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一)

    从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一) 1.vue-cli搭建一个可靠成熟的项目 1.介绍 vue-cli 我是去年六月份接触的vue1.0,当时还是个菜逼,当 ...

最新文章

  1. 【Amazon 必考】Amazon Leadership Principles 亚马逊领导力准则
  2. Atiti。流量提升软件设计大纲规划 v1 q45
  3. 支付宝回调接口验签失败
  4. 1+X web中级 Laravel学习笔记——路由和控制器的简单使用
  5. 如何手工完全卸载SQL SERVER 2000数据库
  6. [网摘]动态SQL中set与select对变量赋值的影响
  7. 优化网页代码提高网页访问速度
  8. sql插入后返回id
  9. 感谢蜂窝教育,四个月的学习,让我改变了
  10. 协同过滤推荐算法java_协同过滤推荐算法的原理及实现
  11. 使用微软官方方法制作纯净WinPE
  12. matlab设置脚本,MATLAB脚本和功能
  13. 开源协议的比较(BSD,Apache,GPL,LGPL,MIT)
  14. 延时调用的时候要注意
  15. CAD能打开PDF格式吗?这样做可以快速实现
  16. 教师职称论文发表在哪些杂志有效
  17. 【Tracker】KCF跟踪方法百度翻译
  18. 在树莓派上搭建ad-hoc网络教程
  19. 命令行窗口快速复制粘贴的方法
  20. 著名桥梁专家张哲教授

热门文章

  1. PMP考试,需要准备什么材料啊?
  2. 10.设计汽车类(c++)
  3. Xshell 6 Xftp 6安装与使用教程
  4. pandas库中unique函数方法
  5. C语言实现二路归并算法
  6. TCP报文段的数据长度是如何计算得到的
  7. static图片编译了 vue_详解vue-cil和webpack中本地静态图片的路径问题解决方案
  8. 合同法律风险管理 静态合同的附则与附件
  9. 五年级上学期计算机教案,小学五年级《信息技术》教案上册(全册).pdf
  10. 计算机游戏的高考作文,历年高考作文真题:游戏