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如何处理返回值的问题。
NULL 博文链接:https://yhq1212.iteye.com/blog/1772214
包括了几部分: 1.iBatis2学习笔记:基本原理和配置.doc 2.iBatis2学习笔记:与Spring2的整合.doc 3.iBatis2学习笔记:单表映射 .doc ...10.iBatis insert操作陷阱.doc 每章都有小例子。 呵呵,希望有所帮助!
在用iBatis.net与数据库打交道的过程中,发现iBatis.net拼接字符串不能直接拷贝然后在dbms里执行
IBATISDAO库类操作IBATISDAO库类操作IBATISDAO库类操作IBATISDAO库类操作
ibatis特殊操作.doc ibatis特殊操作.doc ibatis特殊操作.doc
ibatis学习 ibatis总结 ibatis ibatis ibatis
转ibatis动态sql - phoebus0501 - 博客园.mht
ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料ibatis资料
ibatis实现CRUD操作,它比学好hibernate更简单
ibatis操作mysql
NULL 博文链接:https://wv1124.iteye.com/blog/569628
ibatis demo,ibatis例子,ibatis示例
iBATIS 级联iBATIS 级联iBATIS 级联
ibatis的原码 ibatis源码 ibatis源码 ibatis源码
ibatis
操作数据库 iBATIS查询,java 和spring的配置方法
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
全面介绍了关于ibatis操作数据库的各种类型,在程序中编辑SqlMapClient对象的成员函数的参数,从而对数据库进行更新
Ibatis3,手册,Ibatis3手册,Ibatis3使用手册,Ibatis3参考手册