在本项目开发中,刚接触到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中,只需在Mapper XML文件中的`<insert>`标签中设置`useGeneratedKeys="true"`和`keyProperty="id"`,就可以让数据库自动生成主键。 4. **雪花算法(Snowflake Algorithm)**: 在分布式环境下,为了保证...
在本教程"08_传智播客ibatis教程_sql主键生成方式"中,你将会深入学习到如何在Ibatis中配置和使用上述各种主键生成策略,通过实例和代码讲解,帮助你更好地理解和掌握Ibatis在处理SQL主键生成方面的技巧和最佳实践。...
它能够根据数据库中的表结构自动生成对应的Java实体类、Mapper接口及XML配置文件、Service接口及实现类、Controller层代码等,覆盖了Web应用开发的基本模块,使得开发者可以更专注于业务逻辑的实现,而不是基础代码...
在Ibatis配置中,可以通过`<selectKey>`标签来指定使用序列生成主键。 2. **身份列(Identity)**:在MySQL、SQL Server等支持自动增长的数据库中,可以设置某一列为主键并自动递增。在Ibatis中,可以在插入语句后...
Ibatis生成器(也称为MyBatis Generator)允许用户通过配置文件定义规则,然后根据数据库表结构自动生成相应的Java类、Mapper接口和XML映射文件。 **自定义Ibatis生成器的核心知识点:** 1. **MyBatis框架**:...
为了进一步提高开发效率,开发者们设计了一系列的代码生成工具,如"Ibatis Helper"和"generator"等,它们能够自动生成基于Ibatis或Mybatis的CRUD(Create, Read, Update, Delete)代码,从而减少手动编写SQL和实体类...
本话题主要探讨如何自动将MySQL数据库中的表结构转换为Java实体类以及生成相应的iBatis配置文件。 首先,我们需要理解Java实体类(Entity Class)的作用。在Java应用中,实体类通常代表数据库中的表,每个属性对应...
本项目提供的"mybatis自动sql生成插件源码"则进一步提升了开发效率,通过拦截器(Interceptor)在运行时自动生成SQL语句,适用于具有主键或唯一索引的单表操作。 首先,`AutoMapperInterceptor.java`是这个插件的...
通过使用 XDoclet 和特定的 Javadoc 标签,我们可以为 iBatis 自动生成 SQL 映射文件,这极大地简化了开发过程并提高了开发效率。这种方式尤其适用于那些具有大量实体类和映射关系的项目,能够显著减少手动编写配置...
对于支持自动生成主键的数据库,Ibatis 提供了 `<selectKey>` 元素来获取新生成的主键值。在插入语句中,`<selectKey>` 通常置于 `<insert>` 元素内,用于在插入数据后获取数据库生成的主键。例如,对于Oracle,...
`IBatis Codesmith` 的核心功能是通过模板引擎,根据用户定义的模板和数据库元数据,自动生成Java DAO(数据访问对象)层、实体类以及Mapper XML文件。这样,开发者无需手动编写重复的CRUD(创建、读取、更新、删除...
iBATIS支持自动生成的主键,可以自动将主键生成到数据库表中。自动生成的主键可以提高开发效率和减少错误。 十、parameterClass parameterClass是iBATIS的一个重要概念,用于定义参数的类型和关系。parameterClass...
- `<insert>`:用于插入数据,支持动态SQL和自动生成主键。 - `<update>`:更新数据,同样支持动态SQL。 - `<delete>`:删除数据,动态SQL也是其特性之一。 **3. 参数映射** 在SQL映射文件中,使用`<parameterMap>`...
`Abator`是`Ibatis`项目的一部分,是一个代码生成工具,能自动生成基于`Ibatis`的数据访问层(DAO)和模型(Model)代码,大大提高了开发效率。 在`Ibatis`中,数据库操作通过SQL映射文件实现,这些文件包含了SQL...
在映射文件中,iBATIS提供了强大的映射机制,比如自动类型转换、结果集嵌套处理、自动生成主键等。例如,和可以将查询结果的列名映射到Java对象的属性上,元素可以根据特定列的值来决定如何映射结果集,实现多态查询...
Ibatis提供了多种主键生成策略,比如`identity`(标识列,适用于自动增长类型)、`sequence`(序列,Oracle常用)和`guid`(全局唯一标识符)。在Oracle环境下,我们通常会创建一个序列对象,然后在映射文件中配置...
MyBatis Plus是MyBatis的一个扩展,它提供了更多的便利功能,如:分页、条件构造、自动生成主键等,使开发更为简便。 总的来说,Ibatis以其简单易用、高度灵活的特点,在Java持久层框架中占据了一席之地,极大地...
本篇文章将深入探讨如何使用Ibatis框架实现对`student`表的增删改查操作,包括模糊查询以及利用序列自动生成主键。 首先,我们来理解Ibatis的基本概念。Ibatis是由Apache基金会维护的一个开源项目,它是一个SQL映射...
- **自动生成的主键**:对于INSERT操作,可以通过设置`useGeneratedKeys="true"`来启用主键自动生成。 - **存储过程**:支持调用数据库的存储过程,并通过`<call>`标签定义。 - **`parameterClass`和`parameterMap...
- **插入操作**:`insert()`方法用于将一个对象插入到数据库中,它会自动处理主键生成策略,如果表有自增主键,IBATIS会自动填充。 - **更新操作**:`update()`方法用于更新已存在的记录,它需要传入待更新的对象,...