<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啊  回復  更多評論
      

    主站蜘蛛池模板: 亚洲熟妇自偷自拍另欧美| 久久久99精品免费观看| 国产精品免费观看调教网| 日本牲交大片免费观看| 亚洲av成人无码久久精品| 亚洲av无码专区在线观看下载| 中文字幕在线观看免费视频 | 免费在线中文日本| 免费在线观看你懂的| 亚洲а∨天堂久久精品9966| 182tv免费视视频线路一二三| 国产精品亚洲片在线观看不卡| 国产亚洲精品91| 色视频色露露永久免费观看| 亚洲精品二三区伊人久久| 亚洲免费中文字幕| 亚洲国产日韩在线| 国产成人精品免费视| 免费在线观看自拍性爱视频| 国产男女猛烈无遮挡免费视频| 亚洲av永久无码天堂网| 伊人久久综在合线亚洲2019| 好紧我太爽了视频免费国产| 亚洲日韩国产欧美一区二区三区| 免费午夜爽爽爽WWW视频十八禁| 99视频精品全部免费观看| 亚洲专区一路线二| 一二三四在线观看免费高清中文在线观看 | 国产激情免费视频在线观看 | 亚洲熟妇久久精品| 麻豆亚洲AV永久无码精品久久| www.亚洲一区| 中美日韩在线网免费毛片视频| 国产jizzjizz免费看jizz| 中文字幕高清免费不卡视频| 国产亚洲一区区二区在线 | 日韩精品免费一级视频| 国产美女视频免费观看的网站 | 亚洲最大激情中文字幕| 无码国产精品一区二区免费式芒果| 深夜A级毛片视频免费|