MyBatis Generator - 快速生成 实体类 和 映射文件
目录
一、MyBatis Generator 的使用
1.1、生成类和映射文件
1.1.1、在 pom.xml 中引入依赖
1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件
1.1.3、自动生成类 和 映射文件
1.1.4、在 Insert 标签中添加获取主键值的选项
1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解
1.1.6、配置 mybatis
1.1.7、测试
一、MyBatis Generator 的使用
1.1、生成类和映射文件
1.1.1、在 pom.xml 中引入依赖
在 properties 标签中加入版本号.
<mybatis-generator-plugin-version>1.4.1</mybatis-generator-plugin-version>
在 build => plugins 标签中加入如下配置
<!-- mybatis ⽣成器插件 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>${mybatis-generator-plugin-version}</version><executions><execution><id>Generate MyBatis Artifacts</id><phase>deploy</phase><goals><goal>generate</goal></goals></execution></executions><!-- 相关配置 --><configuration><!-- 打开⽇志 --><verbose>true</verbose><!-- 允许覆盖 --><overwrite>true</overwrite><!-- 配置⽂件路径 --><configurationFile>src/main/resources/mybatis/generatorConfig.xml</configurationFile></configuration></plugin>
上述配置中需要注意的是 “配置文件路径”,这个路径就是用来生成 实体类和映射文件 配置规则的位置.
1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件
这个文件就是用来描述生成规则的.
根据路径(src/main/resources/mybatis),在 mybatis 目录下创建 generatorConfig.xml 文件.
Ps:下述配置文件中需要修改的有 数据库连接、实体类和映射文件的路径、数据库表名
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><!-- 驱动包路径,location中路径替换成⾃⼰本地路径 --><classPathEntry location="D:\class\source\mysql-connector-java-5.1.49.jar"/><context id="DB2Tables" targetRuntime="MyBatis3"><!-- 禁⽤⾃动⽣成的注释 --><commentGenerator><property name="suppressAllComments" value="true"/><property name="suppressDate" value="true"/></commentGenerator><!-- 连接配置 --><jdbcConnection driverClass="com.mysql.jdbc.Driver"connectionURL="jdbc:mysql://127.0.0.1:3306/javanav_db?
characterEncoding=utf8&useSSL=false"userId="root"password="1111"></jdbcConnection><javaTypeResolver><!-- ⼩数统⼀转为BigDecimal --><property name="forceBigDecimals" value="false"/></javaTypeResolver><!-- 实体类⽣成位置 --><javaModelGenerator targetPackage="com.example.cyk.model"targetProject="src/main/java"><property name="enableSubPackages" value="true"/><property name="trimStrings" value="true"/></javaModelGenerator><!-- mapper.xml⽣成位置 --><sqlMapGenerator targetPackage="mapper"targetProject="src/main/resources"><property name="enableSubPackages" value="true"/></sqlMapGenerator><!-- mapper 接口⽣成位置 --><javaClientGenerator type="XMLMAPPER"targetPackage="com.example.cyk.mapper" targetProject="src/main/java"><property name="enableSubPackages" value="true"/></javaClientGenerator><!-- 配置⽣成表与实例, 只需要修改表名tableName, 与对应类名domainObjectName 即可--><table tableName="j_article" domainObjectName="Article"enableSelectByExample="false"enableDeleteByExample="false" enableDeleteByPrimaryKey="false"enableCountByExample="false"enableUpdateByExample="false"><!-- 类的属性⽤数据库中的真实字段名做为属性名, 不指定这个属性会⾃动转换 _ 为驼峰命名规则--><property name="useActualColumnNames" value="true"/></table><table tableName="j_article_reply" domainObjectName="ArticleReply"enableSelectByExample="false"enableDeleteByExample="false" enableDeleteByPrimaryKey="false"enableCountByExample="false"enableUpdateByExample="false"><property name="useActualColumnNames" value="true"/></table><table tableName="j_board" domainObjectName="Board"enableSelectByExample="false" enableDeleteByExample="false"enableDeleteByPrimaryKey="false" enableCountByExample="false"enableUpdateByExample="false"><property name="useActualColumnNames" value="true"/></table><table tableName="j_message" domainObjectName="Message"enableSelectByExample="false"enableDeleteByExample="false" enableDeleteByPrimaryKey="false"enableCountByExample="false"enableUpdateByExample="false"><property name="useActualColumnNames" value="true"/></table><table tableName="j_user" domainObjectName="User"enableSelectByExample="false" enableDeleteByExample="false"enableDeleteByPrimaryKey="false" enableCountByExample="false"enableUpdateByExample="false"><property name="useActualColumnNames" value="true"/></table></context>
</generatorConfiguration>
注意:
驱动包路径是自己本地仓库的路径
但一定注意!! 需要在非中文的目录下,因此你可以把这个驱动包拷贝出来,放到一个非中文的目录中即可.

