本文和大家讲一下如何使用ibatis来获取刚刚插入数据的ID的方法,也是在网上找到的,挺实用。
iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post)。
Oracle设置
1<!-- Oracle SEQUENCE -->
2<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
3 <selectKey resultClass="int" keyProperty="id" type="pre">
4 <![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>
5 </selectKey>
6 <![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]>
7</insert>
MS SQL Server配置
1<!-- Microsoft SQL Server IDENTITY Column -->
2<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
3 <![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#) ]]>
4 <selectKey resultClass="int" keyProperty="id" type="post">
5 <![CDATA[SELECT @@IDENTITY AS ID ]]>
6 <!-- 该方法不安全 应当用SCOPE_IDENTITY() 但这个函数属于域函数,需要在一个语句块中执行。 -->
7 </selectKey>
8</insert>
上述MS SQL Server配置随是官网提供的配置,但实际上却恰恰隐患重重!按下述配置,确保获得有效主键。
1<!-- Microsoft SQL Server IDENTITY Column 改进-->
2<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
3 <selectKey resultClass="int" keyProperty="id">
4 <![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#)
5 SELECT SCOPE_IDENTITY() AS ID ]]>
6 </selectKey>
7</insert>
MySQL配置
1<!-- MySQL Last Insert Id -->
2<insert id="insertProduct-Mysql" parameterClass="com.domain.Product">
3 <![CDATA[insert into PRODUCT(PRD_DESCRIPTION) values(#description#)]]>
4 <selectKey resultClass="int" keyProperty="id">
5 <![CDATA[SELECT LAST_INSERT_ID() AS ID ]]>
6 <!-- 该方法LAST_INSERT_ID()与数据库连接绑定,同属统一会话级别,不会发生上述MS SQL Server的函数问题。 -->
7 </selectKey>
8</insert>
通过以上方式,可以最大程度上确保插入数据的时候获得当前自增主键。
相关推荐
我做的是 spring + quartz+ mysql and oracle 持久层 ibatis and hibernate 项目用eclipse 导入 不同的数据库 请在数据库运行不同的SQL 脚本 用hibernate 时注意 是什么数据库 hibernate.properties 文件第一二行...
ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成
经过不断的搜寻,发现很多大神提供的springmvc开发实例存在某些漏洞,对我等又赶时间,又静不下心的人甚是难过,本人经过几天的努力终于在前人基础上做出了完善,提供一个实例给大家,让大家能通过直观的认识快速学习
Ibatis查询Id列表.doc
ibatis 读取oracle clob类型
关于ibatis连接MSSQL和MySQL的CRUD,Junit4测试
ibatis+oracle简单实例,其中包括ibatis jar包以及oracle驱动包
iBatis 简介: iBatis 是apache 的一个开源项目,一个O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。如果不需要太多复杂的功能,iBatis 是能够满足你的要求又足够灵活的最简单的解决方案,这是一个...
ibatis调用oracle存储过程分页
这是Ibatis.net 1.x 官方最后维护的版本,从官方的svn下载下来的 包括.net framework 2.0/3.5/4.0 三个版本的project 与网络上流传的版本不同的是,Castle组件更新为了2.5.1版本
08_ibatis教程_sql主键生成方式.rar
ibatismysql.jar ibatismysql.jar
平常积累的spring,Structs2,ibatis框架jar包,oracle,mysql,sql等数据库jar包,全部是自己开发的时候用的,现在贡献出来,分数虽然高了点,但是确实不要你费心去找,有时会有的不可以用。
框架包 由于一次上传要小于15M 所以只能上传两次......
maven spring struts ibatis oracle框架整合,
ibatis调用oracle存储过程
C#中iBatis连接mySQL使用的DLL
本工程用于研究Ibatis和MySQL结合使用的方法 本工程编码方式:UTF-8 须执行的SQL语句: CREATE DATABASE `test`; USE `test`; DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `id` char(36) NOT NULL...
ibatis学习总结,oracle 学习总结,大数据量处理
ibatis oracle ibatis-2.3.3.jar ojdbc14.jar ibatis连接oracle所需的jar包