如何优雅地使用Mybatis逆向工程生成类

news2025/1/17 14:01:15

文/朱季谦

1.环境:SpringBoot

2.在pom.xml文件里引入相关依赖:

 1 <plugin>
 2    <groupId>org.mybatis.generator</groupId>
 3    <artifactId>mybatis-generator-maven-plugin</artifactId>
 4    <version>1.3.6</version>
 5    <configuration>
 6       <verbose>true</verbose>
 7       <overwrite>true</overwrite>
 8    </configuration>
 9    <dependencies>
10       <dependency>
11          <groupId>mysql</groupId>
12          <artifactId>mysql-connector-java</artifactId>
13          <version>5.1.36</version>
14       </dependency>
15    </dependencies>
16 
17 </plugin>
18 
19 
20 
21 <dependency>
22    <groupId>org.mybatis.generator</groupId>
23    <artifactId>mybatis-generator-core</artifactId>
24    <version>1.3.6</version>
25 </dependency>

3.创建generatorConfig.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <!DOCTYPE generatorConfiguration
 4         PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 5         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 6 
 7 <generatorConfiguration>
 8     <context id="testTables" targetRuntime="MyBatis3">
 9         <commentGenerator>
10             <!-- 是否去除自动生成的注释 true:是 : false:否 -->
11             <property name="suppressAllComments" value="true" />
12         </commentGenerator>
13         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
14         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
15                         connectionURL="jdbc:mysql://127.0.0.1:3306/example?useUnicode=true&amp;characterEncoding=utf8"
16                         userId="root"
17                         password="123456">
18         </jdbcConnection>
19 
20         <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL
21             和 NUMERIC 类型解析为java.math.BigDecimal -->
22         <javaTypeResolver>
23             <property name="forceBigDecimals" value="false" />
24         </javaTypeResolver>
25 
26         <!-- targetProject:生成PO类的位置 -->
27         <javaModelGenerator targetPackage="com.zhu.text.domain"
28                             targetProject=".\src\main\java">
29             <!-- enableSubPackages:是否让schema作为包的后缀 -->
30             <property name="enableSubPackages" value="false" />
31             <!-- 从数据库返回的值被清理前后的空格 -->
32             <property name="trimStrings" value="true" />
33         </javaModelGenerator>
34         <!-- targetProject:mapper映射文件生成的位置 -->
35         <sqlMapGenerator targetPackage="com.zhu.text.dao"
36                          targetProject=".\src\main\java">
37             <!-- enableSubPackages:是否让schema作为包的后缀 -->
38             <property name="enableSubPackages" value="false" />
39         </sqlMapGenerator>
40         <!-- targetPackage:mapper接口生成的位置 -->
41         <javaClientGenerator type="XMLMAPPER"
42                              targetPackage="com.zhu.text.dao" targetProject=".\src\main\java">
43             <!-- enableSubPackages:是否让schema作为包的后缀 -->
44             <property name="enableSubPackages" value="false" />
45         </javaClientGenerator>
46         <!-- 指定数据库表 -->
47         <table tableName="text_product" domainObjectName="Product"></table>
48     </context>
49 </generatorConfiguration>

4.创建main类

 1 import java.io.File;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 import org.mybatis.generator.api.MyBatisGenerator;
 5 import org.mybatis.generator.config.Configuration;
 6 import org.mybatis.generator.config.xml.ConfigurationParser;
 7 import org.mybatis.generator.internal.DefaultShellCallback;
 8 
 9 public class MBGenerator {
10     public static void main(String[] args) throws Exception{
11 
12         List<String> warnings = new ArrayList<String>();
13         boolean overwrite = true;
14         File configFile = new File("例:generatorConfig.xml的存放路径");
15         ConfigurationParser cp = new ConfigurationParser(warnings);
16         Configuration config = cp.parseConfiguration(configFile);
17         DefaultShellCallback callback = new DefaultShellCallback(overwrite);
18         MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
19         myBatisGenerator.generate(null);
20     }
21 }

5.执行maven方法里的mybatis-generator:generate

clipboard

完成以上步骤,就可以自定生成需要的xml文件与类以及对应的java bean类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1299137.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(五)五种最新算法(SWO、COA、LSO、GRO、LO)求解无人机路径规划MATLAB

一、五种算法&#xff08;SWO、COA、LSO、GRO、LO&#xff09;简介 1、蜘蛛蜂优化算法SWO 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该算法模型雌性蜘蛛蜂的狩猎、筑巢和交配行为&…

软件工程之需求分析

一、对需求的基本认识 1.需求分析简介 (1)什么是需求 用户需求&#xff1a;由用户提出。原始的用户需求通常是不能直接做成产品的&#xff0c;需要对其进行分析提炼&#xff0c;最终形成产品需求。 产品需求&#xff1a;产品经理针对用户需求提出的解决方案。 (2)为什么要…

数据仓库工具Hive

1. 请解释Hive是什么&#xff0c;它的主要用途是什么&#xff1f; Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和分析大规模结构化数据。它可以将结构化的数据文件映射为一张数据库表&#xff0c;并提供类似SQL的查询功能&#xff0c;将SQL语句转换为MapRedu…

排序:非递归的快排

目录 非递归的快排&#xff1a; 代码分析&#xff1a; 代码演示&#xff1a; 非递归的快排&#xff1a; 众所周知&#xff0c;递归变成非递归&#xff0c;而如果还想具有递归的功能&#xff0c;那么递归的那部分则需要变成循环来实现。 而再我们的排序中&#xff0c;我们可…

数字逻辑电路基础-组合逻辑电路之4位先行进位加法器

