当前位置: 首页 > 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!

相关文章:

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

BACKGROUND你是否也有这样的烦恼&#xff1a;每次写代码都需要创建很多包很多层很多类很多接口&#xff1f;耗时且费力姑且不谈&#xff0c;有时可能还大意了没有闪&#xff0c;搞出一堆bug这谁顶得住啊都3202年了&#xff0c;让程序自力更生吧&#xff01;&#xff01;教程 le…...

Kubernetes学习笔记-计算资源管理(4)监控pod的资源使用量20230219

前面学了设置资源的requests和limits&#xff0c;这节课学习如何监控资源&#xff0c;根据监控资源使用情况&#xff0c;对requests和limits进行合理配置。收集、获取实际资源使用情况kubelet包含一个agent&#xff0c;名为cAdvisor&#xff0c;它会收集整个节点上运行的所有单…...

游戏开发 - 开发流程 - 收集

1.应用场景 主要用于了解&#xff0c;掌握游戏开发的整个流程。 2.学习/操作 1.文档阅读 复习课 | 带你梳理客户端开发的三个重点-极客时间 2.整理输出 2.1 游戏开发流程 -- 参考 按照游戏开发中的三大模块策划、程序、美术&#xff0c;画了一个图。 开发游戏的时候&#xff…...

LA@向量空间@坐标变换

