半自动化的持久层框架ibatis关于主键自增长
2013-11-04 11:00
239 查看
ibatis在sqlmap的配置文件中selectKey元素有个type属性,此属性可以指定:type="pre" Or type="post" 表示前生成还是后生成,对于不同的数据库主键自增长的方式也有所不同。
总结总结
oracle数据库:
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>
</selectKey>
<![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]>
</insert>
DB2数据库:
<insert id="insertStatementConfig" parameterClass="java.util.HashMap">
INSERT INTO TBL_STATEMENT_CONFIG(
STATE_CONFIG_ID,
STATE_TYPE_ID,
STATE_DATE,
STATE_DATE_TYPE,
STATE_CURRENT_DATE,
TEMPLATE_ID
) VALUES(
nextval for SEQ_PI_ENUMTYPE_ID,(此处SEQ_PI_ENUMTYPE_ID是在dbv客户端数据库创建的sequence)
#stateTypeId#,
#stateDate#,
#stateDateType#
<isEmpty prepend="," property="stateCurrentDate" >
default
</isEmpty>
<isNotEmpty prepend="," property="stateCurrentDate">
#stateCurrentDate:TIMESTAMP#
</isNotEmpty>
,#tid#)
<selectKey keyProperty="stateConfigId" resultClass="java.lang.Long">
values prevval for SEQ_PI_ENUMTYPE_ID
</selectKey>
</insert>
MY SQL数据库:
<insert id="insertProduct-Mysql" parameterClass="com.domain.Product">
<![CDATA[insert into PRODUCT(PRD_DESCRIPTION) values(#description#)]]>
<selectKey resultClass="int" keyProperty="id">
<![CDATA[SELECT LAST_INSERT_ID() AS ID ]]>
<!-- 该方法LAST_INSERT_ID()与数据库连接绑定,同属统一会话级别,不会发生上述MS SQL Server的函数问题。 -->
</selectKey>
</insert>
MS SQL Server数据库:
<insert id="insertProduct-SQL-SERVER" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id">
<![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#)
SELECT SCOPE_IDENTITY() AS ID ]]>
</selectKey>
</insert>
总结总结
oracle数据库:
<insert id="insertProduct-ORACLE" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id" type="pre">
<![CDATA[SELECT STOCKIDSEQUENCE.NEXTVAL AS ID FROM DUAL]]>
</selectKey>
<![CDATA[insert into PRODUCT (PRD_ID,PRD_DESCRIPTION) values(#id#,#description#)]]>
</insert>
DB2数据库:
<insert id="insertStatementConfig" parameterClass="java.util.HashMap">
INSERT INTO TBL_STATEMENT_CONFIG(
STATE_CONFIG_ID,
STATE_TYPE_ID,
STATE_DATE,
STATE_DATE_TYPE,
STATE_CURRENT_DATE,
TEMPLATE_ID
) VALUES(
nextval for SEQ_PI_ENUMTYPE_ID,(此处SEQ_PI_ENUMTYPE_ID是在dbv客户端数据库创建的sequence)
#stateTypeId#,
#stateDate#,
#stateDateType#
<isEmpty prepend="," property="stateCurrentDate" >
default
</isEmpty>
<isNotEmpty prepend="," property="stateCurrentDate">
#stateCurrentDate:TIMESTAMP#
</isNotEmpty>
,#tid#)
<selectKey keyProperty="stateConfigId" resultClass="java.lang.Long">
values prevval for SEQ_PI_ENUMTYPE_ID
</selectKey>
</insert>
MY SQL数据库:
<insert id="insertProduct-Mysql" parameterClass="com.domain.Product">
<![CDATA[insert into PRODUCT(PRD_DESCRIPTION) values(#description#)]]>
<selectKey resultClass="int" keyProperty="id">
<![CDATA[SELECT LAST_INSERT_ID() AS ID ]]>
<!-- 该方法LAST_INSERT_ID()与数据库连接绑定,同属统一会话级别,不会发生上述MS SQL Server的函数问题。 -->
</selectKey>
</insert>
MS SQL Server数据库:
<insert id="insertProduct-SQL-SERVER" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id">
<![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#)
SELECT SCOPE_IDENTITY() AS ID ]]>
</selectKey>
</insert>
相关文章推荐
- ibatis中主键自动增长(Oracle,Ms sql server ,mysql)
- 关于搭建spring struts ibatis框架
- ibatis中主键自动增长(Oracle,Ms sql server ,mysql)
- [转]关于软件自动化测试框架的理解
- 关于oracle主键自增长
- ibatis获取主键自动增长ID Oracle/MSSQL/mysql
- 关于搭建restful web service + springMVC + ibatis/hibernate的整合和XML配置意思和ssh+springMVC框架搭建
- ibatis较劲主流持久层框架
- MySQL中关于自增长主键的获取
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- ibatis配置(mysql数据库) 新增一条记录后,返回自动增长的主键id
- 持久层框架iBatis学习笔记
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- 关于集成ibatIS框架后 jdk版本升级引起的问题以及解决方案
- 在基于Mybatis持久层框架,使用数据库事务时,插入一条数据后,无法返回主键ID的问题研究
- ibatis主键生成方式 用序列实现自动增长 查询方式
- ibatis获取主键自动增长ID(Oracle/MSSQL/mysql),取得刚插入的ID编号
- JAVA持久层框架的概述(ibatis>>mybatis)
- 关于之前接口自动化框架的优化记录
- 持久层框架:ibatis学习心得,欢迎大家交流:wyf_cjl@sohu.com