三种数据库
本文和大家讲一下如何使用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>
通过以上方式,可以最大程度上确保插入数据的时候获得当前自增主键。
引用:http://sunbin.iteye.com/blog/1450943
分享到:
相关推荐
ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成
Ibatis查询Id列表.doc
08_ibatis教程_sql主键生成方式.rar
08_ibatis教程_sql主键生成方式.zip 08_ibatis教程_sql主键生成方式.zip
ibatis 自动生成工具 用于生成dao 实体类
ibatis教程_查询指定id的单个对象 ibatis教程_查询指定id的单个对象
ibatis jar(自动生成工具) 放在eclipse的plugins目录下 在项目上点击右键 方便,灵活,快捷
网上关于ibatis代码自动生成的例子不少,但是让人还是感到一头雾水,本文附添加过程以及基础包。
设置表自动生成ibatis的sql语句等对应的配置文件
只需要修改数据库名称和表名即可,能更加有效的进行生成实体类
ibatis代码自动生成代码程序,有现成的例子,只要将配制文件中的数据库连接连接和数据库表名、实体类名、包名修改在你想要的就可以,1分钟内搞定,实体类。
sqlserver Ibatis XML自动生成工具,本人正在使用的工具;下载后配置XML数据库连接和用户名密码,输入表名即可生成
ibatis学习 ibatis总结 ibatis ibatis ibatis
只需在配置文件ibatorConfig.xml 更改tableName="你的表名"即可自动生成全部。 记住更改jdbc路径和mysql-connector-java-5.1.6-bin.jar的路径。
自动生成ibatis所需文件,达到快速查询,减少工作量的效果 CorpChannelDAO.java CorpChannelDAOimpl.java CorpChannel.java CorpChannelExample.java game_channel__corp_channel_SqlMap.xml 详情步骤请见...
ibatis教程_删除指定id的单个对象.raribatis教程_删除指定id的单个对象.raribatis教程_删除指定id的单个对象.rar
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
程序会读这个配置文件,来获取要做映射的类. 2.把你的jar包拷贝到本目录底下. 3.修改run.cmd文件,把你的jar包加入到classpath中. 4.执行run.cmd,会在out中得到映射文件. <br>作为示例,你下载完成后,直接...
08_传智播客ibatis教程_sql主键生成方式08_传智播客ibatis教程_sql主键生成方式
将代码更新到src目录下;即可!对应的ibatis的版本是2.3.4;建议使用同版本测试。 如有改动,请sqlmap的xml文件格式化后保存,这样以便组件发现修改时间不同而重新加载。