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事务,达到预期目的。
posted @ 2018-08-29 13:24  xiaoleo  阅读(5537)  评论(1编辑  收藏  举报