最近遇到了一个问题,需要更新一个字段且返回更新后的字段值,先更新再查询感觉有点麻烦,所以使用selectKey来解决这个问题。(Mysql数据库)
# House实体类字段
private String prefix;
private Integer order;
# mybatis语句
<update id="updateHouseOrder" parameterType="House">
update house set order = order + 1
where id = #{id}
<selectKey resultType="House" keyColumn="order,prefix" keyProperty="order,prefix" order="AFTER">
SELECT order, prefix from house where id = #{id}
</selectKey>
</update>
注意:keyColumn对用select表实体的字段,keyProperty需要和update语句中的parameterType字段一致。
# service接口
public int updateHouseOrder(House house);
# controller代码
int row = houseService.updateHouseOrder(house);
AjaxResult ajax = new AjaxResult();
if (row > 0) {
ajax.put("code", 0);
ajax.put("order", house.getPrefix()+house.getOrder());
} else {
ajax.put("code", 500);
}
return ajax;
Perfect…