1.1.3、自动生成类 和 映射文件
重新加载Maven项⽬,在Plugins节点下出现mybatis-generator,双击运⾏,在对应的目录下⽣成相应的类与映射⽂件:

接着你就可以看到对应的生成了

1.1.4、在 Insert 标签中添加获取主键值的选项
在生成的 xml 文件中,给每一个 insert 标签都添加以下属性:useGeneratedKeys="true" keyProperty="id"
<!-- useGeneratedKeys = true -->
<!-- keyProperty = 主键字段--> <!-- 当插⼊⼀条数据后,可以通过user.getId()获取到⾃动⽣成的Id值,如果⽅法中需要⽴即获取Id值,加⼊这个配置 -->
<insert id="insert" parameterType="com.example.cyk.model.User"
useGeneratedKeys="true" keyProperty="id" >
Ps:这个选项也可以自动生成,但是不理想(有些问题)
1.1.5、扫描配置:添加 @Mapper 注解 / 添加扫描注解
有两种方式配置扫描 Mapper 接口.
1)给每个 mapper 包下的 mapper 接口都添加 @Mapper 注解.

2)给启动类上 或者 新建一个配置类(有 @Configuration 注解)加上 @MapperScan("com.example.cyk.mapper") 注解.
1.1.6、配置 mybatis
在 yml 文件中配置
mybatis:mapper-locations: classpath:mapper/**/*Mapper.xml
1.1.7、测试
@SpringBootTest
public class TestMapper {@Autowiredprivate UserMapper userMapper;@Testpublic void select() {User user = userMapper.selectByPrimaryKey(1L);System.out.println(user);}}


