mysql执行一句update语句,当修改内容与原数据一致时,mysql本身返回的 受影响行数为0 ,在 控制台或者 客户端如navicat中都可看到
但jdbc/mybatis 返回的却是1,返回的是sql语句的匹配行数。
oracle不管从哪查都是返回1条记录被更新。
但是针对标准SQL,不涉及具体数据库,update t_order set order_mark = 2 where order_id=1555肯定是会操作一条记录,所以你可以理解通过jdbc执行update返回的是操作记录数,而不是影响记录数
数据库是mysql使用spring,mbatis更新数据时如果数据前后相同,会返回1
在使用客户端时,如果数据相同,返回值为0
返回不一样,不知道为什么会是这样?
找到原因了
Found MySQL specific workaround. If someone is curious - useAffectedRows option for jdbc url, e.g.
jdbc:mysql://${jdbc.host}/${jdbc.db}?useAffectedRows=true
useAffectedRows的含义 :是否用受影响的行数替代查找到的行数来返回数据
JDBC默认返回的是符合的行数Rows matched, 如果想返回修改过( Changed)的行数 ,需要使用useAffectedRows参数
其他常见常用参数:
UsePerformanceMonitor,userperfmon, perfmon:是否启用性能监视,默认 false
IgnorePrepare: 是否忽略 Prepare() 调用,默认 true
UseProcedureBodies,procedure bodies:是否检查存储过程体、参数的有效性,默认 true
AutoEnlist: 是否自动使用活动的连接,默认 true
TreatTinyAsBoolean:是否将 TINYINT(1) 列视为布尔型,默认 true
AllowUserVariables:是否允许 SQL 中出现用户变量,默认 false
FunctionsReturnString:所有服务器函数是否按返回字符串处理,默认 false
UseAffectedRows:是否用受影响的行数替代查找到的行数来返回数据,默认 false
Keepalive: 保持 TCP 连接的秒数,默认0,不保持。
ConnectionLifeTime:连接被销毁前在连接池中保持的最少时间(秒)。默认 0
Pooling: 是否使用线程池,默认 true
MinimumPoolSize, min pool size:线程池中允许的最少线程数,默认 0
MaximumPoolSize,max pool size:线程池中允许的最多线程数,默认 100
ConnectionReset:连接过期后是否自动复位,默认 false
CharacterSet, charset:向服务器请求连接所使用的字符集,默认:无
相关推荐
因此,如果你只想更新某些字段,而其他字段保持不变,你需要确保`**kwargs`包含了所有需要更新的字段。 - 这两个方法都可能触发数据库的读写操作,因此在高并发环境下应谨慎使用,以防止竞态条件和其他并发问题。 ...
触发器是一种特殊的存储过程,它在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器常用于实现业务规则、数据验证和审计功能。例如,当向一个表中插入新数据时,触发器可以检查新数据是否满足...
5. **触发器理解**:触发器是一种特殊的存储过程,当特定的数据库操作(如DML:INSERT, UPDATE, DELETE)发生时自动执行。它们不需要显式调用,且由SQL语句组成,但并非在运行时都需要编译,因为存储过程在创建时...
简单Case函数通常用来将某个字段的值与一系列特定值进行比较,并返回与之匹配的第一个值。其语法结构为: ```sql CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_...
- **执行非查询SQL**:对于无返回值的SQL(如INSERT、UPDATE、DELETE),使用ExecSQL方法执行,其返回值表示受影响的行数。 - **关闭数据集**:执行完操作后,记得使用Close方法关闭数据集,释放资源。 2. **基本...
17. 移动图片框时,其上的控件位置相对不变,Left和Top属性值保持一致。 18. IE是Internet Explorer的缩写,是曾经流行的网页浏览器。 19. WWW浏览器使用的应用协议是HTTP(超文本传输协议)。 20. 微机总线由...
27. 修改表间关系:在数据库设计中,可以更改关联字段、删除或创建新关系,但在关系窗口中删除关系时,应注意不要直接删除关联的字段,以免破坏数据完整性。 这些知识点涵盖了计算机基础、数据库管理、编程语法、...
在SQL Server 2005的`book`表中,`bookID`字段最适合作为主键,因为它通常是一个唯一的、不变的标识符,而其他字段如`title`、`pDate`和`author`可能不是唯一的。 这些是SQL Server中关于数据完整性、数据库结构、...
8. **表的操作**:在数据库中,如果希望某些字段的位置不变,可以设置字段冻结,而不是排序、筛选或隐藏。 9. **逻辑运算符优先级**:逻辑表达式的计算优先顺序从高到低是括号、NOT、AND、OR。 10. **排序算法**:...
在实体类中定义时间字段时,可以使用`@JsonFormat`注解来指定日期格式化规则。 **示例**: ```java @Data public class User { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date...
- 如果需要在一个较长的时间段内保持数据库连接状态不变,推荐使用 `SetTransObject()` 来减少数据库连接的开销。 #### 三、数据检索(Retrieve) - **语法**: - `dw_control.Retrieve()` - **说明**: - 此...
对于查询,可能需要设置SqlCommand的返回值类型为`SqlDataReader`或`ExecuteScalar`,并根据需求读取结果。 在删除操作中,通常会有一个名为`usp_DeleteRecord`的存储过程,它接受主键作为参数,删除对应记录。更新...
- 当变量表示表中的单个字段时,应使用相应的数据类型。 - 示例:`DECLARE v_salary NUMBER;` **2.2.4 常量** - 使用`CONSTANT`关键字声明不会更改的值。 - 示例:`CONSTANT PI CONSTANT NUMBER := 3.14159;` **...
- **MySQL触发器**:用于在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行一系列操作。触发器可以用来维护数据的一致性、完整性等。 - **MySQL分页**:使用`LIMIT`关键字实现。例如:`SELECT * FROM ...
例如,如果需要调整产品价格,可以直接使用 SQL 的 UPDATE 语句来完成,而无需逐条记录进行修改。 ### 19. Java 中的鼠标事件监听器 - **知识点概述**:处理鼠标移动事件的监听器。 - **详细解释**:在 Java 中,...
1.7 UPDATE语句 17 1.8 DELETE语句 20 1.9 MERGE语句 22 1.10 小结 24 第2章 SQL执行 25 2.1 Oracle架构基础 25 2.2 SGA-共享池 27 2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 ...
- **ActionServlet处理返回值**:`ActionServlet`根据`ActionForward`对象的指示,将控制权交给相应的视图组件(如JSP页面),最终响应给客户端。 **2. Struts的工作流程分解** 当Web应用程序采用了Struts框架后,...