当前位置:   article > 正文

Mybatis-insert/update时获取被更新的字段值,selectKey标签详解_mybatis更新后获取更新值

mybatis更新后获取更新值

场景

在业务开发的过程中,我们在进行update操作时有可能需要获取更新后的字段值进行下一步操作,这样的操作通常出现在sql对某一字段进行了运算的情况下

比如  UPDATE T_NUMBER T SET T.INS_NUMBER = T.INS_NUMBER + 1 WHERE T.ID = #{Id}

比较直接的做法是先执行update的操作,再执行get的操作,获取更新后的值,但这样不好,原因主要是

1.产生不必要代码冗余

2.在多线程情况下可能产生安全性问题

实际上可以直接通过Mybatis的selectKey标签获取指定字段的新值

有很多博客说selectKey是用来获取自增主键/主键的,实际上并不是,selectKey可以获取任意的字段/表达式的值,但有一定的限制(注意点)

关于selectKey标签

示例

  1. serviceImpl
  2. NumberDo numberDo = numberMapper.getNumberById(id);
  3. if (numberDo != null) {
  4. numberMapper.plusNumberById(numberDo);
  5. //注意这里怎么获取更新后的新值
  6. return numberDo.getNumber();
  7. }
  8. mapper
  9. <update id="plusNumberById" parameterType="com.coolway.testProject.dal.number.NumberDo">
  10. <selectKey resultType="java.lang.Integer" keyColumn="INS_NUMBER"
  11. keyProperty="insNumber" order="AFTER">
  12. SELECT T.INS_NUMBER FROM T_NUMBER T WHERE T.ID = #{id}
  13. </selectKey>
  14. UPDATE T_NUMBER T
  15. <set>
  16. T.INS_NUMBER = T.INS_NUMBER + 1
  17. </set>
  18. WHERE T.ID = #{id}
  19. </update>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/241322
推荐阅读
相关标签
  

闽ICP备14008679号