MyBatis 3 自动生成 主键 针对不同的数据库(oracle/sqlserver/mysql)
2016-03-09 16:14
936 查看
MyBatis自动生成的主键很多数据库支持自动生成主键的数据类型。不过这通常(并不总是)是个私有的特性。SQL Map 通过<insert>的子元素<selectKey>来支持自动生成的键值。它同时支持预生成(如Oracle)和后生成两种类型(如 MS-SQL Server MySQL)。
一、Oracle设置
注意:
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设置
mysql就简单了!
三、MS-SQL配置(本人没有测试过!)
一、Oracle设置
SEQ_COMMON为你自己创建的序列号
<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>
相关文章推荐
- Oracle数据库五种约束
- java后台框架 springmvc mybatis(sqlsever oracle 和 mysql数据库) HTML5 bootstrap 全新高大尚
- ora-28547:连接服务器失败,可能是 Oracle Net 管理失败
- Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
- Oracle 截取字符串,取系统时间
- Sqlserver连接Oracle数据库
- 查看oracle表空间
- oracle中的varchar和varchar2
- Oracle中数据类型number(m,n)
- C#连接Oracle 11g 无需安装Oracle客户端
- Oracle存储过程发送邮件--3--发送邮件过程
- Oracle存储过程发送邮件--2--邮件内容服务器等信息
- Oracle存储过程发送邮件--1--创建ACL
- oracle report err:REP-2103 PL/SQL formula returned invalid value or no value
- Oracle新建数据库(新用户)
- Oracle用户和模式的区别
- DB Oracle rownum
- oracle笔记(约束)
- oracle删除表中数据(delete与truncate)
- Oracle的rownum原理和使用