<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日韩AV永久无码色欲| 亚洲av无码专区在线| 一级美国片免费看| 全亚洲最新黄色特级网站 | 免费看黄视频网站| 亚洲乱码一二三四区乱码| 性做久久久久久久免费看| 亚洲色大成网站www久久九| 日本免费一本天堂在线| 免费夜色污私人影院网站电影 | 国产成人精品123区免费视频| 国产成人不卡亚洲精品91| 一区二区三区亚洲视频| 成人妇女免费播放久久久| 亚洲av福利无码无一区二区| AV无码免费永久在线观看| 中文字幕亚洲综合久久综合| 国产又长又粗又爽免费视频 | 亚洲熟妇无码八V在线播放| 日韩毛片无码永久免费看| 四虎精品成人免费视频| 亚洲AV无码日韩AV无码导航| 99在线精品视频观看免费| 国产av无码专区亚洲av毛片搜| 亚洲人成在线播放网站| 精品无码无人网站免费视频| 亚洲日韩一区精品射精| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 亚洲国产一区在线观看| 又粗又大又硬又爽的免费视频| 99热在线日韩精品免费| 91亚洲精品麻豆| 亚洲熟女乱综合一区二区| 亚洲精品免费在线观看| 成人精品国产亚洲欧洲| 午夜亚洲www湿好大| 热久久精品免费视频| 无码精品人妻一区二区三区免费看 | 日韩成人免费aa在线看| 今天免费中文字幕视频| 亚洲AV无码一区二区大桥未久|