mybatis查询更新用法

查询更新用法

今天看到mybatis里面有个update更新语句,看到使用了selectKey,一时没搞懂有什么作用。查阅此作用,才发现这个用法真的很不错,再此记录下。

sql 查询更新写法

  1. 更新数据
  2. 查询更新数据

注意:这是2条sql,如果在项目里需要连接2次数据库

mybatis 更新查询写法

<update id="update" parameterType="Object" >
<selectKey keyProperty='id' resultType='int' order='BEFORE'>
    SELECT
    (select id FROM a WHERE
     id = #{id})id
    from DUAL
</selectKey>
UPDATE a
SET  a.a= #{A},
     a.b= #{B}
    WHERE id = #{id}
</update>

解析:

<selectKey keyProperty='id' resultType='int' order='BEFORE'>

此处的 keyProperty=’id’ 是指将查询出来的id 映射到传入update 的Object 的id 。类型为int

 SELECT
    (select id FROM a WHERE
     id = #{id})id
    from DUAL

此 SELECT 就是为了获取 被更新的 Object 的id 外边包装一个虚表查询是当 id = #{id} 查询不到纪录时不会报空纪录,会返回 null ,这个就很关键了。

当返回空记录的时候 mybatis会报错,说不能转换成 int 型。
当返回null的时候就会转换成int 的 0 。不会报错,代表没有查到。

优化点:

  1. 减少连接数据库次数。
  2. 简单逻辑可以不使用spring事务,达到预期目的。

转载于:https://www.cnblogs.com/xiaoleo/p/xiaoleo.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值