Mybatis Update操作 返回值修改为受影响条数
到底 update 返回值代表什么呢?我们来验证一下便知道了,假设有如下一张表以及两条数据:
我们来编写一个简单的单元测试用例来验证下,首先使用 mybatis 简单的写个 mapper 进行更新操作,其中 xml 中的内容为:
数据库连接配置为:
接来下,我们来编写一个简单的单元测试来验证下: update 的返回值是不是受影响的记录的条数 ,对应的单元测试代码如下:
由单元测试代码可以得知,我们将要把数据库中两条记录的 phone 字段的值由 12345678 修改为 66666666 ,正常情况下, resultCode 将会返回 2 。因为 update 操作影响到数据库中这 2 条记录,这和我们期望 2 是相符合的。那么一切正常的情况下,这次单元测试将会通过,那么我们运行看看结果:
单元测试通过了,再查看数据库中的记录:
这说明 mybatis 的 update 更新操作返回值的确是返回受影响的行数……真的是这样吗?
我们知道,当数据库中的记录被修改之后,再次执行重复的 update 操作将不会影响到新的行数,为了验证我说的话,我们试试:
那么,按照这个逻辑:我们再次执行这个单元测试应该是, resultCode 返回的应该是 0 ,和我们的期望的数字 2 不一致,将会导致测试不通过。再次运行单元测试:
居然还是 passed ,看到这里聪明的你已经看出来了, 默认情况下,mybatis 的 update 操作返回值是记录的 matched 的条数,并不是影响的记录条数。
严格意义上来将,这并不是 mybatis 的返回值,mybatis 仅仅只是返回的数据库连接驱动(通常是 JDBC )的返回值,也就是说,如果驱动告知更新 2 条记录受影响,那么我们将得到 mybatis 的返回值就会是 2 和 mybatis 本身是没有关系的。
道理我都懂,如果我们非得要 mybatis 的 update 操作明确的返回受影响的记录条数,有没有什么办法呢?
当然是有的。
通过对 JDBC URL 显式的指定 useAffectedRows 选项,我们将可以得到受影响的记录的条数:
jdbc:mysql://jdbc.host/{jdbc.host}/jdbc.host/{jdbc.db}?useAffectedRows=true
我们对我们的数据库连接配置稍做修改,添加 useAffectedRows 字段:
此时,mybatis 的 update 操作返回的应该是受影响的条数了,我们再次运行单元测试试试看:
update 操作返回的是受影响的记录条数,我们知道为 0 和我们预期的 2 不一致,自然而然单元测试不通过。
Mybatis Update操作 返回值修改为受影响条数相关推荐
- MyBatis的update返回值改为受影响的行数
MyBatis的update返回值改为受影响的行数 一.背景: 项目中经常通过update的SQL语句进行更新数据,而在目前的框架中,mybatis是主流的框架,所以理解update的真实的返回值也显 ...
- 关于Mybatis的insert方法返回值(将返回值受影响条数改为插入后的自增主键id)
今天做ssm项目的时候有一个这样的需求--我借阅一本书然后生成一条借阅记录(借阅记录的主键是递增的"borrowNum"),然后将这条记录的主键返回,在往上查阅资料后知道,只要在对 ...
- mybatis之update返回响应条数/受影响行数(如果更新数据与原数据一致则返回0)
需求:笔者最近有一个需求是这样的,每个机柜每1分钟都会发一个心跳包,这个心跳包的数据如果和mysql数据库存在的数据一样,那么就不要更新了,直接给我返回一个0,我会根据这个0判断要不要存入这个心跳日志 ...
- Mybatis执行update,insert等语句返回的不是受影响的行数
Mybatis执行update,insert等语句返回的不是受影响的行数 在我们日常开发中,使用Mybatis框架中,经常会根据update,或者其他操作的返回值判断执行是否成功. 如: 在执行以上语 ...
- MySQL 修改时返回受影响行数为 0
刚刚在测试接口时,修改一直提示提交失败,很奇怪,之前跟移动端联调接口时,也偶尔会出现这样的问题,sql 确定没问题,怎么就提交失败呢?因为是偶尔出现的情况而且不知道怎么复现,就安慰自己说是可能有什么机 ...
- ThinkPHP6项目基操(20.实战部分 数据库操作返回值总结)
数据库操作返回值总结 0. 前言 1. Db类操作数据库 1.1 新增 1.2 更新 1.3 删除 1.3.1 单条删除 1.3.2 批量删除 1.4 查询 1.4.1 单笔记录 1.4.2 多笔记录 ...
- java通过jdbc访问mysql,update数据返回值的思考
java通过jdbc访问mysql,update数据返回值的思考 先不说那么多,把Java代码贴出来吧. public static void main(String[] args) throws I ...
- MyBatis更新语句返回值
mybatis返回值为匹配的行数,若想改为受影响行数加jdbc.url后加上 &useAffectedRows=true
- 执行update语句,返回受影响行数为0的几种情况
首先我们都很清楚执行update语句,返回的结果是受影响的行数这是要先说的, 其次本人遇到执行update语句返回0的情况有两种 1.Update的sql语句中的where条件不成立时,返回结果是0 ...
最新文章
- 密码技术应用--SM4文件加解密
- Effective Java之使类和成员的可访问性最小化(十三)
- electron增加导航按钮_Electron发布6.0 Released版本
- 《天天数学》连载08:一月八日
- 禅道程序员的10条原则--转载--为了不忘
- QSerialport多线程方法
- html5 超链接 图像映射,链接图像
- hdu -1251 统计难题(字典树水题)
- 家庭局域网_KODI超强的局域网视频播放软件
- 漏洞挖掘——实验9 SQL Injection Attack Lab
- 【雅思大作文考官范文】——第十五篇:'high salaries' essay
- python爬取胡歌相关视频弹幕,分析并制作词云
- Vue 表情输入组件,微信face表情组件
- commvault备份mysql_CommVault备份到华为云对象存储实践
- ImageSelector
- Harbor私有镜像仓库——高可用
- 怎样用万用表检查线路是短路还是接地?
- 生活 list.php,拓展学生识字空间,在生活中自主识字a href=/friend/list.php(教师中心专稿)/a...
- 【.Net实用方法总结】 整理并总结System.Data中DataRow类及其方法介绍
- 百度副总裁李硕:数字技术加持下中国劳动力成本上升是好事
热门文章
- 大班幼儿告状行为与教师教育态度和方法的研究
- 给人一杯水,自己要有一桶水;
- dns-服务器--转发设置-域控dns配置
- 【go】结合一个go开源项目分析谷歌浏览器cookie为什么不安全 附go项目导包失败怎么解决教程
- 【IPD】集成产品开发培训课程「3月4-5日」
- 共享汽车管理系统软硬件开发设计
- 从黑车到市值400亿美元,Uber在北美如何对抗政府禁令 (2)
- Android名片扫描识别系统SDK
- 基于4G的物联网税控解决方案
- 【正点原子Linux连载】 第十九章 CAN Bus 摘自【正点原子】I.MX6U嵌入式Qt开发指南V1.0.2