mybatisX插件的使用,以及打包成配置
装mybatisX插件;
idea连接数据库;
点击mybatisx-generator,设置自己装mybatisX插件;
idea连接数据库;
点击mybatisx-generator,设置自己要的包和类;
如果要把自己的配置设置成一个自定义模板:
1、 使用idea链接数据库
要的包和类;
如果要把自己的配置设置成一个自定义模板:
一、使用idea链接数据库
二、安装mybatis-X插件
File–>Settings–>Plugins–>Marketplace,=,搜索MyBatisX–>install
三、生成代码内容
3.1 配置本地驱动包
3.2 侧边栏打开数据库,选择要生成代码的表格,在表名上右击,点击MybatisX-Generator
3.3 设置类名生成规则及生成代码的路径
路径的生成按照物理路径是: module path --》 base path --》base package
(这里注意如果想实体类带Entity后缀,在extra class suffix一栏填上Entity即可)
3.4 生成代码
template:
- custom-model-swagger:生成实体文件,属性上会自动增加swagger的相关注解,
- default-all:生成实体文件、xml文件和dao层接口文件, 默认会生成常用的增删改查到的方法
- mybatis-plus3:生成实体文件、xml文件、dao层接口文件、 service层接口文件和service层接口实现文件
3.4.1 mybatis-plus3案例
3.4.2 效果代码
实体类:
mapper接口:
service层:
xml文件:
四、配置文件
4.1 默认的mybatis-plus3模板
模板文件包含:
4.1.1 .meta.xml以及xx.ftl概览
从上图中可以看到,此模板生成了四个文件,加上我们的entity,一共是5个。
serviceInterface.ftl:
serviceImpl.ftl:
package ${baseInfo.packageName};import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${tableClass.fullClassName};
import ${serviceInterface.packageName}.${serviceInterface.fileName};
import ${mapperInterface.packageName}.${mapperInterface.fileName};
<#if baseService??&&baseService!="">
import ${baseService};<#list baseService?split(".") as simpleName><#if !simpleName_has_next><#assign serviceSimpleName>${simpleName}</#assign></#if></#list>
</#if>
import org.springframework.stereotype.Service;/**
* @author ${author!}
* @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Service实现
* @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
*/
@Service
public class ${baseInfo.fileName} extends ServiceImpl<${mapperInterface.fileName}, ${tableClass.shortClassName}>implements ${serviceInterface.fileName}{}
mapperInterface.ftl:
package ${mapperInterface.packageName};import ${tableClass.fullClassName};
<#if tableClass.pkFields??><#list tableClass.pkFields as field><#assign pkName>${field.shortTypeName}</#assign></#list>
</#if>
import com.baomidou.mybatisplus.core.mapper.BaseMapper;/**
* @author ${author!}
* @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Mapper
* @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
* @Entity ${tableClass.fullClassName}
*/
public interface ${mapperInterface.fileName} extends BaseMapper<${tableClass.shortClassName}> {}
mapperXml.ftl:
4.2 我的mybatis-plus3模板
要点:把service改为repository,作为仓储层,而不是业务层。
.meta.xml:
<?xml version="1.0" encoding="utf-8" ?>
<templates><template><property name="configName" value="repositoryInterface"/><property name="configFile" value="repositoryInterface.ftl"/><property name="fileName" value="${domain.fileName}Repository"/><property name="suffix" value=".java"/><property name="packageName" value="${domain.basePackage}.domain.gateway.db"/><property name="encoding" value="${domain.encoding}"/><property name="basePath" value="${domain.basePath}"/></template><template><property name="configName" value="repositoryImpl"/><property name="configFile" value="repositoryImpl.ftl"/><property name="fileName" value="${domain.fileName}RepositoryImpl"/><property name="suffix" value=".java"/><property name="packageName" value="${domain.basePackage}.infrastructure.repository"/><property name="encoding" value="${domain.encoding}"/><property name="basePath" value="${domain.basePath}"/></template><template><property name="configName" value="mapperInterface"/><property name="configFile" value="mapperInterface.ftl"/><property name="fileName" value="${domain.fileName}Mapper"/><property name="suffix" value=".java"/><property name="packageName" value="${domain.basePackage}.infrastructure.repository.mybatis.mapper"/><property name="encoding" value="${domain.encoding}"/><property name="basePath" value="${domain.basePath}"/></template><template><property name="configName" value="mapperXml"/><property name="configFile" value="mapperXml.ftl"/><property name="fileName" value="${domain.fileName}Mapper"/><property name="suffix" value=".xml"/><property name="packageName" value="mapper"/><property name="encoding" value="${domain.encoding}"/><property name="basePath" value="src/main/resources"/></template>
</templates>
mapperInterface.ftl:
略,和4.1相同;
mapperXml.ftl:
略,和4.1相同;
repositoryInterface.ftl:
package ${baseInfo.packageName};import ${tableClass.fullClassName};
<#if baseService??&&baseService!="">
import ${baseService};<#list baseService?split(".") as simpleName><#if !simpleName_has_next><#assign serviceSimpleName>${simpleName}</#assign></#if></#list>
</#if>
import com.baomidou.mybatisplus.extension.service.IService;/**
* @author ${author!}
* @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Service
* @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
*/
public interface ${baseInfo.fileName} extends IService<${tableClass.shortClassName}> {}
其实和4.1也是一样的,不同的是.meta.xml里的参数变了:
repositoryImpl.ftl:
package ${baseInfo.packageName};import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import ${tableClass.fullClassName};
import ${repositoryInterface.packageName}.${repositoryInterface.fileName};
import ${mapperInterface.packageName}.${mapperInterface.fileName};
<#if baseService??&&baseService!="">
import ${baseService};<#list baseService?split(".") as simpleName><#if !simpleName_has_next><#assign serviceSimpleName>${simpleName}</#assign></#if></#list>
</#if>
import org.springframework.stereotype.Service;/**
* @author ${author!}
* @description 针对表【${tableClass.tableName}<#if tableClass.remark?has_content>(${tableClass.remark!})</#if>】的数据库操作Service实现
* @createDate ${.now?string('yyyy-MM-dd HH:mm:ss')}
*/
@Service
public class ${baseInfo.fileName} extends ServiceImpl<${mapperInterface.fileName}, ${tableClass.shortClassName}> implements ${repositoryInterface.fileName}{}
同上,和4.1也是一样的,不同的两点:
- 是.meta.xml里的参数变了;
- import里的导入类全路径引用变了;
五、打包配置,一键给其他人复用
以我的【mybatis-plus3-20230824】为例:
其他人把压缩包解压到对应的位置即可。
六、我的模板
等待补充。
相关文章:

mybatisX插件的使用,以及打包成配置
装mybatisX插件; idea连接数据库; 点击mybatisx-generator,设置自己装mybatisX插件; idea连接数据库; 点击mybatisx-generator,设置自己要的包和类; 如果要把自己的配置设置成一个自定义模板&a…...

【初阶数据结构】线性表之单链表
文章目录 前言 一、单链表的概念与结构 1.概念 2.结点 3.性质 二、实现单链表 1.结构的定义 2.链表的打印和结点的申请 3.单链表的尾插和头插 4.单链表的尾删和头删 5.单链表的查找 6.指定位置之前插入数据和指定位置之后插入数据 7.删除pos结点和删除pos之后的结…...

CentOS7通过yum安装JDK
CentOS7通过yum安装JDK 1、卸载自带的JDK 查看已安装的JDK rpm -qa | grep java删除已安装的JDK yum -y remove java-1.8.0-openjdk*验证是否删除成功 查不到版本信息则已删除成功 java -version2、安装JDK sudo yum install java-1.8.0-openjdk java-1.8.0-openjdk-deve…...
c# 常见的几种取整场景
软件取整,通常指的是在计算机软件中对数值进行取整操作,即将一个浮点数或小数转换为整数,同时确定如何处理小数部分。取整操作在编程和数学计算中非常常见,不同的取整方法适用于不同的场景。 常见的取整方法 向零取整(…...

数据库回滚:大祸临头时
原文地址 什么是数据库回滚? 数据库技术中,回滚是通过撤销对数据库所做的一项或多项更改,将数据库返回到先前状态的操作。它是维护数据完整性和从错误中恢复的重要机制。 什么时候需要数据库回滚? 数据库回滚在以下几个场景中很…...

【GoLang】两个字符串如何比较大小?以及字典顺序的比较规则
在 Go 语言中,字符串的比较是基于字典顺序进行的。 字典顺序的比较规则: 比较两个字符串从左到右逐个字符的Unicode码点值, 若比较结果不相等则将此结果作为字符串大小的结果, 若比较结果相等则比较下一位, 若其中一个…...

5G学习笔记之SNPN系列之UE入网和远程配置
参考:3GPP 23.501 5.30.2.10 Onboarding of UEs for SNPNs 小小协议搬运工 目录 0. NPN系列 1. 概述 2. SNPN作为ONN 2.1 DCS参与的入网主鉴权 2.2 DCS不参与的入网主鉴权 2.3 UE入网 3. PLMN作为ONN 4. 远程配置 0. NPN系列 1. NPN概述 2. NPN R18 3. 【SNPN系列】…...

C#版OpenCv常用函数大全
OpenCvSharp 是 OpenCV 的NET封装,提供了丰富的图像处理和计算机视觉功能。以下是一些常用函数及其详细说明。 1. 图像读取与显示 Cv2.ImRead 功能:读取图像文件并返回一个 Mat 对象。用法:Mat image Cv2.ImRead("path/to/image.jpg&…...

Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
Spring Boot – CrudRepository 和 JpaRepository 之间的区别 Spring Boot建立在 Spring 之上,包含 Spring 的所有功能。由于其快速的生产就绪环境,使开发人员能够直接专注于逻辑,而不必费力配置和设置,因此如今它正成为开发人员…...

蓝桥杯备考:数据结构之栈 和 stack
栈的概念以及栈的实现 栈是一种只允许在一端进行插入和删除的线性表 空栈:没有任何元素 入栈:插入元素 出栈:删除元素 栈本身就是一个线性表,我们可以写一个足够大的数组来实现栈 除此之外,我们还需要变量n来记录…...
solidity基础 -- 映射
在区块链的智能合约开发领域,Solidity 作为以太坊上最主流的编程语言之一,拥有诸多强大特性助力开发者构建复杂且高效的去中心化应用。其中,映射(Mapping)是一个极为关键的数据结构,它为合约中的数据存储与…...

Angular 11课程实践:构建高效单页应用的支持代码
本文还有配套的精品资源,点击获取 简介:Angular 11是Google支持的前端框架,适合构建复杂的单页应用(SPA)。本课程将深入介绍Angular核心特性,如组件化、依赖注入、数据绑定和路由,并且涵盖Ang…...

测试用例颗粒度说明
当我们在编写测试用例时,总是会遇到一个问题:如何确定测试用例的颗粒度?测试用例过于粗糙,可能无法全面覆盖系统的细节;而颗粒度过细,又会导致测试重复、冗余。掌握合适的颗粒度,不仅可以提高测…...

ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告
问题背景: ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告: 解决办法: 在工程里面的.vscode文件夹下,检查是否存在c_cpp_properties.json文件,如果没有可以手动创建添加。如图…...

Windows安装ES单机版设置密码
下载ES ES下载链接 我用的是7.17.26 启动前配置 解压之后打开D:\software\elasticsearch-7.17.26\bin\elasticsearch-env.bat 在elasticsearch-env.bat文件中修改jdk的路径 修改前 修改内容 if defined ES_JAVA_HOME (set JAVA"D:\software\elasticsearch-7.17.26\…...
Linux Docker
Docker 的定义 Docker 是一个开源的容器化平台,它允许开发者将应用程序及其依赖项打包成一个可移植的容器。容器是一种轻量级、独立的运行环境,与传统的虚拟机不同,容器共享主机操作系统的内核,通过隔离的文件系统、进程空间和网…...

MSE学习
MSE简介 媒体源拓展(Media Source Extensions,简称 MSE)是一个由 W3C 制定的标准,它允许 JavaScript 代码通过 AJAX 请求获取媒体数据,并将其提供给 HTML 的 <video> 或 <audio> 元素进行播放。 MSE特点…...

0-基于蚁群优化和带注意力机制的循环神经网络的新型混合算法用于解决旅行商问题(HAL science)(完)
文章目录 AbstractI INTRODUCTIONII 旅行商问题的正式描述III STATE OF THE ARTIV 使用的混合化技术原理4.1 Principle of ACO4.2具有注意机制的自动编码器模型V 蚁群优化与具有注意机制的神经网络的混合5.1 基本思想5.2 解决步骤5.2.1 模型训练5.2.2 寻找解VI EXPERIMENTS6.1 …...

MIUI显示/隐藏5G开关的方法,信号弱时开启手机Wifi通话方法
5G网速虽快,手机功耗也大。 1.取消MIUI强制的5G,手动设置4G的方法! 【小米澎湃OS, Xiaomi HyperOS显示/隐藏5G开关的方法】 1.1.小米MIUI系统升级后,被强制连5G,手动设置开关被隐藏,如下图: 1…...

挑战20天刷完leecode100
2025.1.5 二分查找 1 搜索插入位置 就是简单的二分查找 注意开闭就行 这里有一句话就是nums是升序的 如果他不是严格递增 就是有相同的数字的情况下应该怎么写? int lower_bound(vector<int>& nums, int target) {int left 0, right (int) nums.size() - 1; …...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...