文章目录向量空间向量空间的属性坐标例基变换坐标变换n维向量空间RnR^nRn子空间例线性组合与线性方程组生成子空间深度学习向量空间 设VVV是n维向量的非空集合,如果VVV对向量的加法和数乘运算封闭,即 ∀α,β∈V,∀k∈Rαβ,kα∈V\forall \alpha,\beta\in{V},\forall k\in{\ma…...

JSP脚本指令及标记学习笔记

好久没更新文章了&#xff0c;上次更新的文章还是一个学习笔记。本篇博文介绍的是JSP基本概念 1.JSP开发方法 一个jsp网页只需要加上<%%>就行了。 2.JSP运行机制 3.JSP脚本元素 3.1 JSP脚本代码 <% 脚本代码 %>实例 <% SimpleDateFormat df new SimpleDa…...

【C语言每日一题】——猜凶手

【C语言每日一题】——猜名次&#x1f60e;前言&#x1f64c;猜凶手&#x1f64c;解题思路分享&#xff1a;&#x1f60d;解题源码分享&#xff1a;&#x1f60d;总结撒花&#x1f49e;&#x1f60e;博客昵称&#xff1a;博客小梦 &#x1f60a;最喜欢的座右铭&#xff1a;全神…...

2019蓝桥杯真题完全二叉树的权值 C语言/C++

题目描述 给定一棵包含 N个节点的完全二叉树&#xff0c;树上每个节点都有一个权值&#xff0c;按从 上到下、从左到右的顺序依次是 A_1, A_2, A_N&#xff0c;如下图所示&#xff1a; 现在小明要把相同深度的节点的权值加在一起&#xff0c;他想知道哪个深度的节点 权值之和最…...

大数据之Phoenix环境搭建

文章目录前言一、下载Phoenix安装包二、上传并解压三、拷贝服务包到各个hbase的lib目录下四、修改hbase的配置文件五、重启HBase集群六、连接Phoenix客户端前言 #博学谷IT学习技术支持# 本篇文章主要介绍Phoenix的环境搭建&#xff0c;Phoenix支持使用SQL语句操作HBase&#x…...

62 一次 Promotion failed 的调试

前言 最近 有一个想法就是, 调试一下 DefNewGeneration 里面的晋升失败的情况 呵呵 对于这块的代码上面, 看着感觉有一些疑问的地方, 因此想通过 实际的调试, 来验证一下 实际的情况 然后 之前写了一个用例, 但是 和心中的期望差距甚大, 当然 主要的问题 还是自己对于 细…...

Git的基本操作

文章目录1.git的工作流程2.git的工作环境3.git的基本操作(1)git init(2)git status(3)git add(4)git commit4.版本控制(1)git reflog与git log(2)再增加两个版本(3)git reset --hard 版本号(4)两个指针4.分支管理(1)对分支的理解(2)git branch和git branch -v(3)git checkout 分…...

LeetCode初级算法题:两数之和+斐波拉契数列多种java解法

目录7 两数之和题目描述&#xff1a;解题思路与代码暴力解法&#xff1a;解法一&#xff1a;二分查找解法二&#xff1a;双指针2 斐波那契数列题目描述&#xff1a;解题思路与代码![请添加图片描述](https://img-blog.csdnimg.cn/d06a95d7989b4794bd7f5f02fbd6f87e.png)解法一&…...

测试1:测试相关概念

1.测试相关概念 1.1.测试概念 1.1.1.需求 符合正式文档规定的条件和权能&#xff0c;包括用户需求和软件需求 它们之间的的转换是&#xff1a;沟通 用户需求和软件需求的区别&#xff1a; 能否指导开发人员开发&#xff0c;测试人员编写测试用例 1.1.2.缺陷Bug 与正确的…...

2.19 索引和事务

一.联合查询面试问题:聚合查询与联合查询的区别聚合查询是行与行之间的数据加工聚合函数 :count,sum,avg...group by 进行分组,指定列的值,相同的记录合并到同一个组,每个组又可以分别进行聚合查询分组还可以指定条件筛选,如果分组之前指定条件 用where,如果对分组之后指定条件…...

算法导论【摊还分析】—聚合分析、核算法、势能法

算法导论【摊还分析】—聚合分析、核算法、势能法聚合分析核算法势能法假定我们对一个数据结构执行一个由 n 个操作组成的操作序列&#xff0c;当 i 严格为 2 的幂时&#xff0c;第 i 个操作的代价为 i&#xff0c;否则代价为 1 聚合分析 总共有n个操作&#xff0c;1,2,4.....…...

【LeetCode】剑指 Offer 08. 二叉树的下一个节点 p65 -- Java Version

题目链接&#xff1a;无题目链接&#xff0c;不知道为啥力扣上找不到这一题。 1. 题目介绍&#xff08;08. 二叉树的下一个节点&#xff09; 题目&#xff1a;给定一个二叉树和其中的一个节点&#xff0c;请找出中序遍历顺序的下一个节点并且返回。注意&#xff0c;树中的节点…...

Python 之 Pandas Series 数据结构

文章目录一、Series 结构二、数据结构 Series 创建1. 创建1.1 列表/数组作为数据源创建 Series1.2 字典作为数据源创建 Series1.3 通过标量创建2. 参数说明2.1 index 参数2.2 name 参数2.3 copy 参数三、Series 的索引/切片1. 下标索引2. 标签索引3. 切片四、Series 数据结构的…...

【java基础】Java常用类———包装类

包装类 wrapper 装箱与拆箱 装箱&#xff1a;基本类型->包装类&#xff1b; 拆箱&#xff1a; 包装类->基本类型 public class Integer01 {public static void main(String[] args) {//演示int <--> Integer 的装箱和拆箱//jdk5前是手动装箱和拆箱//手动装箱 in…...

linux shell 入门学习笔记3 shebang

shebang 计算机程序中&#xff0c;shebang指的是出现在文本文件的第一行前两个字符#! 在Unix系统中&#xff0c;程序会分析shebang后面的内容&#xff0c;作为解释器的指令&#xff0c;例如 以#!/bin/sh 开头的文件&#xff0c;程序在执行的时候会调用/bin/sh&#xff0c;也就…...

写作小课堂:简历模版【A4纸正反两面】(20230219)

文章目录 I 联系方式II 个人信息III 求职意向IV 工作经验2018年-11月-至今全城淘信息技术服务有限公司2017年07月-2018年-11月湖南微流网络科技有限公司2014年06月-2017年07月湖南高阳通联信息技术有限公司V 项目经验2018年11月-至今全城淘淘管家2017年10月-2018年11月ASO(机刷…...

一文搞懂 DevOps

前言 DevOps作为一个热门的概念&#xff0c;近年来频频出现在各大技术社区和媒体的文章中&#xff0c;备受行业大咖的追捧&#xff0c;也吸引了很多吃瓜群众的围观。 那么&#xff0c;DevOps是什么呢&#xff1f; 有人说它是一种方法&#xff0c;也有人说它是一种工具&#…...

上门预约行业技术方案全解析:小程序、App还是H5?如何选择?

上门按摩行业这几年确实火&#xff0c;但千万别以为随便买个系统、招几个技师就能赚钱。作为一家深耕10年软件开发的公司&#xff0c;我们做了四五年上门按摩系统&#xff0c;见过太多人头脑一热冲进来&#xff0c;结果血本无归。 如果你真的想做上门按摩&#xff0c;先想清楚这…...

引领AI安全新时代 Accelerate 2025北亚巡展·北京站成功举办

6月5日&#xff0c;网络安全行业年度盛会——"Accelerate 2025北亚巡展北京站"圆满落幕&#xff01;来自智库、产业界、Fortinet管理层及技术团队的权威专家&#xff0c;与来自各行业的企业客户代表齐聚一堂&#xff0c;围绕"AI智御全球引领安全新时代"主题…...

电脑的ip地址会自动变怎么办?原因解析和解决方法

在当今互联网时代&#xff0c;IP地址是每台联网设备的"身份证"&#xff0c;但很多用户都遇到过IP地址自动变化的情况。这种现象既可能发生在内网&#xff08;局域网&#xff09;环境中&#xff0c;也可能出现在外网&#xff08;公网&#xff09;连接中。要理解IP地址…...

Nginx + Tomcat负载均衡群集

目录 一、案例环境 二、部署 Tomcat&#xff08;102/103&#xff09; 1、准备环境 &#xff08;1&#xff09;关闭firewalld 防火墙 &#xff08;2&#xff09;安装JDK 2、安装配置 Tomcat &#xff08;1&#xff09;Tomcat 的安装和配置 &#xff08;2&#xff09;移动…...

证券交易柜台系统解析与LinkCounter解决方案开发实践

第一章 证券交易柜台系统基础解析 1.1 定义与行业定位 证券交易柜台系统&#xff08;Trading Counter System&#xff09;是券商经纪业务的核心支撑平台&#xff0c;承担投资者指令传输、风险控制、清算结算等职能。根据中国证监会《证券期货业网络信息安全管理办法》要求&am…...

DASCTF

[DASCTF X 0psu3十一月挑战赛&#xff5c;越艰巨越狂热]EzPenetration Tip:数据库里的邮箱key已更改为管理员密码&#xff0c;拿到后可直接登录 打开靶机&#xff0c;用Wappalyzer分析网站&#xff0c;可以看到管理系统是Wordpress&#xff0c;因此可以尝试用WPSSCAN扫描公开…...

Linux常用命令学习手册

Linux常用命令学习手册https://download.csdn.net/download/2401_87690752/90953550 《Linux常用命令学习手册》提供了一份实用的Linux操作指南&#xff0c;主要收录了系统管理和文件操作等基础命令。内容涵盖了目录切换、文件查看、权限设置等核心功能&#xff0c;适合Linux初…...

从零开始的嵌入式学习day33

网络编程及相关概念 UDP网络通信程序 UDP网络通信操作 一、网络编程及相关概念 1. 网络编程概念&#xff1a; 指通过计算机网络实现程序间通信的技术&#xff0c;涉及协议、套接字、数据传输等核心概念。常见的应用场景包括客户端-服务器模型、分布式系统、实时通信等。…...

如何安全高效的文件管理?文件管理方法

文件的管理早已不只是办公场景中的需求。日常生活、在线学习以及个人收藏中&#xff0c;文件管理正逐渐成为我们数字生活中的基础。但与此同时&#xff0c;文件管理的混乱、低效以及安全性问题也频繁困扰着许多人。 文件管理的挑战与解决思路 挑战一&#xff1a;文件存储无序…...

CSS 3D 变换中z-index失效问题

CSS 3D 变换中 z-index 失效问题 1. z-index 失效了 在 CSS 中&#xff0c;z-index 通常用于控制元素的层叠顺序&#xff0c;数值越大&#xff0c;元素越靠前显示。在 3D 变换&#xff08;如 rotateX、translateZ&#xff09; 中使用 z-index 时&#xff0c;可能会发现z-inde…...