iBatis insert操作陷阱
在使用iBatis插入数据的时候,容易跌入陷阱。
一、保存insert方法
在保存数据方面,iBatis的insert方法返回的是新增记录的主键,类型为Object,但实为整数数字型,有时候会让人误解为实体类型,也并非任何表的insert操作都会返回主键----这是一个陷阱。
要返回这个新增记录的主键,前提是表的主键是自增型的,或者是Sequence的。否则获取新增记录主键的值为0或者null。
对于MySQL这样来写:
<selectKey keyProperty="id" resultClass="long">
select LAST_INSERT_ID()
</selectKey>
对比Hibernate返回的Serializable类型,实际上也是主键。
二、更新删除update/delete方法
返回影响的记录行数。
三、对DAO/Service设计时候的影响
1、对于自增主键类型表,DAO的save方法可以返回主键、或者实体对象(该对象的标识符域会填充上主键值)。
2、对于非自增主键类型表,DAO的save方法,在保存之前就指导整个实体对象的所有值(包括主键),因此返回什么都可以,也可以不返回值。
3、对于Service的,不管表如何,一般都返回保存的实体对象。
四、查询
1、对于findById方式查询一条记录并转换为某个JavaBean对象的时候,不会因为所传参数的标识的没有对应的记录的而发生异常。当不存在时候,会返回null。
本文出自 “熔 岩” 博客:http://lavasoft.blog.51cto.com/62575/114747/
分享到:
相关推荐
ibatis的insert方法的返回值。 介绍了mybaits如何处理返回值的问题。
接下来,我们谈谈INSERT操作。MyBatis的动态XML同样适用于插入数据,它可以帮助我们构建出各种形式的INSERT语句。例如: ```xml <insert id="insertUser" parameterType="com.example.User"> INSERT INTO users ( ...
总之,iBatis提供了一种灵活的数据库操作方式,通过与Java代码的紧密结合,解决了传统JDBC的繁琐和易错问题。了解并熟练掌握iBatis的基本操作和特性,对于提升Java项目的数据库访问能力具有重要意义。
包括了几部分: 1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc ...10.iBatis insert操作陷阱.doc 每章都有小例子。 呵呵,希望有所帮助!
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
1. **基本CRUD操作**:`IBatisDao`通常会包含增删改查(Create、Read、Update、Delete)的基本接口,如`insert()`, `select()`, `update()`, `delete()`。这些方法的实现会对应到具体的SQL映射文件,通过`SqlSession...
- **插入操作**:`insert()`方法用于将一个对象插入到数据库中,它会自动处理主键生成策略,如果表有自增主键,IBATIS会自动填充。 - **更新操作**:`update()`方法用于更新已存在的记录,它需要传入待更新的对象,...
在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一个轻量级的持久层框架,为开发者提供了方便快捷的SQL映射工具,使得CRUD(创建、读取、更新、删除)操作变得更加简单易行。相较于Hibernate这样的ORM框架...
在数据库开发中,持久层框架是至关重要的,它负责处理数据库的CRUD(创建、读取、更新、删除)操作,以及SQL语句的动态构建和执行。iBatis以其灵活的SQL映射和对XML或注解的支持而受到欢迎,但随着时间的推移,...
在Ibatis中,CRUD(Create, Read, Update, Delete)是数据库中最基本的操作,下面我们将详细介绍如何使用Ibatis实现这些操作。 1. **创建(Create)**:创建通常涉及到插入新的记录。在Ibatis中,我们定义一个Insert...
在IT行业中,Ibatis是一个非常重要的持久层框架,它提供了SQL映射功能,使得开发者能够更灵活地控制数据库操作。本篇文章将详细讲解如何利用Ibatis实现数据的连接、增加、查询、删除和修改(CRUD)操作,以及.xml...
本篇文章将详细介绍Ibatis的简单操作,并结合实际的Java测试代码进行解析。 Ibatis是由Clinton Begin创建的开源项目,它并非是一个完整的ORM框架,而是一个SQL映射框架,主要负责SQL语句的编写与执行。Ibatis的主要...
转ibatis动态sql - phoebus0501 - 博客园.mht
例如,`<select>`标签用于定义查询语句,`<insert>`、`<update>`和`<delete>`分别对应增删改操作。在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`<if>`、`<choose>`、`<when>`、`<otherwise>`等标签。 ...
【ibatis入门--对数据库的操作】这篇文章主要讲解了如何使用iBatis框架来操作数据库,iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。以下是文章涉及的关键知识点: ...
综上所述,通过iBATIS操作Oracle的CLOB数据,需要对iBATIS的映射文件、类型处理器以及Oracle的CLOB特性有深入理解。在实际开发中,合理配置和使用这些机制,能够有效地管理大量文本数据,同时保持代码的简洁性和可...
在IT领域,数据库管理和操作是不可或缺的部分,而iBatis作为一个优秀的持久层框架,与MySQL数据库结合使用,能实现高效且灵活的数据操作。本篇文章将深入探讨如何利用iBatis进行MySQL数据库的增删改查操作,同时提供...
3. **SqlSession**:SqlSession是Ibatis的核心组件,它提供了执行SQL的方法,如`selectOne`、`insert`、`update`和`delete`。每次数据库操作后,记得关闭SqlSession以释放资源。 4. **动态SQL**:Ibatis的动态SQL...
1. 增加(Insert):在iBatis的Mapper XML文件中编写INSERT SQL语句,然后在Action中通过SqlSession的insert方法执行插入操作。 2. 删除(Delete):Mapper XML文件中定义DELETE语句,Action中使用SqlSession的...