您的位置:首页 > 其它

半自动化的持久层框架ibatis关于主键自增长

2013-11-04 11:00 239 查看
ibatis在sqlmap的配置文件中selectKey元素有个type属性,此属性可以指定:type="pre" Or type="post" 表示前生成还是后生成,对于不同的数据库主键自增长的方式也有所不同。

总结总结

oracle数据库:

<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">   

    <selectKey resultClass="int" keyProperty="id" type="pre">   

        <![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>   

    </selectKey>   

    <![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]>  

</insert>

DB2数据库:

<insert id="insertStatementConfig" parameterClass="java.util.HashMap">

   INSERT INTO TBL_STATEMENT_CONFIG(

   STATE_CONFIG_ID,

   STATE_TYPE_ID,

   STATE_DATE,

   STATE_DATE_TYPE,

   STATE_CURRENT_DATE,

   TEMPLATE_ID

   ) VALUES(

   nextval for SEQ_PI_ENUMTYPE_ID,(此处SEQ_PI_ENUMTYPE_ID是在dbv客户端数据库创建的sequence)

   #stateTypeId#,

   #stateDate#,

   #stateDateType#

   <isEmpty prepend="," property="stateCurrentDate" >

   default

 </isEmpty>

 <isNotEmpty prepend="," property="stateCurrentDate">

   #stateCurrentDate:TIMESTAMP#

 </isNotEmpty>

 ,#tid#)

   <selectKey keyProperty="stateConfigId" resultClass="java.lang.Long">

      values prevval for SEQ_PI_ENUMTYPE_ID

   </selectKey>

  </insert>

MY SQL数据库:

<insert id="insertProduct-Mysql" parameterClass="com.domain.Product"> 

    <![CDATA[insert into PRODUCT(PRD_DESCRIPTION) values(#description#)]]>   

    <selectKey resultClass="int" keyProperty="id"> 

        <![CDATA[SELECT LAST_INSERT_ID() AS ID ]]>   

        <!-- 该方法LAST_INSERT_ID()与数据库连接绑定,同属统一会话级别,不会发生上述MS SQL Server的函数问题。 --> 

    </selectKey>

</insert>

MS SQL Server数据库:

<insert id="insertProduct-SQL-SERVER" parameterClass="com.domain.Product">   

    <selectKey resultClass="int" keyProperty="id">   

        <![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#) 

        SELECT SCOPE_IDENTITY() AS ID ]]> 

    </selectKey>  

</insert>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  持久层框架 ibatis