当前位置:   article > 正文

Mybatis使用selectKey返回插入数据的id_selectkey 注解返回新插入数据的id

selectkey 注解返回新插入数据的id

注解类型

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.SelectKey;

public interface KeyAnnoMapper { 
        /*
         * statement="select last_insert_id()":表示定义的子查询语句
         * before=false:表示在插入之前执行,由于是自增主键,所以为false
         * keyColumn="id":插入数据以后,要返回的内容在数据表中对应的字段名称
         * resultType=long.class:表示返回值得类型
         * keyProperty="id":指定返回的id映射到bean中的哪个属性,这里类属性也叫id
         */
        //使用注解
	@Insert("insert into order_info(user_id, goods_id, goods_name, goods_count, goods_price, order_channel, status, create_date)
	values(#{userId}, #{goodsId}, #{goodsName}, #{goodsCount}, #{goodsPrice}, #{orderChannel},#{status},#{createDate} )")
	@SelectKey(keyColumn="id", keyProperty="id", resultType=long.class, 
		before=false, statement="select last_insert_id()")
	public long insert(OrderInfo orderInfo);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

XML类型

<insert id="insert" parameterType="OrderInfo">
     insert into order_info(user_id, goods_id, goods_name, goods_count, goods_price, order_channel, status, create_date)
	values(#{userId}, #{goodsId}, #{goodsName}, #{goodsCount}, #{goodsPrice}, #{orderChannel},#{status},#{createDate} ))
        
    <selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="long">
      select last_insert_id()
    </selectKey>
</insert>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

语义等同于注解类型

获取id

为什么执行这个sql后,一直返回1?因为返回的值是受影响行数,而不是id,id被注入到bean里

应该这么获取

long result = orderDao.insert(orderInfo);
long orderId = orderInfo.getId();
  • 1
  • 2

我插入数据时插入的是一个bean,这个bean的类型就是上面我们提到的parameterType的值,插入前它的id是空。

当我们执行插入后,返回插入的结果result,插入成功result=1,插入失败result=0,这就是为什么结果一直为1了,因为返回的结果根本不是我们需要的id,返回的id其实已经映射到了我们插入的bean中,我们只要通过它的get方法就可以得到了:orderInfo.getId();

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

闽ICP备14008679号