zoukankan      html  css  js  c++  java
  • mybatis 中的 update 返回值

    摘自:https://www.jianshu.com/p/80270b93082a

    如果定义一个如下的update函数,那么这个函数的返回值到底是啥意思呢?是受影响的行数吗?

    验证之前我们先看看数据库中的数据记录。总共两条数据记录!

    数据库链接配置为:

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssm
    jdbc.username=root
    jdbc.password=123456
    

    下面看看我们的单元测试类。

    我们根据 ID 获取记录,然把用户名由 root 改为 root001。如果说返回值是影响的行数的话,那么应该返回 1.跟我们的预期结果 1 是相符的。单元测试会通过。

    单元测试通过,我们看看数据库中的记录有没有变化。

    看起来貌似没有任何问题。单元测试通过,数据库的确是只有一条记录更改了。这说明 mybatis 的 update 操作返回值的确是受影响的行数。

    真的是这样吗

    我们知道当数据库中的记录被修改之后,我们在次执行相同的 update 语句将不会影响到数据记录行数。

    按照这个逻辑来讲的话,在此执行此单元测试,返回值应该为 0,跟我们的预期值 1 不同,单元测试应该不通过。再次运行单元测试:

    我去,单元测试居然神奇般的通过了。。。请注意看,我们在命令行执行 update 语句那张图,返回的 matched 数量为 1。所以默认情况下,mybatis 的 update 操作的返回值是 matched 的记录数,并不是受影响的记录数。

    那么有没有办法让 mybatis 的 update 操作的返回值是受影响的行数呢。因为我们业务逻辑中有时会根据这个返回值做业务判断。答案当然是有的。
    修改数据库链接配置为:增加了 useAffectedRows 字段信息。

    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/ssm?useAffectedRows=true
    jdbc.username=root
    jdbc.password=123456
    

     再次运行单元测试:

    从报错信息可以清晰的看出,返回值是 0,跟我们的预期值 1 不同。




  • 相关阅读:
    SAP PI 如何实现消息定义查询
    EWM与ERP交互程序
    ITS Mobile Template interpretation failed. Template does not exist
    SAP Material Flow System (MFS) 物料流系统简介
    SAP EWM Table list
    EWM RF 屏幕增强
    SAP EWM TCODE list
    SAP扩展仓库管理(SAPEWM)在线研讨会笔记
    ERP与EWM集成配置ERP端组织架构(二)
    EWM RF(Radio Frequency)简介
  • 原文地址:https://www.cnblogs.com/xinruyi/p/11403132.html
Copyright © 2011-2022 走看看