iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post)。
Oracle设置
<!-- Oracle SEQUENCE -->
<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>
MS SQL Server配置
<!-- Microsoft SQL Server IDENTITY Column 改进-->
<insert id="insertProduct-MS-SQL" parameterClass="com.domain.Product">
<selectKey resultClass="int" keyProperty="id">
<![CDATA[insert into PRODUCT (PRD_DESCRIPTION) values(#description#)
SELECT SCOPE_IDENTITY() AS ID ]]>
</selectKey>
</insert>
MySQL配置
<!-- MySQL Last Insert Id -->
<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>
当然mysql中可以用auto_increment!ms sql中也有identity可以用,这样做是为了兼容其他数据库!
分享到:
相关推荐
理解并掌握这些主键生成策略,可以帮助开发者根据实际的数据库环境和业务需求选择最合适的方案,从而优化数据库操作,提高系统的稳定性和效率。在实际开发中,应结合项目特点,选择最符合业务逻辑和性能需求的主键...
在本教程"08_传智播客ibatis教程_sql主键生成方式"中,你将会深入学习到如何在Ibatis中配置和使用上述各种主键生成策略,通过实例和代码讲解,帮助你更好地理解和掌握Ibatis在处理SQL主键生成方面的技巧和最佳实践。...
本教程“08_传智播客ibatis教程_sql主键生成方式”主要聚焦于如何在Ibatis中处理SQL查询时的主键生成策略,这对于确保数据的一致性和完整性至关重要。 Ibatis允许开发者自定义SQL语句,包括插入、更新、删除和查询...
9. **性能优化**:自定义生成器可以用于优化性能,例如,通过在生成的代码中添加缓存策略,或者对特定查询进行优化。 10. **持续集成**:将自定义的Ibatis生成器集成到持续集成流程中,确保每次代码更新后,相关的...
总的来说,这个入门级教程将带你逐步理解Ibatis的工作原理,熟悉其配置和使用方式,掌握如何在Java应用中整合Oracle数据库,并运用Ibatis的主键生成策略。通过学习这个教程,你不仅能学会基本的数据库操作,还能了解...
与Ibatis Helper相比,Mybatis Generator提供了更多高级特性,例如自动添加主键生成策略、自定义模板支持、JavaBean规范遵循等。此外,它还支持多数据源配置,对于大型项目尤为实用。 这两款工具都遵循了Maven插件...
- **插入操作**:`insert()`方法用于将一个对象插入到数据库中,它会自动处理主键生成策略,如果表有自增主键,IBATIS会自动填充。 - **更新操作**:`update()`方法用于更新已存在的记录,它需要传入待更新的对象,...
例如,当遇到数据类型转换错误、空指针异常或SQL执行效率低下等问题时,iBATIS提供了解决策略。比如使用`nullValue`属性处理空值,或者通过优化SQL语句来提高查询速度。同时,对于复杂的业务场景,iBATIS支持动态SQL...
- **自动生成的主键**:对于INSERT操作,可以通过设置`useGeneratedKeys="true"`来启用主键自动生成。 - **存储过程**:支持调用数据库的存储过程,并通过`<call>`标签定义。 - **`parameterClass`和`parameterMap...
13. ****:定义主键生成策略,常用于自动填充主键字段。 这些标签共同构成了iBatis的SQL映射规则体系,确保了框架能够正确执行各种数据库操作。 #### 7. SQL参数详解 iBatis支持多种类型的SQL参数,包括基本类型...
映射包括字段到属性、主键生成策略等。 **iBATIS 高级特性** 高级特性部分涵盖了更复杂的数据库交互,如数据关联(Nested Result Maps)、缓存(Caching)和存储过程(Stored Procedures)。数据关联允许处理一对一...
对于需要自增主键的表,SQLMap支持通过`<id>`元素配置自动获取生成的主键。 #### 存储过程 除了标准的SQL语句,SQLMap还支持调用数据库存储过程。 #### ParameterClass和ParameterMap `ParameterClass`定义了传入...
”可能指的是一个强大的Java反编译器,它能够将已编译的.class文件转换回源代码形式,帮助我们查看和理解iBatis生成的SQL执行逻辑。 总的来说,实现iBatis下Oracle的树查询需要对iBatis的映射机制、Oracle的层次...
- 获取主键:在插入操作后,可以通过`<selectKey>`标签来获取新生成的主键。例如,在Oracle或DB2中,可以使用Sequence获取主键;而在MySQL中,可以使用`LAST_INSERT_ID()`函数。 4. **主键获取策略**: - **先...
4. **自动生成的主键**:支持自动为插入的记录生成主键。 5. **存储过程**:支持调用数据库中的存储过程。 6. **parameterClass**:指定传递给SQL语句的参数类型。 7. **parameterMap**:定义复杂的参数结构。 8. **...
- **键值自动生成**:配置主键自增或其他机制来自动为新记录生成唯一的标识符。 - **存储过程**:支持调用数据库中的存储过程,并处理输入输出参数。 - **Parameter Maps** 和 **Inline Parameters**:定义参数映射...
- **自动生成的主键**:支持插入后自动生成主键值。 - **存储过程**:支持调用数据库存储过程。 - **Parameter Mapping**: - **parameterClass**:指定传入参数的类。 - **parameterMap**:定义复杂的参数映射...
在本项目中,可能会有一个专门的表(如`uploads`)来存储文件信息,字段可能包括`id`(主键)、`filename`、`path`、`size`、`upload_time`等。 8. **安全性考虑**:在文件上传下载系统中,安全性是至关重要的。...
Ibatis的主要目标是简化数据访问层的开发,通过将SQL语句与Java代码分离,它提供了一种灵活的、非侵入式的数据访问策略。在传统的JDBC编程中,我们需要手动管理连接、参数绑定和结果集解析,而Ibatis则将这些任务...