首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

MyBatis 三 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)

2013-08-01 
MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)MyBatis自动生成的主键很多数据库支持

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设置

<!-- 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>

?

热点排行