我们在数据库插入一条数据的时候,经常是需要返回插入这条数据的主键。但是数据库供应商之间生成主键的方式都不一样。
有些是预先生成(pre-generate)主键的,如Oracle和PostgreSQL;有些是事后生成(post-generate)主键的,如MySQL和SQL Server。但是不管是哪种方式,我们都可以用iBATIS的<selectkey>节点来获取<insert>语句所产生的主键。
例子如下:
</insert></selectkey>
xml 代码
-
- <insert id="insertProduct-ORACLE" parameterClass="product">
- <selectKey resultClass="int" type="pre" keyProperty="id" >
- SELECT STOCKIDSEQUENCE.NEXTVAL AS VALUE FROM DUAL
- </selectKey>
- insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values (#id#,#description#)
- </insert>
-
-
- <insert id="insertProduct-MS-SQL" parameterClass="product">
- insert into PRODUCT (PRD_DESCRIPTION)
- values (#description#)
- <selectKey resultClass="int" type="post" keyProperty="id" >
- select @@IDENTITY as value
- </selectKey>
- </insert>
-
-
- <insert id="insertProduct-MYSQL" parameterClass="product">
- insert into PRODUCT (PRD_DESCRIPTION)
- values (#description#)
- <selectKey resultClass="int" type="post" keyProperty="id" >
- select LAST_INSERT_ID() as value
- </selectKey>
- </insert>
分享到:
相关推荐
实现ibatis框架对student表的增删改查(包括模糊查询和用序列自动生成主键)
自动生成的主键 存储过程 parameterClass parameterMap Inline Parameter简介 resultClass resultMap cacheModel xmlResultName Parameter Map 和 Inline Parameter 元素 Inline Parameter Map 基本类型输入参数 Map...
1 简单的sqlmap 2 SQl语句 3 自动生成的主键 4 存储过程 5 parameterMap与inline parameter 6 二元条件元素和一元条件元素 7 隐式的Result Map
自动生成的主键.............................................................................................................20 存储过程.....................................................................
unique="是否唯一性约束" nullable="是否可以为空" pk="是否主键,在表没有主键的情况下,可以指定一个代理主键" updatable="是否可以更新" insertable="是否插入" enumString="枚举值,以分号分隔,示例值:M(1,...
示例如下: UserInfoBaseDao : 自动生成的代码, 不能手工修改,用于重复生成 UserInfoDao extends UserInfoBaseDao : 存放手工的代码,不能重复生成 页面的重复生成还没有啥好办法。 语法参考: ...
mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门...
11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall...
11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall调用存储过程 11.5.6. 声明SimpleJdbcCall...
iBatis2.0 <br>(毫秒) AppFramework <br>(毫秒) 后者前者性能对比 <br>(倍) 根据主键获取实体 <br>(20次单条select) 6.1 5.3 <br>QueryFilter: 5.75 1.15 <br>...
720 1.59 <br>1.53 <br> <br> 表II –50并发4循环(数据库和测试机分开) <br>对比项目 iBatis2.0 <br>(毫秒) AppFramework <br>(毫秒) 后者前者性能对比 <br>(倍) ...
720 1.59 <br>1.53 <br> <br> 表II –50并发4循环(数据库和测试机分开) <br>对比项目 iBatis2.0 <br>(毫秒) AppFramework <br>(毫秒) 后者前者性能对比 <br>(倍) ...
B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。 C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。 D .可使用存储过程写分页逻辑...