在 MyBatis 中执行更新时有什么方法可以 return 主键或实体

is there any way to return primary key or entity when execute update in MyBatis

我正在使用更新语句使用MyBatis修改记录(DB是MySQL),我想return更新实体,有没有办法获取更新实体或主键来查询更新实体?这是我的更新声明:

  <update id="updateForFreeSeat" parameterType="com.sportswin.soa.red.envelop.model.entity.RoomSeat">
    update r_room_seat
    set status = 1
    where room_id = #{roomId,jdbcType=BIGINT}
    order by room_play_id desc
    limit 1
  </update>

我刚刚使用这种方法读取了 insert return select pk:

  <selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER" >
    SELECT LAST_INSERT_ID()
  </selectKey>

更新怎么样?

根据 mybatis documentation 你可以使用 useGeneratedKeys 更新和插入。

假设您想要 return 的字段和 属性 被命名为 id 您可以这样做:

<update id="updateForFreeSeat"
      parameterType="com.sportswin.soa.red.envelop.model.entity.RoomSeat"
      useGeneratedKeys="true"
      keyProperty="id">
    update r_room_seat
    set status = 1
    where room_id = #{roomId,jdbcType=BIGINT}
    order by room_play_id desc
    limit 1
</update>