读书人

ibatis的施用以及实例源码开放

发布时间: 2012-11-09 10:18:48 作者: rapoo

ibatis的使用以及实例源码开放

相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言,ibatis 是一种“半
自动化”的ORM实现。
所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是
Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全
套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate
或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握,
Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执
行。

iBATIS是以SQL为中心的持久化层框架。能支持懒加载、关联查询、继承等特性。

iBATIS不同于一般的OR映射框架(eg:hibernate)。OR映射框架,将数据库表、字段等映射到类、属性,那是一种元数据(meta-data)映射。iBATIS则是将SQL查询的参数和结果集映射到类。因此可以说,iBATIS做的是SQL Mapping的工作。它把SQL语句看成输入以及输出,结果集就是输出,而where后面的条件参数则是输入。iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。iBATIS使用xml文件来映射这些输入以及输出。能大大减少数据库存储部分的代码量,而且可以非常方便的利用SQL中的一些小技巧。废话不说了,直接看源码吧,见附件有sql文件这里提供的是mysql数据库。直接下载后导入就可以直接使用。

1 楼 yindj0821 2009-01-21 例子有点太简单了。最起码把1:1,N:1,1:N,N:N加上去吧 2 楼 qinjingkai 2009-01-21 你这样写是很危险的,特别是事务处理那里

public void updateStudentById(Student student) {
try {
sqlMapClient.update("updateStudent", student);
} catch (Exception e) {
e.printStackTrace();
}
}

}
如果出现异常的话你的事务根本就没有回滚!!!!!直接报了异常,数据库可能有脏数据 3 楼 p_x1984 2009-01-21 提出的意见,我会及时的更新源码的。谢谢! 4 楼 sailpoplar 2009-01-21 提供一点ibatis的高级特性运用了 5 楼 sdh5724 2009-01-21 1:1,N:1,1:N,N:N
究竟是什么, 大家别笑话我, 我很少研究这东西, 谁能举例说下。 6 楼 p_x1984 2009-01-21 有时间来好好研究下! 7 楼 gembler 2009-01-21 sdh5724 写道1:1,N:1,1:N,N:N
究竟是什么, 大家别笑话我, 我很少研究这东西, 谁能举例说下。
打死不信 8 楼 lishuaibt 2009-06-19 有没有哪位大侠对ibatis的源代码有深入的研究的呀。。。该怎么入手的 9 楼 rainwindboy 2009-06-29 qinjingkai 写道你这样写是很危险的,特别是事务处理那里

public void updateStudentById(Student student) {
try {
sqlMapClient.update("updateStudent", student);
} catch (Exception e) {
e.printStackTrace();
}
}

}
如果出现异常的话你的事务根本就没有回滚!!!!!直接报了异常,数据库可能有脏数据
没有仔细读楼主的代码,但是感觉如果是spring来做中间层的话,事务处理会没有问题的 10 楼 p_x1984 2009-06-29 赞同rainwindboy 的说法,改天咱再写一个例子。 11 楼 C_J 2009-09-02 lishuaibt 写道有没有哪位大侠对ibatis的源代码有深入的研究的呀。。。该怎么入手的

我刚从案例入手~

附件提供了一个sample..

读书人网 >软件架构设计

热点推荐