<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks
    iBatis的sqlMap配置文件的selectKey元素有個type屬性,可以指定pre或者post表示前生成(pre)還是后生成(post)。

    Oracle設置 
    1<!-- Oracle SEQUENCE -->    
    2<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">    
    3    <selectKey resultClass="int" keyProperty="id" type="pre">    
    4        <![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>    
    5    </selectKey>    
    6    <![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]>    
    7</insert>  

    MS SQL Server配置

    1<!-- Microsoft SQL Server IDENTITY Column -->    
    2<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">    
    3    <![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#) ]]>    
    4    <selectKey resultClass="int" keyProperty="id" type="post">    
    5        <![CDATA[SELECT @@IDENTITY AS ID ]]>  
    6        <!-- 該方法不安全 應當用SCOPE_IDENTITY() 但這個函數屬于域函數,需要在一個語句塊中執行。 -->  
    7    </selectKey>    
    8</insert>  

    上述MS SQL Server配置隨是官網提供的配置,但實際上卻恰恰隱患重重!按下述配置,確保獲得有效主鍵。
    1<!-- Microsoft SQL Server IDENTITY Column 改進-->    
    2<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">    
    3    <selectKey resultClass="int" keyProperty="id">    
    4        <![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#)  
    5        SELECT SCOPE_IDENTITY() AS ID ]]>  
    6    </selectKey>    
    7</insert>  

    MySQL配置
    1<!-- MySQL Last Insert Id -->  
    2<insert id="insertProduct-Mysql" parameterClass="com.domain.Product">  
    3    <![CDATA[insert into PRODUCT(PRD_DESCRIPTION) values(#description#)]]>    
    4    <selectKey resultClass="int" keyProperty="id">  
    5        <![CDATA[SELECT LAST_INSERT_ID() AS ID ]]>    
    6        <!-- 該方法LAST_INSERT_ID()與數據庫連接綁定,同屬統一會話級別,不會發生上述MS SQL Server的函數問題。 -->  
    7    </selectKey>  
    8</insert> 

    通過以上方式,可以最大程度上確保插入數據的時候獲得當前自增主鍵。
    posted on 2010-04-30 13:46 rogerfan 閱讀(4060) 評論(1)  編輯  收藏 所屬分類: 【開源技術】

    Feedback

    # re: ibatis中主鍵自動增長(Oracle,Ms sql server ,mysql) 2012-09-04 13:38 蘭偉
    怎么我的獲取到的主鍵為null啊  回復  更多評論
      

    主站蜘蛛池模板: 亚洲中文无韩国r级电影 | 亚洲制服丝袜在线播放| a毛片在线看片免费| 最新亚洲成av人免费看| 毛片基地看看成人免费| 亚洲日韩在线中文字幕第一页| 国产午夜亚洲精品不卡电影| 免费一级毛片免费播放| 欧洲美女大片免费播放器视频| 无码欧精品亚洲日韩一区夜夜嗨 | 含羞草国产亚洲精品岁国产精品 | 99视频免费播放| 亚洲毛片在线观看| 18未年禁止免费观看| 亚洲日本香蕉视频| 欧美三级在线电影免费| 亚洲AV无码成人精品区狼人影院| 又爽又黄无遮挡高清免费视频| 黄页网站在线观看免费| 国产亚洲视频在线播放| 日本免费一区二区三区四区五六区 | 好吊妞在线新免费视频| 久久精品国产亚洲AV电影网| 亚洲AⅤ无码一区二区三区在线| eeuss影院免费92242部| 亚洲视频在线免费观看| 99久久免费国产精品特黄| 在线视频亚洲一区| 国产亚洲精品无码成人| 国产精品免费观看| 野花视频在线官网免费1| 亚洲AV综合色区无码另类小说| 精品国产sm捆绑最大网免费站 | 亚洲男人都懂得羞羞网站| 黄瓜视频高清在线看免费下载| 噜噜噜亚洲色成人网站| 亚洲精品人成在线观看| 毛片A级毛片免费播放| 久久久精品视频免费观看 | 国产精品高清视亚洲一区二区| 免费v片在线观看|