在本项目开发中,刚接触到ibatis,看到项目里采用hibernate与ibatis结合起来,原来是考虑到ibatis在调用新增记录后无法返回主键值,所以当新增记录时就调用hibernate的实现方法。但今天却在网上看到这样一篇文章,原来ibatis也可以返回主键值:
引自:http://hi.baidu.com/jenk/blog/item/4c5d63f09c1b83c67931aa21.html/cmtid/df4083223d559cf9d7cae21c
《iBatis自动生成的主键》
很多数据库支持自动生成主键的数据类型。不过这通常(并不总是)是个私有的特性。
SQL Map 通过<insert>的子元素<selectKey>来支持自动生成的键值。它同时支持预生成(如
Oracle)和后生成两种类型(如 MS-SQL Server)。下面是两个例子:
<
!—Oracle SEQUENCE Example -->
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id" >
SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL
</selectKey>
insert into PRODUCT (PRD_ID,PRD_DESCRIPTION)
values (#id#,#description#)
</insert>
<!— Microsoft SQL Server IDENTITY Column Example -->
<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
insert into PRODUCT (PRD_DESCRIPTION)
values (#description#)
<selectKey resultClass="int" keyProperty="id" >
SELECT @@IDENTITY AS ID
</selectKey>
</insert>
<!-- Mysql 这个例子是我自己加上去的-->
<insert id="insertProduct-Mysql" parameterClass="com.domain.Product">
insert into PRODUCT(PRD_DESCRIPTION)
values (#description#)
<selectKey resultClass="int" keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/foamflower/archive/2009/07/13/4343819.aspx
分享到:
相关推荐
实现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
unique="是否唯一性约束" nullable="是否可以为空" pk="是否主键,在表没有主键的情况下,可以指定一个代理主键" updatable="是否可以更新" insertable="是否插入" enumString="枚举值,以分号分隔,示例值:M(1,...
示例如下: UserInfoBaseDao : 自动生成的代码, 不能手工修改,用于重复生成 UserInfoDao extends UserInfoBaseDao : 存放手工的代码,不能重复生成 页面的重复生成还没有啥好办法。 语法参考: ...
自动生成的主键.............................................................................................................20 存储过程.....................................................................
720 1.59 <br>1.53 <br> <br> 表II –50并发4循环(数据库和测试机分开) <br>对比项目 iBatis2.0 <br>(毫秒) AppFramework <br>(毫秒) 后者前者性能对比 <br>(倍) ...
mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门...
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>(倍) ...
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...
B .iBATIS自带的queryForList(String statementName,int start,int size)分页接口有性能隐患,不允许使用。 C .定义明确的sql查询语句,通过传入参数start和size来实现分页逻辑。 D .可使用存储过程写分页逻辑...