Mybatis-Plus
新建个项目
引入lombok devtools web mysql驱动
pom.xml引入mybatis-plus依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true spring.datasource.username=root spring.datasource.password=123456#指定实体包名 mybatis-plus.type-aliases-package=com.example.mybatisplus.pojo #指定.xml路径 mybatis-plus.mapper-locations=classpath:/mapper/*.xml #开启驼峰命名 mybatis-plus.configuration.map-underscore-to-camel-case=true#Spring 框架自带的日志框架(Spring Framework Logging) logging.level.com.example.mybatisplus=debug
参数的解释:
serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
是 MySQL 数据库连接字符串中的一组参数,用于指定连接 MySQL 数据库时使用的时区、字符编码、是否启用自动重连、是否允许多个查询等选项。具体含义如下:
serverTimezone=GMT%2B8
:指定 MySQL 服务器所在时区为 GMT+8,即东八区。如果不指定该参数,可能会导致与数据库的时间相关操作出现错误。useUnicode=true
:指定连接时使用 Unicode 字符编码。这样可以确保在传输和处理字符数据时不会出现乱码问题。characterEncoding=utf8
:指定字符编码为 UTF-8。UTF-8 是一种通用的字符编码方式,支持多种语言和字符集,可以确保在处理不同语言的字符数据时不会出现乱码问题。autoReconnect=true
:指定在连接中断时自动尝试重新连接到 MySQL 数据库。这样可以确保在数据库出现连接异常或断开连接时,应用程序可以自动重连并继续工作。allowMultiQueries=true
:指定是否允许在一条 SQL 语句中执行多个查询。这样可以减少应用程序与数据库之间的网络通信次数,提高查询效率。但同时也存在一定的安全风险,可能会导致 SQL 注入等问题。
这些参数可以在 MySQL 数据库连接字符串中按照 URL 参数的方式进行指定,以 key=value
的形式出现,并使用 &
进行分隔。
注意:useAffectedRows=true 看情况配置
useAffectedRows=true
是 MySQL JDBC 驱动程序的一个配置参数,用于指定在执行 UPDATE、INSERT、DELETE 等更新操作时,返回的是受影响的行数还是匹配的行数。具体含义如下:
- 当
useAffectedRows=false
(默认值)时,返回的是匹配的行数,即查询条件匹配的所有记录的总数。 - 当
useAffectedRows=true
时,返回的是受影响的行数,即执行更新操作后,实际受到影响的记录的总数。
在一般情况下,应该使用默认值 false
。但在某些特殊情况下,可能需要使用 true
,比如当更新操作可能影响多个表或多个行时,或者在分布式系统中使用乐观锁时。
新建个库用于测试
新建张用户表用于测试 主键自增
插入几条数据
insert into t_user values(null,'哈哈','123','2022-03-04'),(null,'呵呵','123','2022-05-06')
注意扫描的mapper文件路径和你自己的对应
mybatis-plus依赖是包含mybatis的
先加几个类
以上是用Mybatis实现的一些基本增删改查(苛刻一点讲,不够标准化),部分需要用postman测试
下面测试用Mybatis-plus
这个BaseMapper里所有方法都可以直接使用
这个时候需要注意一点,直接这样查会报错
实体类和数据库表名不一样 加个@TableName 假如你表名和数据库一样,不加也行 不用怀疑 测试过
列名因为在application.properties里配置了自动转驼峰 因此没有问题,假如说,我application.properties里将自动转驼峰去掉
查询时候居然也可以 本以为可以用下@Column注解
测试时候发现会自动转驼峰 只要不设置为false 如果设置为false列名不同报错
但是如果不设置自动转驼峰,也可以自动转 可能是版本原因 毕竟配置相关能免则免了
mybatis-plus.configuration.map-underscore-to-camel-case=false
试下插入方法
报错了,看样子
很明显这个值超过了int最大值 改成bigint
实体类id 改成Long
这里还是没有用@Column注解 照样可以插入 看样子配置了自动转驼峰,即使不配置,只要转驼峰不是false,都用不着@Column了 这个还是看具体版本
注意下面,我没在实体类上加其他注解,光加了个@TableName("t_user")来做表映射
可以看出,Mybatis-plus插入时候默认用了雪花算法,而且自动生成了主键(主键是插入前就自动生成了,就是说不添加@TableId 是默认用雪花算法,生成之后插入,而用了@TableId(type=Idtype.AUTO)则会递增之后返回),而且我们也不需要再额外去配置返回主键了(这个很重要,自己感觉很重要,记得有次看源码debug到雪花算法是插入前生成的,那么输出user时候id有值是正常的,但是加了@TableId(type=Idtype.AUTO)是根据插入之后数据库生成的id值来进行主键返回的) 不知道对不对 猜的
下面关于@TableId注解,用来设置生成主键的策略
新建张表 注意id自增递增
mybatis-plus如果没有指定@TableId生成策略的话,默认用的雪花算法,为什么叫雪花算法我也不知道,记得N年前老师这么教的.........雪花好记
其他的哪些主键生成策略,可以自己尝试,UUID那很明显了不是
这里我故意将userName 随便改了下
驼峰不行了 这个时候用@TableField 别用@Column.......用一次报错一次.
当然此时测试时候前端传过来的时usersname 这样即使胡乱写 不是驼峰 也可以转换 但是没必要,没人这么无聊吧......知道就好,驼峰照开, 如果真的某种情况下,不想用驼峰对照,那么用
@TableField来对应字段即可 我这边还是改回userName 不然怪怪的
改日继续
相关文章:

