<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 閱讀(4059) 評論(1)  編輯  收藏 所屬分類: 【開源技術】

    Feedback

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

    主站蜘蛛池模板: 亚洲欧洲国产精品香蕉网| 亚洲日韩AV一区二区三区四区| 一级毛片aaaaaa免费看| 亚洲一区免费在线观看| 亚洲 无码 在线 专区| 久久精品电影免费动漫| 亚洲 日韩经典 中文字幕| 亚洲精品无码专区2| 2020因为爱你带字幕免费观看全集| 亚洲欧美成人av在线观看| 国产AⅤ无码专区亚洲AV| 精品国产sm捆绑最大网免费站| 国产亚洲视频在线观看网址| 久久亚洲成a人片| 免费看国产曰批40分钟| **真实毛片免费观看| 日亚毛片免费乱码不卡一区 | 亚洲蜜芽在线精品一区| 国产精品公开免费视频| 114级毛片免费观看| 国产精品免费久久久久电影网| 亚洲高清一区二区三区| 国产成人亚洲综合色影视| 国产精品冒白浆免费视频| 色影音免费色资源| 国产精品无码免费专区午夜| 亚洲小说图区综合在线| 亚洲电影中文字幕| 国产aⅴ无码专区亚洲av麻豆| 四虎www免费人成| 蜜桃AV无码免费看永久| a级毛片免费完整视频| 日本一区二区三区在线视频观看免费 | 亚洲国产老鸭窝一区二区三区 | 亚洲成A人片在线观看WWW| 国产精品国产自线拍免费软件| 日本免费一区二区在线观看| A毛片毛片看免费| 香港一级毛片免费看| 亚洲人成电影网站免费| 亚洲乱码在线播放|