相关文章:
MyBatis Generator - 快速生成 实体类 和 映射文件
目录 一、MyBatis Generator 的使用 1.1、生成类和映射文件 1.1.1、在 pom.xml 中引入依赖 1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件 1.1.3、自动生成类 和 映射文件 1.1.4、在 Insert 标签中添加获取主键值的选项 1.1.5、扫描配置…...
点击查看详情 | 网页版微信客户管理系统如何操作试用?
微信作为我们日常生活中最常用的社交应用之一,早已成为我们与朋友、家人和同事保持联系的重要工具,也是营销引流的重要平台。 通过微信营销,可以比较精准定向亲近用户。而微信的功能并没有很能满足做微信营销的人群,所以我们需要借…...
新加坡攻略
文章目录 基础信息入境行李App电信交通餐饮购物法规旅游牛车水(Chinatown)克拉码头(Clarke Quay)东海岸(East Coast)丹戎巴葛(Tanjong Pagar)滨海湾(Marina Bayÿ…...
AM@导数的应用@二阶导数的应用@函数的性态研究@函数图形的绘制
文章目录 概念称呼说明驻点极值和极值点最值极值点和最值比较曲线的凹凸性凹凸性判定定理👺例证明 凹凸性和单调性无必然关系拐点寻找拐点👺 函数图形的绘制例 概念 本文讨论导数的应用:利用导数研究函数的性态相关定理主要通过Lagrange中值定理进行推导…...
【2024秋招】2023-9-14 最右后端开发线下一面
1 自我介绍 2 计算机网络 2.1 说说你对tcp滑动窗口的理解 TCP 滑动窗口是 TCP 协议流量控制的一个重要机制。它的主要目的是确保发送方不会因为发送太多数据而使接收方不堪重负。下面我会详细地描述滑动窗口的概念: 窗口的大小: 滑动窗口的大小&#…...
uniapp无感刷新token实现过程
路漫漫其修远兮,前端道路逐渐迷茫,时隔好久好久终于想起了我还有一个小博客,最近在一直在弄uniapp,属实有被恶心到,但也至少会用了,最近实现了一个比较通用的功能,就是无感刷新token,…...
一步步掌握Java IO的奥秘:深入学习BIO、NIO,实现客户端与服务器通信
众所周知,Java IO是一个庞大的知识体系,很多人在学习的过程中会感到迷茫,甚至学得一头雾水,而我也曾有同样的困惑。因此,本文的目标是帮助大家一步一步深入学习Java IO,从BIO开始,然后引出JDK1.…...
MIT 生物信息课程
youtube链接 Regulatory Genomics (Lecture 07): 这门课程介绍了基因调控的概念,涉及到基因的开启和关闭。这是生物信息学中的一个核心概念,对于理解整个生物网络至关重要。 Deep Learning for Regulatory Genomics (Lecture 08): 在了解了基因调控的基…...
Windows下安装PyTorch(GPU版本)
PyTorch环境配置及安装 初步机器学习,这里记录下一些学习经过,之后以便于自己查看,同时欢迎各位大佬点评,本节是机器计算的一个包的安装和简单验证。 1.流程 确定自己的硬件信息-确定电脑有英伟达(NVIDIAÿ…...
力扣每日一题57:插入区间
题目描述: 给你一个 无重叠的 ,按照区间起始端点排序的区间列表。 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 示例 1: 输入&#x…...
大河弯弯:CSS 文档流与三大元素显示模式
文章目录 参考环境文档流概念三大显示模式 内联元素概念常见的内联元素宽高由内容决定 块级元素概念常见的块级元素宽度受容器影响,高度受内容影响 内联块级元素概念常见的内联块级元素折中方案 设置元素的显示模式display 属性内联元素与块级元素的切换为什么要通过…...
第六章:函数(中)
函数的参数 1.位置参数 位置参数是指函数调用时,参数的位置与函数定义中参数的位置对应,从而确定参数的值。 def fight(x,y,z):return .join((z,y,x)) fight(八神庵,打败了...
Top 10 数据恢复工具,可从iPhone 和 iPad 恢复数据
您是否正在寻找最好的 iPad 恢复软件,但不知道哪个选项最好?没有什么可担心的。本文将为您提供有关根据文件类型、设备兼容性和数据丢失原因等因素选择合适的 iPad 恢复软件的提示。此外,前 10 名提到的恢复软件是安全可靠的。 第 1 部分、iP…...
【C++程序员必修第一课】C++基础课程-14:C++ 函数(上)
1 本课主要内容: 函数是什么?函数的声明、定义和调用;函数返回值,函数参数,参数默认值函数参数不同类型的调用方式:传值、指针、数组、常量引用、引用等 2 主要知识点: 函数是什么? …...
android studio打开flutter项目报红
一、android studio打开flutter项目报红,如下图: 二、解决方法: 2.1 在这个build.gradle添加以下代码,如图: 2.2 在build.gradle最顶部添加如下代码: def localProperties new Properties() def localPr…...
julia笔记:字符和字符串
1 字符 Char类型的值代表单个字符 ca #a: ASCII/Unicode U0061 (category Ll: Letter, lowercase)typeof(c) #Char 将 Char 转换为其对应的整数值,即 Unicode 代码 cInt(c) c #97typeof(c) #Int64 将一个整数值(Unicaode)转回 Char Cha…...
组合数(递推版)的初始化
初始考虑为将第一列数和斜对角线上的数进行初始化。 橙色方块由两个绿色方块相加而来,一个为1,一个为0,所以斜对角线都为1,可以通过计算得来,不需要初始化,需要与码蹄集盒子与球 第二类Stirling数…...
Apache JMeter 安装教程
下载: 注意事项:使用JMeter前需要配置JDK环境 下载地址 下载安装以后,打开安装的bin目录 D:\software\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin,找到jmeter.bat,双击打开 打开后的样子 语言设置: 1…...
【unity小技巧】实现无限滚动视图和类似CSGO的开箱抽奖功能及Content Size Fitter组件的使用介绍
文章目录 一篇一句前言素材一、无限滚动视图1. 绘制视图2. Content Size Fitter是布局控件(1)在文本框中使用(2)控制Scroll View(Scroll Rect组件)控件下Content的大小 3. 控制视图无限滚动4. 向右拉无限滚动5. 修复滚动视图一卡一…...
Mybatis的SqlRunner执行流程
Mybatis的SqlRunner执行流程 SqlRunner exec new SqlRunner(connection); Map<String, Object> row exec.selectOne("SELECT * FROM PRODUCT WHERE PRODUCTID ?", "FI-SW-01");connection.close();assertEquals("FI-SW-01", row.ge…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
