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配置(本人没有测试过!)
免责声明: 本文仅代表作者个人观点,与爱易网无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。