文章目录 一、问题描述二、verilog源码三、仿真结果一、问题描述 前面介绍4位行波进位全加器(串行加法器)的原理及verilog实现,但是它是一种串行加法器,当位数多时,比如32位的二进制数相加,由于进位逐位从低位向高位传递,这会造成相当大的延迟。对于需要快速加法运算的…

LeNet

概念 代码 model import torch.nn as nn import torch.nn.functional as Fclass LeNet(nn.Module):def __init__(self):super(LeNet, self).__init__() # super()继承父类的构造函数self.conv1 nn.Conv2d(3, 16, 5)self.pool1 nn.MaxPool2d(2, 2)self.conv2 nn.Conv2d(16…

Three.js+pcl.js 实现Web端的点云处理+显示

1 功能实现 在前面我们实现了PCD的加载器的基础上&#xff0c;这次将加上 pcl.js —— 著名的PCL库的web版本&#xff0c;详情见https://pcl.js.org/&#xff0c;来处理我们加载上去的点云。 具体实现如下&#xff1a; 用户可以通过每个板块的右上角进行处理前 / 后的切换&am…

php使用vue.js实现省市区三级联动

参考gpt 有问题问gpt 实现效果 现省市区三级联动的方法可以使用PHP结合AJAX异步请求来实现。下面是一个简单的示例代码&#xff1a; HTML部分&#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>省市区三级联动…

vue-seamless-scroll无缝滚动组件

首先找到他的官网vue-seamless-scroll 1.进行安装依赖 vue2 npm install vue-seamless-scroll --save vue3 npm install vue3-seamless-scroll --save 2.全局引入 vue2 import scroll from vue-seamless-scroll Vue.use(scroll) vue3 import vue3SeamlessScroll fro…

JVM 内存分析工具 Memory Analyzer Tool(MAT)的深度讲解

目录 一. 前言 二. MAT 使用场景及主要解决问题 三. MAT 基础概念 3.1. Heap Dump 3.2. Shallow Heap 3.3. Retained Set 3.4. Retained Heap 3.5. Dominator Tree 3.6. OQL 3.7. references 四. MAT 功能概述 4.1. 内存分布 4.2. 对象间依赖 4.3. 对象状态 4.4…

【交流】PHP生成唯一邀请码

目录 前言&#xff1a; 1.随机生成&#xff0c;核对user表是否已存在 代码&#xff1a; 解析&#xff1a; 缺点&#xff1a; 2.建表建库&#xff0c;每次从表中随机抽取一条&#xff0c;用完时扩充 表结构 表视图 代码 解析 缺点 结论&#xff1a; 前言&#xff1a; …

【rabbitMQ】rabbitMQ的下载,安装与配置

目录 1. 下载Erland 安装步骤&#xff1a; 配置环境变量&#xff1a; 校验环境变量配置是否成功 2.下载MQ 安装步骤&#xff1a; 添加可视化插件 &#xff1a; 启动&#xff1a; 拒绝访问 1. 下载Erland 因为rabbitMQ是基于Erland,所以在安装rabbitMQ之前需要安装Erla…

距离度量(各距离含义)

欧氏距离 在n维空间中两点的真实距离&#xff0c;向量的自然长度 由于欧几里得几何学的关系称为欧氏距离 二维空间两点计算公式&#xff1a; d ( x 1 − x 2 ) 2 ( y 1 − y 2 ) 2 d \sqrt{(x_1 - x_2)^2 (y_1 - y_2)^2} d(x1​−x2​)2(y1​−y2​)2 ​ 三维空间两点计算…

7.MySQL 存储过程

目录 概述 概念&#xff1a; 特性&#xff1a; 变量 局部变量 定义方法&#xff1a; 语法1: 语法2: 用户变量 语法&#xff1a; 系统变量 全局变量 会话变量 参数传递 in out inout 流程控制 分支语句 if case 循环语句 循环控制: while while while…

Java面试遇到的一些常见题

目录 1. Java语言有几种基本类型&#xff0c;分别是什么&#xff1f; 整数类型&#xff08;Integer Types&#xff09;&#xff1a; 浮点类型&#xff08;Floating-Point Types&#xff09;&#xff1a; 字符类型&#xff08;Character Type&#xff09;&#xff1a; 布尔类…

基于Springboot的校园失物招领系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园失物招领系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…

【智能家居】七、人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

一、翔云 人工智能开放平台 API文档开发示例下载 二、编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget)libcurl库重新配置&#xff0c;编译&#xff0c;安装运行&#xff08;运行需添加动态库为环境变量&#xff09; 三、编程实现人脸识别 四、Base6…

react中使用react-konva实现画板框选内容

文章目录 一、前言1.1、API文档1.2、Github仓库 二、图形2.1、拖拽draggable2.2、图片Image2.3、变形Transformer 三、实现3.1、依赖3.2、源码3.2.1、KonvaContainer组件3.2.2、use-key-press文件 3.3、效果图 四、最后 一、前言 本文用到的react-konva是基于react封装的图形绘…

【rabbitMQ】rabbitMQ控制台模拟收发消息

目录 1.新建队列 2.交换机绑定队列 3.查看消息是否到达队列 总结&#xff1a; 1.新建队列 2.交换机绑定队列 点击amq.fonout 3.查看消息是否到达队列 总结&#xff1a; 生产者&#xff08;publisher&#xff09;发送消息&#xff0c;先到达交换机&#xff0c;再到队列&…

深度学习之全面了解预训练模型

在本专栏中&#xff0c;我们将讨论预训练模型。有很多模型可供选择&#xff0c;因此也有很多考虑事项。 这次的专栏与以往稍有不同。我要回答的问题全部源于 MathWorks 社区论坛&#xff08;ww2.mathworks.cn/matlabcentral/&#xff09;的问题。我会首先总结 MATLAB Answers …