Mybatis-Plus
新建个项目 引入lombok devtools web mysql驱动 pom.xml引入mybatis-plus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency> sp…...

yolov8行人识别教程(2023年毕业设计+源码)
yolov8识别视频直接上YOLOv8的结构图吧,小伙伴们可以直接和YOLOv5进行对比,看看能找到或者猜到有什么不同的地方? Backbone:使用的依旧是CSP的思想,不过YOLOv5中的C3模块被替换成了C2f模块,实现了进一步的轻…...

CAD指令框找不到了怎么调出来?CAD指令框调出方法
CAD制图过程中,为了提高设计师的绘图效率,经常会用到各种CAD命令快捷键,可是CAD指令框突然不见了,这就让人很头疼了。CAD指令框找不到了怎么调出来呢?本节内容小编以浩辰CAD软件为例来给大家分享一下CAD指令框调出方法…...

一般用哪些工具做大数据可视化分析?
做数据分析这些年来,从刚开始的死磕excel,到现在成为数据分析行业的偷懒大户,使用过的工具还真不少! 这篇分享一些我在可视化工具上的使用心得,由简单到复杂,按照可视化类型一共分为纯统计图表类、GIS地图…...

Python每日一练(20230308)
目录 1. Excel表列名称 ★ 2. 同构字符串 ★★ 3. 分割回文串 II ★★★ 🌟 每日一练刷题专栏 C/C 每日一练 专栏 Python 每日一练 专栏 1. Excel表列名称 给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。 例如࿱…...

jvm之堆解读
堆(Heap)的核心概述 堆针对一个JVM进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区…...

