ibatis返回插入后的主键值

来源:互联网 发布:unity3d 5.0 教程 pdf 编辑:程序博客网 时间:2024/04/27 20:53

 项目中遇到一个问题,需要在插入一条记录后,得到该记录的主键值。

该主键值是通过序列自动生成~

在阅读了一些文章后,总结出了如下方法:

 

在ibatis配置中,在insert语句之前,加入selectKey配置

 <insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
  <selectKey resultClass="int" keyProperty="id" >
  SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
  </selectKey>
  insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)
  values (#id#,#description#)
 </insert>

其中<selectKey>中的keyProperty="id" 为相应表的主键名。保证该属性的类型和javabean中
相应属性类型一致。
若id为int类型,那么<selectKey>中
的resultClass="int" ,将sqlMap.insert返回的object转换为int类型。
若该属性id为String,则<selectKey>中的resultClass="String",将sqlMap.insert返回的object转换为String类型。

注意:

插入的值中,value中对应的id即为selectKey中查询到的id值,此时若继续使用序列,则会造成连续使用,使序列跳数

 

原创粉丝点击