当前位置: 首页 > news >正文

【超好用】自定义的mybatis-plus代码生成器

BACKGROUND

  • 你是否也有这样的烦恼:

  • 每次写代码都需要创建很多包很多层很多类很多接口?

  • 耗时且费力姑且不谈,有时可能还大意了没有闪,搞出一堆bug

  • 这谁顶得住啊

都3202年了,让程序自力更生吧!!

教程 lesson

| 准备 prepare

  • 添加依赖

        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3.1</version></dependency><!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.32</version></dependency>
  • 复制如下文件内容

  • (本人定制,功能已经可以满足日常开发~更多可查阅官方文档)

package com.benjamin.demo.utils;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;import java.util.Arrays;
import java.util.Collections;
import java.util.List;public class MyBatisPlusAuto {public static void main(String[] args) {//如果在空项目下创建模块项目,需要制定模块的名称,否则设置为空
//===============================================================================================String moduleName = "";     //  单体项目
//        String moduleName = "Wish-Cloud-master/wish-modules/wish-contract";     //  多模块项目示例String projectPath = System.getProperty("user.dir");
//===============================================================================================String databaseName = "20230212_new_test";FastAutoGenerator.create(
//==============================================================================================="jdbc:mysql://127.0.0.1:3306/" + databaseName + "?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai","yourusername", "yourpassword")// 全局配置.globalConfig((scanner, builder) ->builder.outputDir(projectPath + "/" + moduleName + "/src/main/java").author(scanner.apply("请输入作者名称:")).fileOverride()
//                                        .enableSwagger()    //  开启 swagger 模式)// 包配置.packageConfig((scanner, builder) -> builder
//===============================================================================================.parent("com.wish")                         //  父包名.moduleName(scanner.apply("请输入包名:"))  //  父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml,                     //曾经是mapperXmlprojectPath + "/" + moduleName+ "/src/main/resources/mappers/")))// 策略配置.strategyConfig((scanner, builder) -> builder.addInclude(getTables(scanner.apply("请输入表名,2个及以上请使用英文逗号分隔(ps:所有表,输入 all):")))
//===============================================================================================
//                        .addTablePrefix("t_")       //  过滤表前缀.controllerBuilder()        //  生成@RestController控制器.enableRestStyle().enableHyphenStyle()        //  开启Controller驼峰转连字符.entityBuilder().enableLombok()             //  实体是否为lombok模型.naming(NamingStrategy.underline_to_camel)          //  数据库表字段映射到实体类的命名策略.columnNaming(NamingStrategy.underline_to_camel)    //  数据库表字段映射到实体类字段的命名策略
//===============================================================================================
//                        .addTableFills(
//                                new Column("create_time", FieldFill.INSERT)
//                        ).build())//  模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
//                .templateEngine(new BeetlTemplateEngine()).templateEngine(new FreemarkerTemplateEngine()). execute();}// 处理 all 情况protected static List<String> getTables(String tables) {return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));}}
  • 文件中请重点关注出现 “//============================================...” 的地方,是你运行前可能需要修改的位置。

  • 至于如何修改以及各部分什么含义,注释已经非常清晰了,这里不再重复描述。

| 运行 run

  • 点击运行后控制台会有相应提示

  • 依次输入你想要的值并回车

  • 生成成功!!

  • mac和windows都会弹出文件夹的

  • 同样我们回到项目中check,通过上图可以看到

  • everything is ok

  • 是不是巴适得板?

  • 那么我们再随便check一个文件的内容

  • 该有的它都有,剩下就需要我们根据需求再添砖加瓦了~

END


Thanks!

http://www.lryc.cn/news/12723.html

相关文章:

  • Kubernetes学习笔记-计算资源管理(4)监控pod的资源使用量20230219
  • 游戏开发 - 开发流程 - 收集
  • LA@向量空间@坐标变换
  • JSP脚本指令及标记学习笔记
  • 【C语言每日一题】——猜凶手
  • 2019蓝桥杯真题完全二叉树的权值 C语言/C++
  • 大数据之Phoenix环境搭建
  • 62 一次 Promotion failed 的调试
  • Git的基本操作
  • LeetCode初级算法题:两数之和+斐波拉契数列多种java解法
  • 测试1:测试相关概念
  • 2.19 索引和事务
  • 算法导论【摊还分析】—聚合分析、核算法、势能法
  • 【LeetCode】剑指 Offer 08. 二叉树的下一个节点 p65 -- Java Version
  • Python 之 Pandas Series 数据结构
  • 【java基础】Java常用类———包装类
  • linux shell 入门学习笔记3 shebang
  • 写作小课堂:简历模版【A4纸正反两面】(20230219)
  • 一文搞懂 DevOps
  • 深入讲解Kubernetes架构-租约
  • 微信小程序学习第11天——Vant Weapp组件库、API Promise化、全局数据共享Mobx、分包
  • Python3-基本数据类型
  • RPA落地指南:什么是RPA
  • 跨域问题的三种解决办法
  • c++提高篇——string容器
  • [软件工程导论(第六版)]第6章 详细设计(复习笔记)
  • RabbitMQ核心内容:实战教程(java)
  • RK356x U-Boot研究所(命令篇)3.7 pci与nvme命令的用法
  • 微信头像昵称获取能力的变化导致了我半年没更新小程序
  • 【深度学习编译器系列】1. 为什么需要深度学习编译器?