重构·改善既有代码的设计.02
前言之前在《重构改善既有代码的设计.01》中初步了解了重构的基本前提,基础原则等入门知识。今天我们继续第二更......识别代码的坏味道Duplicated Code 重复代码。最单纯的Duplicated Code就是“同一个类中含有相同的表达式”或“两个互为兄弟的子类内含有相同表达…...
脑电信号处理总成
目录一. EEG(脑电图)1.1 脑波1.2 伪迹1.2.1 眼动伪迹1.2.2 肌电伪迹1.2.3 运动伪迹1.2.4 心电伪迹1.2.5 血管波伪迹1.2.6 50Hz和静电干扰1.3 伪迹去除方法1.3.1 避免伪迹产生法1.3.2 直接移除法1.3.3 伪迹消除法一. EEG(脑电图) 1.1 脑波 脑波(英语:br…...

判断推理之图形推理
考点一动态位置变化(一)平移1.特征:图形在平面上的移动,图形本身的大小和形状不发生改变。2.方向:直线(上下、左右、斜对角线),绕圈(顺时针、逆时针)3.距离&a…...

【预告】ORACLE Unifier v22.12 虚拟机发布
引言 离ORACLE Primavera Unifier 最新系统 v22.12已过去了3个多月,应盆友需要,也为方便大家体验,我近日将构建最新的Unifier的虚拟环境,届时将分享给大家,最终可通过VMWare vsphere (esxi) / workstation 或Oracle …...

Sql执行流程与Redo log、 Undo log、 Bin log日志文件
文章目录Sql执行流程与日志文件Sql的执行流程Redo LogBin logUndo logSql执行流程与日志文件 Sql的执行流程 mysql的内部组件结构如下图所示 连接器 与客户端建立连接,检验登录密码,分配相应权限 查询缓存 执行sql语句时会先从这里找一下,…...

如何提高软件测试执行力
高效的测试执行力 不管在哪个行业,高校的执行力都是不可或缺的。在软件测试行业更是这样。有些测试人员,很勤奋也很吃苦,但是可能最终不能很好的完成测试任务。究其原因就是一个测试执行力的问题。 高效执行就是有目标,有计划&…...
Open3D 计算点到平面的距离
目录 一、算法原理二、代码实现三、结果展示一、算法原理 平面外一点 ( x 1 , y 1 , z 1 ) (x_1,y_1,z_1) (x...

DDD领域驱动设计初探
DDD 强调领域模型要兼顾业务和技术两个视角。 我们怎么用一套系统化的方法,抽丝剥茧、一步一步地把需求落实到代码呢?咱们看看下面这张图,它表示了领域驱动设计中的主要流程。 领域驱动设计主要的开发流程你可以看到,在整个开发流…...

C中AES_cbc_encrypt加密对应java中的解密
前言知识: 1.AES(Advanced Encryption Standard)高级加密标准,作为分组密码(把明文分成一组一组的,每组长度相等,每次加密一组数据,直到加密完整个明文)。 2.在AES标准…...

演化算法:乌鸦搜索算法 (Crow Search Algorithm)
前言 如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。 在机器学习中,我们所要优化的问题很多时候难以求导,因此通常会采用一些演化算法(又称零…...

基于open62541的OPC UA服务器和客户端开发技术
一、OPC UA的基本概念 1、OPC(OLE for Process Control),是一个工业标准,管理这个标准的国际组织是OPC基金会; 2、OPC通信结构:是指包含一个或多个OPC客户端与服务器相互通信的集合。以下是一个简单的流程图:标准的C/S结构。 3、OPC服务器:TOPC基金会定义了四种;...

测试测开面试要知道的那些事01
列表与元组的区别列表是动态数组,它们可变且可以重设长度(改变其内部元素的个数)。元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境,这意味着我们每次使用元组时无…...

物联网毕设 -- 智能厨房监测系统(改)
前言 在家庭生活中,厨房是必不可少的,所以厨房的安全问题关乎着我们大家的生命,所以提出智能厨房监测系统,目的就是为我们减少不必要的安全问题 ⚠️⚠️(本文章仅提供思路和实现方法,并不包含代码&#x…...

macOS 13.3 Beta 3 (22E5236f)发布
系统介绍3 月 8 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.3 开发者预览版 Beta 3 更新(内部版本号:22E5236f),本次更新距离上次发布隔了 7 天。macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通话接力…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...

如何把工业通信协议转换成http websocket
1.现状 工业通信协议多数工作在边缘设备上,比如:PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发,当设备上用的是modbus从站时,采集设备数据需要开发modbus主站;当设备上用的是西门子PN协议时…...

leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...

简约商务通用宣传年终总结12套PPT模版分享
IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...

C#中用于控制自定义特性(Attribute)
我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中,Attribute(特性)是一种用于向程序元素(如类、方法、属性等)添加元数据的机制。Attr…...