MyBatis 3 自動生成 主鍵 針對不同的數據庫(oracle/sqlserver/mysql)

MyBatis自動生成的主鍵很多數據庫支持自動生成主鍵的數據類型。不過這通常(並不總是)是個私有的特性。SQL Map 通過<insert>的子元素<selectKey>來支持自動生成的鍵值。它同時支持預生成(如Oracle)和後生成兩種類型(如 MS-SQL Server MySQL)。

一、Oracle設置

複製代碼
<insert id="saveUserInfo" parameterType="UserInfo">
        <selectKey resultType="int"  keyProperty="userId" order="BEFORE">   
            <![CDATA[SELECT SEQ_COMMON.NEXTVAL AS ID FROM DUAL]]>   
          </selectKey>
        <![CDATA[insert into userinfo(userId,userName,phone,age,birthday,remark) 
        values(#{userId},#{userName},#{phone},#{age},#{birthday},#{remark})]]>
    </insert>
複製代碼

注意:

1、MyBatis3已使用resultType ,resultClass是會報錯的!

2、order="BEFORE" 上,這個必須要寫明,生成序列在之前。在ibatis中使用type="pro" ,但在MyBatis3中必須使用order否則報錯!

3、selectKey中的 keyProperty 要和 insert into中的 插入的參數 要一致 keyProperty="userId"  如: insert into userinfo (userId) VALUES (#{userId}) 

注意以上三點就OK了。

二、mysql設置

  <insert id="saveUserInfo" parameterType="UserInfo"  useGeneratedKeys="true"   keyProperty="id">
        insert into
        userinfo(userName,phone,age,birthday,remark)
        values(#{userName},#{phone},#{age},#{birthday},#{remark})  
   </insert>

mysql就簡單了!

三、MS-SQL配置(本人沒有測試過!)

複製代碼
<!-- Microsoft SQL Server IDENTITY Column 改進-->   
<insertid="insertProduct-MS-SQL"parameterClass="com.domain.Product">   
    <selectKeyresultClass="int"keyProperty="id">   
        <![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#)
         SELECT SCOPE_IDENTITY() AS ID ]]>  
    </selectKey>   
</insert>
複製代碼

 

原文:http://www.cnblogs.com/yuanermen/archive/2013/04/02/2995920.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章