zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    linux的文件权限分析
    Bash 文件夹操作
    bash shell 文本文件操作
    Vim文字编辑
    Windows环境Vim编辑器如何执行Ruby代码
    JavaWeb-Servlet
    app遮罩层--网赚
    flex布局 居中
    实现绝对定位元素水平垂直居中的两种方法
    CSS背景图怎么自适应全屏(手机或者电脑)
  • 原文地址:https://www.cnblogs.com/yuanermen/p/2995920.html
Copyright © 2011-2022 走看看