springboot mybatis-plus 代码生成工具
介绍
基于mybatis-plus代码生成工具
后续会不断完善
规划
后续会基于此功能搞低代码平台,会有前端VUE
mybatis-plus介绍&特性
• 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
• 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
• 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
• 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
• 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
• 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
• 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
• 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
• 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
• 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
• 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
• 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作
代码生成
- 自定义模版
- 生成内容
controller/entity/dto/vo/convertor/service/serviceImpl/dao/mapper
功能说明
基于模版生成,模版在templates下
restful接口和基础功能实现
service服务实现和基础功能实现
entity/dto/vo/convertor,不同传输对象和转化
使用分页插件
使用逻辑删除标识
使用说明
CodeGeneration,直接执行即可
如需要做个性化配置,则自己改即可
测试类
测试sql在resources/sql/test.sql
查看TestGeneration.http实现
模块结构

CodeGeneration 代码
package org.lwd.microservice.boot.generation;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.querys.MySqlQuery;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.keywords.MySqlKeyWordsHandler;
import org.lwd.microservice.boot.generation.engine.EnhanceFreemarkerTemplateEngine;import java.util.Collections;
import java.util.HashMap;
import java.util.Map;import static com.baomidou.mybatisplus.generator.config.rules.DbColumnType.INTEGER;/*** @author weidong* @version V1.0.0* @description* @since 2023/5/26*/
public class CodeGeneration {public static void main(String[] args) {String projectPath = System.getProperty("user.dir")+"/microservice-boot-middle/microservice-boot-middle-generation"; //获取项目路径String outerFilePath = projectPath + "/src/main/java"; //java下的文件路径String tempFilePath = projectPath + "/src/main/resources";String packageName = "org.lwd.microservice.boot.generation";System.out.println(projectPath);FastAutoGenerator.create(new DataSourceConfig.Builder("jdbc:mysql://" + "127.0.0.1:3306/test", "root", "123456").dbQuery(new MySqlQuery()).typeConvert(new MySqlTypeConvert() {@Overridepublic IColumnType processTypeConvert(GlobalConfig config, String fieldType) {if (fieldType.toLowerCase().contains("tinyint")) {return INTEGER;}return super.processTypeConvert(config, fieldType);}}).keyWordsHandler(new MySqlKeyWordsHandler()))//全局配置.globalConfig(builder -> {builder.outputDir(outerFilePath)//生成的输出路径.author("lwd")//生成的作者名字//.enableSwagger()开启swagger,需要添加swagger依赖并配置.dateType(DateType.ONLY_DATE)//时间策略.commentDate("yyyy-MM-dd")//格式化时间格式.disableOpenDir();//禁止打开输出目录,默认false})//包配置.packageConfig(builder -> {builder.entity("entity")//实体类包名.parent(packageName)//父包名。如果为空,将下面子包名必须写全部, 否则就只需写子包名.controller("controller")//控制层包名.mapper("dao")//mapper层包名.xml("mapper.xml")//数据访问层xml包名.service("service")//service层包名.serviceImpl("service.impl")//service实现类包名.pathInfo(Collections.singletonMap(OutputFile.mapperXml, projectPath + "/src/main/resources/mapper")); //路径配置信息,就是配置各个文件模板的路径信息,这里以mapper.xml为例})//模版配置.templateConfig(builder -> {
// builder.disable()//禁用所有模板
// builder.disable(TemplateType.ENTITY)builder.service("templates/service.java")//service模板路径.serviceImpl("templates/serviceImpl.java")//实现类模板路径
// .mapper("templates/mapper.java")//mapper模板路径
// .mapperXml("/templates/mapper.xml")//xml文件模板路路径.controller("templates/controller.java"); //controller层模板路径}).templateEngine(new FreemarkerTemplateEngine()).injectionConfig(consumer -> {Map<String, String> customFile = new HashMap<>();// DTO 下面的key会作为类名后缀,进而生成新类customFile.put("DTO.java", "templates/other/dto.java.ftl");customFile.put("VO.java", "templates/other/vo.java.ftl");customFile.put("Convertor.java", "templates/other/convertor.java.ftl");consumer.customFile(customFile);}).templateEngine(new EnhanceFreemarkerTemplateEngine())// EnhanceFreemarkerTemplateEngine 里主要重写对自定义类的处理 如vo dto convert等//策略配置开始.strategyConfig(builder -> {builder.enableCapitalMode()//开启全局大写命名//.likeTable()模糊表匹配.addInclude("t_friendly_link")//添加表匹配,指定要生成的数据表名,不写默认选定数据库所有表//.disableSqlFilter()禁用sql过滤:默认(不使用该方法)true//.enableSchema()启用schema:默认false.addTablePrefix("t_")//增加过滤表前缀.entityBuilder() //实体策略配置//.disableSerialVersionUID()禁用生成SerialVersionUID:默认true.enableChainModel()//开启链式模型.enableLombok()//开启lombok.enableRemoveIsPrefix()//开启 Boolean 类型字段移除 is 前缀.enableTableFieldAnnotation()//开启生成实体时生成字段注解//.addTableFills()添加表字段填充.naming(NamingStrategy.underline_to_camel)//数据表映射实体命名策略:默认下划线转驼峰underline_to_camel.columnNaming(NamingStrategy.underline_to_camel)//表字段映射实体属性命名规则:默认null,不指定按照naming执行.idType(IdType.AUTO)//添加全局主键类型.formatFileName("%s")//格式化实体名称,%s取消首字母I.logicDeleteColumnName("deleted_tag")//逻辑删除标识.mapperBuilder()//mapper文件策略.enableMapperAnnotation()//开启mapper注解.enableBaseResultMap()//启用xml文件中的BaseResultMap 生成.enableBaseColumnList()//启用xml文件中的BaseColumnList//.cache(缓存类.class)设置缓存实现类.formatMapperFileName("%sMapper")//格式化Dao类名称.formatXmlFileName("%sMapper")//格式化xml文件名称.serviceBuilder()//service文件策略.formatServiceFileName("%sService")//格式化 service 接口文件名称.formatServiceImplFileName("%sServiceImpl")//格式化 service 接口文件名称.controllerBuilder()//控制层策略//.enableHyphenStyle()开启驼峰转连字符,默认:false.enableRestStyle()//开启生成@RestController.formatFileName("%sController");//格式化文件名称}).execute();}}
代码地址
https://github.com/OrderDong/microservice-boot
分支:microservice-boot-1.0.1-generator
模块:microservice-boot-middle-generation
外传
😜 原创不易,如若本文能够帮助到您的同学
🎉 支持我:关注我+点赞👍+收藏⭐️
📝 留言:探讨问题,看到立马回复
💬 格言:己所不欲勿施于人 扬帆起航、游历人生、永不言弃!🔥相关文章:
springboot mybatis-plus 代码生成工具
介绍 基于mybatis-plus代码生成工具 后续会不断完善 规划 后续会基于此功能搞低代码平台,会有前端VUE mybatis-plus介绍&特性 • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 • 损耗小࿱…...
超全、超详细的Redis学习笔记总结
❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于Java后端开发,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得关注、点赞、收藏、…...
Day05 04-MySQL分库分表介绍
文章目录 第十七章 MySQL分库分表17.1 什么是分库分表17.2 为什么要分库分表17.3 垂直切分17.3.1 垂直分库17.3.2 垂直分表 17.4 水平切分17.4.1 水平分库17.4.2 水平分表17.4.3 常见的水平切分规则 第十七章 MySQL分库分表 17.1 什么是分库分表 MySQL数据库常见的优化方案中…...
基于SpringBoot+vue的毕业生信息招聘平台设计和实现
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…...
git一定要学会,加油
gitgit文档http://file:///F:/%E8%B5%84%E6%96%99%E5%A4%8D%E4%B9%A0/Git%E4%BC%98%E7%A7%80%E5%BC%80%E6%BA%90%E4%B9%A6%E7%B1%8D/Git%E5%BC%80%E6%BA%90%E4%B9%A6%E7%B1%8D/Pro%20Git%E4%B8%AD%E6%96%87PDF%E7%89%88.pdf init 初始化仓库 这个命令在当前目录下初始化一个 G…...
TVM面试题
1、TVM中的调度器(Scheduler)是什么?请简要解释TVM调度器的作用和工作原理。 TVM中的调度器(Scheduler)是负责将计算图映射到特定硬件目标上的组件。调度器在TVM中起着关键的作用,它决定了计算图的执行方式、并行化策略以及内存布局等,以优化…...
CSS相关面试题
1、标准盒子模型和IE怪异盒子模型? 标准盒子模型就是指的元素的宽度和高度仅包括的内容区域,不包括边框和内边距,也就是说,元素的实际宽度和高度等于内容区域的宽度和高度IE怪异盒子是指元素的高度和宽度,包括内容区域…...
6.11总结
这周准备了蓝桥杯,主要看了一些以前学过的东西,看了二分,树状数组,树状数组二分,复习了利用倍增相关的算法。 周六去打的蓝桥杯,总体来说也就一般吧,出了考场突然想起来我b题中间的称号写成了加…...
Hazel游戏引擎(008-009)事件系统
文中若有代码、术语等错误,欢迎指正 文章目录 008、事件系统-设计009、事件系统-自定义事件前言自定义事件类与使用声明与定义类代码包含头文件使用事件 事件调度器代码 C知识:FunctionBind用法function基本使用 012、事件系统-DemoLayer用EventDispache…...
【C++】 STL(上)STL简述、STL容器
文章目录 简述STL容器list链表vector向量deque双端队列map映射表set集合hash_map哈希表 简述 STL是“Standard Template Library”的缩写,中文译为“标准模板库”。STL是C标准库的一部分,位与各个C的头文件中,即他并非以二进制代码的形式提供…...
【002 基础知识】什么是原子操作?
一、原子操作 原子操作就是指不能再进一步分割的操作。 二、为了实现一个互斥,自己定义一个变量作为标记来作为一个资源只有一个使用者行不行? 不行。如果在一个线程正持有锁时(2处),线程上下文发生切换,…...
English Learning - L3 作业打卡 Lesson5 Day32 2023.6.5 周一
English Learning - L3 作业打卡 Lesson5 Day32 2023.6.5 周一 引言🍉句1: What do you read when you are travelling by train or bus?成分划分弱读爆破语调 🍉句2: What are other passengers reading?成分划分弱读连读语调 🍉句3: Perh…...
深度学习应用篇-自然语言处理-命名实体识别[9]:BiLSTM+CRF实现命名实体识别、实体、关系、属性抽取实战项目合集(含智能标注)【上篇】
【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…...
腾讯安全SOC+荣获“鑫智奖”,助力金融业数智化转型
近日,由金科创新社主办,全球金融专业人士协会支持的“2023鑫智奖第五届金融数据智能优秀解决方案评选”榜单正式发布。腾讯安全申报的“SOC基于新一代安全日志大数据平台架构的高级威胁安全治理解决方案”获评“鑫智奖网络信息安全创新优秀解决方案”。 …...
Python绘制气泡图示例
部分数据来源:ChatGPT 引言 在数据可视化领域中,气泡图是一种能够同时展示三维信息的图表类型,常用于表示数据集中的两个变量之间的关系。Python中提供了许多用于绘制气泡图的可视化库,比如pyecharts。在本篇文章中,我们将介绍如何使用pyecharts库绘制一个简单的气泡图,…...
数学建模经历-程序人生
引言 即将大四毕业(现在大三末),闲来无事(为了冲粽子)就写一篇记录数学建模经历的博客吧。其实经常看到一些大佬的博客里会有什么"程序人生"、"人生感想"之类的专栏,但是由于我只是一个小趴菜没什么阅历因此也就没有写过类似的博客…...
数字电子电路绪论
博主介绍:一个爱打游戏的计算机专业学生 博主主页:夏驰和徐策 所属专栏:程序猿之数字电路 1.科技革命促生互联网时代 科技革命对互联网时代的兴起产生了巨大的推动作用。以下是一些科技革命对互联网时代的促进因素: 1. 计算机技…...
电脑丢失dll文件一键修复需要什么软件?快速修复dll文件的方法
在使用电脑的过程中,我们经常会遇到程序无法正常运行的情况,提示“XXX.dll文件丢失”的错误。这时候,很多人会感到困惑,不知道该如何解决。本文将详细介绍dll文件丢失的各种原因、如何使用dll修复工具进行一键修复dll丢失问题以及…...
你知道微信的转账是可以退回的吗
微信作为当今最受欢迎的即时通讯软件之一,其转账功能得到了广泛的应用。在使用微信转账时,我们可能会遇到一些问题,例如误操作、支付失败或者需要退款等等。 首先需要注意的是,微信转账退回的操作只能在“一天内未确认”时进行。如…...
【链表Part01】| 203.移除链表元素、707.设计链表、206.反转链表
目录 ✿LeetCode203.移除链表元素❀ ✿LeetCode707.设计链表❀ ✿LeetCode206.反转链表❀ ✿LeetCode203.移除链表元素❀ 链接:203.移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点ÿ…...
SEO_新手必看的SEO优化入门教程与基础操作指南
<h2>SEO优化入门:为新手量身打造的指南</h2> <p>SEO优化,也就是搜索引擎优化,是一个让你的网站在搜索引擎结果中获得更高排名的过程。对于新手来说,SEO可能看起来有点复杂,但只要掌握了一些基础的操…...
别再混着用了!Matplotlib的两种画图接口(plt.plot vs. ax.plot)到底怎么选?
Matplotlib接口选择指南:何时用plt.plot,何时用ax.plot? 在数据可视化领域,Matplotlib无疑是Python生态中最强大的工具之一。但许多用户在使用过程中常常困惑:为什么有的代码用plt.plot(),有的却用ax.plot(…...
不只是画连线:版图工程师必知的LOD效应与电流镜匹配实战指南(以SMIC 40nm工艺为例)
不只是画连线:版图工程师必知的LOD效应与电流镜匹配实战指南(以SMIC 40nm工艺为例) 在集成电路设计中,版图工程师常常被误解为仅仅是"画连线"的技术人员。然而,任何一位经历过流片洗礼的工程师都会明白&…...
网易云音乐无损解析:从零打造个人音乐库的终极指南
网易云音乐无损解析:从零打造个人音乐库的终极指南 【免费下载链接】Netease_url 网易云无损解析 项目地址: https://gitcode.com/gh_mirrors/ne/Netease_url 还在为网易云音乐无法下载无损音质而烦恼吗?想要建立属于自己的高品质音乐收藏库吗&am…...
OV7670 UART摄像头驱动开发:基于Camera_LS_Y201的嵌入式图像采集实现
1. Camera_LS_Y201 模块底层驱动技术解析Camera_LS_Y201 是一款基于 OV7670 图像传感器的低成本串口摄像头模组,其核心特征在于通过 UART 接口实现图像数据的一次性整帧传输(Bulk Transfer),而非传统逐行或分包发送方式。该方案由…...
自媒体人的秘密武器:OpenClaw+Qwen3-32B-Chat全平台内容分发
自媒体人的秘密武器:OpenClawQwen3-32B-Chat全平台内容分发 1. 为什么我需要一个自动化内容分发助手 去年夏天,我同时运营着公众号、微博和短视频三个平台。每次创作完核心内容后,总要花大量时间做格式转换:把长文章拆成微博线程…...
【2026年最新600套毕设项目分享】springboot柒月仓库管理系统(14280)
有需要的同学,源代码和配套文档领取,加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码SQL脚本)配套文档(LWPPT开题报告/任务书)远程调试控屏包运行一键启动项目&…...
基于Session管理的在线视频学习平台防作弊策略
1. Session管理在在线学习平台中的核心作用 在线视频学习平台最头疼的问题之一,就是如何防止用户通过多设备同时登录来刷学习进度。想象一下,如果用户同时在手机、平板和电脑上登录同一个账号,三倍速刷完课程,这对其他认真学习的用…...
“COMSOL 18650电池组蛇形液冷模型:集总电池组耦合传热与流场模拟”
comsol18650电池组蛇形液冷模型 采用集总电池组耦合传热和流场 模拟圆柱形电池模组在外部液冷散热下的热性能,电性能等锂离子电池模组在快充场景下产生的热量能直接让表面温度突破60℃,这对电动车的安全性和寿命都是致命威胁。去年参与某车企电池包项目时…...
RHEL 8 部署 Oracle 数据库
目录 一、目标与环境 二、Oracle安装包下载 官方下载地址(推荐) 三、安装详细步骤 第一阶段:系统准备(全部以root用户操作) 1. 安装必要的依赖包 2. 创建Oracle用户和组 3. 创建目录结构并设置权限 4. 配置系统…...
