`
shush
  • 浏览: 15905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)iBatis insert操作陷阱

 
阅读更多
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方法的返回值

    ibatis的insert方法的返回值。 介绍了mybaits如何处理返回值的问题。

    ibatis UPDATE 动态XML与insert

    接下来,我们谈谈INSERT操作。MyBatis的动态XML同样适用于插入数据,它可以帮助我们构建出各种形式的INSERT语句。例如: ```xml &lt;insert id="insertUser" parameterType="com.example.User"&gt; INSERT INTO users ( ...

    ibatis基本操作数据库

    总之,iBatis提供了一种灵活的数据库操作方式,通过与Java代码的紧密结合,解决了传统JDBC的繁琐和易错问题。了解并熟练掌握iBatis的基本操作和特性,对于提升Java项目的数据库访问能力具有重要意义。

    iBatis2学习笔记

    包括了几部分: 1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc ...10.iBatis insert操作陷阱.doc 每章都有小例子。 呵呵,希望有所帮助!

    ibatis3批量插入

    通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...

    IBatis常用操作封装

    1. **基本CRUD操作**:`IBatisDao`通常会包含增删改查(Create、Read、Update、Delete)的基本接口,如`insert()`, `select()`, `update()`, `delete()`。这些方法的实现会对应到具体的SQL映射文件,通过`SqlSession...

    IBATISDAO库类操作

    - **插入操作**:`insert()`方法用于将一个对象插入到数据库中,它会自动处理主键生成策略,如果表有自增主键,IBATIS会自动填充。 - **更新操作**:`update()`方法用于更新已存在的记录,它需要传入待更新的对象,...

    ibatis实现CRUD操作

    在IT行业中,数据库操作是必不可少的一部分,而Ibatis作为一个轻量级的持久层框架,为开发者提供了方便快捷的SQL映射工具,使得CRUD(创建、读取、更新、删除)操作变得更加简单易行。相较于Hibernate这样的ORM框架...

    从iBatis迁移到MyBatis

    在数据库开发中,持久层框架是至关重要的,它负责处理数据库的CRUD(创建、读取、更新、删除)操作,以及SQL语句的动态构建和执行。iBatis以其灵活的SQL映射和对XML或注解的支持而受到欢迎,但随着时间的推移,...

    ibatis简单CRUD例子

    在Ibatis中,CRUD(Create, Read, Update, Delete)是数据库中最基本的操作,下面我们将详细介绍如何使用Ibatis实现这些操作。 1. **创建(Create)**:创建通常涉及到插入新的记录。在Ibatis中,我们定义一个Insert...

    ibatis实现数据的操作

    在IT行业中,Ibatis是一个非常重要的持久层框架,它提供了SQL映射功能,使得开发者能够更灵活地控制数据库操作。本篇文章将详细讲解如何利用Ibatis实现数据的连接、增加、查询、删除和修改(CRUD)操作,以及.xml...

    ibatis持久层简单操作

    本篇文章将详细介绍Ibatis的简单操作,并结合实际的Java测试代码进行解析。 Ibatis是由Clinton Begin创建的开源项目,它并非是一个完整的ORM框架,而是一个SQL映射框架,主要负责SQL语句的编写与执行。Ibatis的主要...

    转ibatis动态sql - phoebus0501 - 博客园.mht

    转ibatis动态sql - phoebus0501 - 博客园.mht

    ibatis总结 ibatis ibatis ibatis ibatis

    例如,`&lt;select&gt;`标签用于定义查询语句,`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`分别对应增删改操作。在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签。 ...

    ibatis入门--对数据库的操作

    【ibatis入门--对数据库的操作】这篇文章主要讲解了如何使用iBatis框架来操作数据库,iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。以下是文章涉及的关键知识点: ...

    iBATIS操作Oracle CLOB数据

    综上所述,通过iBATIS操作Oracle的CLOB数据,需要对iBATIS的映射文件、类型处理器以及Oracle的CLOB特性有深入理解。在实际开发中,合理配置和使用这些机制,能够有效地管理大量文本数据,同时保持代码的简洁性和可...

    iBatis操作MySQL增删改查

    在IT领域,数据库管理和操作是不可或缺的部分,而iBatis作为一个优秀的持久层框架,与MySQL数据库结合使用,能实现高效且灵活的数据操作。本篇文章将深入探讨如何利用iBatis进行MySQL数据库的增删改查操作,同时提供...

    ibatis demo,ibatis例子,ibatis示例

    3. **SqlSession**:SqlSession是Ibatis的核心组件,它提供了执行SQL的方法,如`selectOne`、`insert`、`update`和`delete`。每次数据库操作后,记得关闭SqlSession以释放资源。 4. **动态SQL**:Ibatis的动态SQL...

    Struts1.2+IBatis操作数据库的案例

    1. 增加(Insert):在iBatis的Mapper XML文件中编写INSERT SQL语句,然后在Action中通过SqlSession的insert方法执行插入操作。 2. 删除(Delete):Mapper XML文件中定义DELETE语句,Action中使用SqlSession的...

Global site tag (gtag.js) - Google Analytics