MyBatisPlus(二十二)代码生成器
使用场景
使用代码生成器,根据数据库表,自动生成对应的 Entity,Mapper,Service,Controller 。
代码
依赖
两个依赖:
- 生成器依赖
- 模板依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.5.3.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency>
生成器代码
package com.example.db.mybatisplus;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.DbColumnType;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;import java.sql.Types;
import java.util.Collections;public class AutoGenerator {public static void main(String[] args) {String url = "jdbc:mysql://localhost:3306/mybatisplus?serverTimeZone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true";FastAutoGenerator.create(url, "root", "password").globalConfig(builder -> {builder.author("宋冠巡") // 设置作者
// .enableSwagger() // 开启 swagger 模式.outputDir("E://mybatis-plus/"); // 指定输出目录}).dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {int typeCode = metaInfo.getJdbcType().TYPE_CODE;if (typeCode == Types.SMALLINT) {// 自定义类型转换return DbColumnType.INTEGER;}return typeRegistry.getColumnType(metaInfo);})).packageConfig(builder -> {builder.parent("com.example.db") // 设置父包名.moduleName("mybatisplus") // 设置父包模块名.pathInfo(Collections.singletonMap(OutputFile.xml, "E://mybatis-plus/")); // 设置mapperXml生成路径}).strategyConfig(builder -> {builder.entityBuilder().formatFileName("%sEntity")
// .superClass("com.example.db.BaseEntity")
// .addSuperEntityColumns("id", "create_time", "update_time").enableLombok().disableSerialVersionUID().logicDeleteColumnName("deleted").versionColumnName("version").addTableFills(new Column("create_time", FieldFill.INSERT)).addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE));builder.serviceBuilder().formatServiceFileName("%sService");builder.addInclude("tb_user") // 设置需要生成的表名.addTablePrefix("tb_"); // 设置过滤表前缀}).templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板.execute();}
}
效果
将生成的代码,复制到项目中。
配置好 MapperScan 后,能够正常运行。
注意:entity 默认使用的 lombok 为@Getter @Setter,需要手动改为@Data。
生成代码示例

放入项目后示例

参考
官网 - 代码生成器配置
相关文章:
MyBatisPlus(二十二)代码生成器
使用场景 使用代码生成器,根据数据库表,自动生成对应的 Entity,Mapper,Service,Controller 。 代码 依赖 两个依赖: 生成器依赖模板依赖 <dependency><groupId>com.baomidou</groupId&…...
git报错The project you were looking for could not be found 解决方式
问题描述: 使用git从远程仓库克隆项目到本地的时候。 git clone http://gitlab.com/project/xxxx.git出现这个问题:The project you were looking for could not be found. 原因分析: 你的账号没有项目的权限,你可以在浏览器输…...
“编辑微信小程序与后台数据交互与微信小程序wxs的使用“
引言 在现代移动应用开发中,微信小程序已经成为了一个非常流行和广泛使用的平台。为了使小程序能够展示丰富的内容和实现复杂的功能,与后台数据的交互是至关重要的。同时,微信小程序还提供了一种特殊的脚本语言——wxs,用于增强小…...
从Linux的tty_struct指针获取驱动上下文
背景 问题 前段时间开发一个tty驱动,用途是实现仪器对GPIB消息的接收、处理和上报。对于上报场景,下位机应用将上报内容写入一个驱动创建的tty设备,tty子系统将应用的输入转发给tty驱动,tty驱动将其转换成对SPI从设备࿰…...
PHP WAP餐厅点餐系统mysql数据库web结构apache计算机软件工程网页wamp
一、源码特点 PHP餐厅点餐系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 PHP WAP餐厅点餐系统 代码 https://download.csdn.net/download/qq_41221322/88440001 二、…...
智慧公厕改变城市生活,厕所革命标杆应用解决方案
随着城市化进程的加快,公厕作为城市基础设施的重要组成部分,扮演着不可忽视的角色。然而,传统的公厕粗放型管理模式,已经无法满足市民日益增长的需求。为了提升公厕的管理和服务水平,智慧公厕应运而生。 什么是智慧公…...
YOLOv5改进实战 | 更换主干网络Backbone(四)之轻量化模型MobileNetV3
前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…...
上新啦!请查收云原生虚拟数仓 PieCloudDB 十月动态
PieCloudDB Database 最新动态 PieCloudDB 压缩效率得到提升 为了节省存储空间,降低用户存储费用,PieCloudDB 在压缩率上不断优化,包括: 对 HLL(HyperLogLog)支持游程编码(Run Length Encodi…...
第五章:Python中的集合(上)
Python中的集合 是一组不可重复元素的无序集合。集合通常用于在其中执行成员测试,删除重复项,计算交集、并集和差集等操作。 Python的集合是可迭代对象。具体来说,集合可以通过for循环逐个访问其中的元素。同时,集合还支持一些迭代器相关的方法,例如iter()函数和next()函…...
虚拟机灾备建设中NFS存储直接访问技术应用
NFS(Network File System)是一种网络文件系统,允许不同计算机之间共享文件和目录。在Linux系统中,可以使用NFS协议来访问网络存储。 当新服务器硬盘不足时,旧的服务器硬盘容量大,不拔硬盘的情况下…...
java业务开发常用的配置表及代码
配置表 通过配置表,灵活的配置。 开发中某些经常变更的参数值,加上配置。比如 订单30分钟后失效,需求变更,要改为15分钟,那么直接改配置表就行了,不用发版。 某些关键的容易出错的逻辑,加上一…...
安装Homebrew安装Git(Mac)
使用Homebrew安装Git(Mac) 1 安装Xcode 安装Homebrew之前,需要安装Xcode Comand Line Tools: xcode-select --install 2 安装Homebrew /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/mas…...
[云原生1.] Docker容器的简单介绍和基本管理
文章目录 1. Docker容器的基本概述1.1 简介1.2 容器的优点1.3 Docker与虚拟机的区别1.4 Docker核心组成1.4.1 镜像1.4.2 容器1.4.3 仓库 1.5 容器在内核中支持2种重要技术1.5.1 linux六大namespace(命名空间) 1.6 Docker的使用场景 2. Docker的部署2.1 前…...
JSR303数据校验
Component //注册bean ConfigurationProperties(prefix "person") Validated //数据校验 public class Person { Email(message"邮箱格式错误") //name必须是邮箱格式 private String name; } 使用数据校验,可以保证数据的正确性!…...
JavaCV + FFmpeg 播放音视频
JavaCV FFmpeg 播放音视频 1、导入JavaCV库1.1 使用ffmpeg必要库1.2 简单FFmpeg命令 待续~~~~ FFmpeg documentation bytedeco/javacv - GitHub 1、导入JavaCV库 gradle下面这种会导入javacv-platform所有包,非常耗时:https://repo.maven.apache.org/…...
万能DIY预约小程序源码系统 上门预约服务小程序搭建 适用于各种预约场景 自由DIY功能模块
在这个快节奏的时代,预约服务已经成为了我们日常生活的一部分。从看病挂号到餐厅预订,从美发美容到家政服务,预约已经深入到了各个领域。然而,传统的预约方式存在着许多不便,如电话预约、在线填写表格等,不…...
边缘检测算法
边缘检测算法是在数字图像处理中常用的一种技术,用于检测图像中物体边缘的位置。以下是几种常见的边缘检测算法: Sobel算子:Sobel算子是一种基于梯度的算法,通过计算图像的水平和垂直方向的梯度值,并将其组合起来得到边…...
数据结构与算法-树
树 🎈1.树和二叉树🎈2.树🔭2.1树的定义🔭2.2树的4种表示方法🔭2.3树的基本术语🔭2.4树的抽象数据类型定义 🎈3.二叉树🔭3.1二叉树的定义🔭3.2二叉树的抽象数据类型定义&a…...
【Bug排查】Uncaught (in promise) Error: Infinite redirect in navigation guard
记一次Bug排查 今日在做尚硅谷的商品甄选项目时,遇到无法登录的问题:报错Uncaught (in promise) Error: Infinite redirect in navigation guard 一开始我去搜CSDN,都说是路由的问题,我对前端也不了解,试着改了一下&…...
ant使用第三方任务
ant提供了一个插件机制来使用第三方的任务。为了使用第三方的任务,需要做两步: 将它们的实现放在ant能找到的地方。声明任务 声明任务的几种方法: 声明一个任务:利用<taskdef name"taskname" classname"Impl…...
从‘装不上’到‘跑得飞起’:我的TensorFlow-GPU避坑实录与终极验证指南
从‘装不上’到‘跑得飞起’:我的TensorFlow-GPU避坑实录与终极验证指南 深夜两点,屏幕上第17次弹出"Could not load dynamic library cudart64_110.dll"的错误提示时,我意识到自己掉进了TensorFlow-GPU安装的"版本地狱"…...
SpringCloud Alibaba微服务链路追踪实战:Sleuth+Zipkin vs SkyWalking,我该选哪个?
SpringCloud Alibaba微服务链路追踪技术选型深度解析 技术选型的困境与破局 在微服务架构日益普及的今天,系统复杂度呈指数级增长。一次简单的用户请求可能涉及数十个微服务的协同工作,这种分布式特性给系统监控和故障排查带来了前所未有的挑战。作为技术…...
别再死记公式了!用Python手写一个反向传播,5分钟搞懂链式法则
用Python代码拆解反向传播:5分钟可视化链式法则 当我在第一次接触神经网络时,那些复杂的数学公式让我望而却步。直到有一天,我决定用Python代码亲手实现一个简单的反向传播过程,才真正理解了链式法则的精妙之处。本文将带你用不到…...
Python 列表的基本操作介绍
1、向List中添加元素的方法1.1 Python append()方法添加元素append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:listname.append(obj)其中,listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,…...
终极DLSS Swapper完全指南:3大核心功能解锁游戏性能新高度
终极DLSS Swapper完全指南:3大核心功能解锁游戏性能新高度 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper作为一款专为游戏玩家设计的开源工具,彻底改变了玩家管理NVIDIA DLSS、AM…...
【嵌入式】轻量级命令行交互实战:nr_micro_shell在资源受限MCU上的移植与优化
1. 为什么选择nr_micro_shell? 在嵌入式开发中,调试和维护是绕不开的环节。想象一下,当你需要实时查看某个传感器的数值,或者临时调整某个参数时,如果每次都要重新烧录程序,那效率得多低啊!这时…...
科学解码风水禁忌:卧室厨房的5个致命错误布局(含实测数据)
现代家居风水实证:5个科学验证的布局禁忌与改造方案 引言:当传统智慧遇上现代科技 清晨的阳光透过窗帘缝隙洒进卧室,你是否想过床头朝向会影响整夜的睡眠质量?开放式厨房里飘散的油烟,除了困扰呼吸道,还可能…...
全能资源网站:咖喱君的资源库
分享一个涵盖学习、软件、影音、AI 等全场景资源的免费宝藏网站,帮你一站式解决绝大多数资源需求。——咖喱君的资源库(https://link3.cc/galijun)...
大众点评爬虫终极指南:3步搞定餐饮数据采集与动态字体破解
大众点评爬虫终极指南:3步搞定餐饮数据采集与动态字体破解 【免费下载链接】dianping_spider 大众点评爬虫(全站可爬,解决动态字体加密,非OCR)。持续更新 项目地址: https://gitcode.com/gh_mirrors/di/dianping_spi…...
别再到处找安装包了!华为eNSP模拟器最新版(附VirtualBox、WinPcap)保姆级安装配置指南
华为eNSP模拟器全栈安装指南:从零避坑到高效组网 在数字化转型浪潮中,网络技术人才的实战能力成为核心竞争力。华为eNSP作为业界公认的企业级网络仿真平台,能完美复现真实设备操作环境,却让不少学习者在安装阶段就遭遇"出师未…...
