当前位置:首页 » 操作系统 » ibatis源码分析

ibatis源码分析

发布时间: 2022-05-17 10:18:06

① ibatis 在maven没有

ibatis是一个数据库相关的中间件,主要实现的功能是javabean到数据库表字段的映射,使用xml管理sql语句,避免手动拼写sql的情况出现。 maven是一个java工程模块化管理的工具,主要实现源码工程的模块化管理,同时可以管理项目中jar包的依赖关系...

② ibatis 批量update操作

上面的解析成sql就是
update Question?? set status = "OK"?? where questionId in(1,2,3,4,5...)
PS:只是单独的ibatis项目,不和spring集成??问题补充:<div class="quote_title"rensanning 写道</div<div class="quote_div"ibatis只是对JDBC的封装,真正是否能够一次性批量操作,要看你的数据库类型! /比如: / 一次插入多条数据: /INSERT INTO t (t.a, t.b, t.c) /VALUES ('key1','key2','value'), ('key1','key3','value2') ,... / /</div / / /这些明白,少量数据可以用循环来执行,如果是大量数据,在ibatis中是怎么优化的,放到同一个session中吗???问题补充:<div class="quote_title"makemyownlife 写道</div<div class="quote_div"iBatis2通过SqlMapClient提供了一组方法用于批处理实现: /startBatch() 开始批处理 /xecuteBatch() 执行批处理 / /<pre name="code" class="java"
public void create(List<Reply> replyList) {try {// 开始批处理
sqlMapClient.startBatch();
for (Reply reply: replyList) {
// 插入操作
sqlMapClient.insert("Reply.create", reply);}// 执行批处理
sqlMapClient.executeBatch();
e.printStackTrace();}}</pre</div / / /首先不加这两个,红色部分也可以正常执行批量插入,差别就是加了startBatch() && sqlMapClient.executeBatch(),这样的好处能说下吗?问题补充:<div class="quote_title"makemyownlife 写道</div<div class="quote_div"iBatis2通过SqlMapClient提供了一组方法用于批处理实现: /startBatch() 开始批处理 /xecuteBatch() 执行批处理 / / / public void create(List<Reply> replyList) { / / try { / // 开始批处理 / sqlMapClient.startBatch(); / / <span style="color: red"for (Reply reply: replyList) { / // 插入操作 / sqlMapClient.insert("Reply.create", reply); / }</span / // 执行批处理 / sqlMapClient.executeBatch(); / / } catch (Exception e) { / e.printStackTrace(); / } / } / / /</div / /

③ 如何配置 ibatis 的map.xml 放在src目录外

新建source folder 而非普通folder,然后和src下一样
---------------------------------------------------------------------
看了下ibatis源码,的确,用
Resources.getResourceAsReader (resource)采用的是defaultClassLoader或者Thread.currentThread().getContextClassLoader() , 所以有问题。
但用 getResourceAsStream(null, resource), 或者 getResourceAsFile(null, resource)
会取 ClassLoader.getSystemResourceAsStream, 应该就能用上面的方法了。甚至放到容器、或者jre的环境中

④ spring 怎么管理ibatis的session,spring事务管理后 会关闭session么在源码中怎么查看

首先要明白spring为什么要管理session?session是在什么时候使用的?以及为什么要管理?

1、spring其实管理的是sessionFactory对象,很明显这个对象是用来获取session的。在spring上下文全局中应该只有一个,这个不用担心因为默认情况下spring都是管理bean都是单例的。

2、session是线程不安全的,因此我们使用的是时候应当使用局部变量的方式使用。也就是方法体内使用
3、先看图

可能你觉得这个比较发麻,这么简单的一个方法我手动控制就好了!但是实际应用当中可能你这个业务方法还调用其他的业务方法,那时候你这个事务要怎么控制,是全部写在一个try-catch里面还是怎么处理?

⑤ mybatis怎么实现两种数据库的兼容

在系统运行过程中,针对不同数据库类型区分加载不同文件路径下的sqlmap配置。

留给开发人员做的事依旧是快乐地编写原始数据库语句,而不再为多数据库兼容问题挠头。

⑥ ibatis框架如何解决大量并发问题

推荐两篇文章,解决此问题,ssh:
网上通用解决方案:http://www.zyiqibook.com/article245.html
改进后的方案:http://www.zyiqibook.com/201504/article0413155800266.html

⑦ ibatis 源代码 如何下载

http://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.0.5-bundle.zip&can=3&q=%22mybatis-3%22+-migrations

⑧ 请问:IBATIS它的核心,优点,缺点和用时要注意什么

IBATIS:最大的优点是可以有效的控制sql发送的数目,提高数据层的执行效率!好象阿里巴巴现在就用的是IBATIS;它需要程序员自己去写sql语句,不想hibernate那样是完全面向对象的,自动化的,ibatis是半自动化的,通过表和对象的映射以及手工书写的sql语句,能够实现比hibernate等更高的查询效率。

给个文章你参考下:

1.优点

简单:
易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

实用:
提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了DAO框架,可以使我们更容易的开发和配置我们的DAL层。灵活:
通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。功能完整:
提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了DAO支持,并在DAO框架中封装了ADO.NET,NHibernate和DataMapper。增强系统的可维护性:
通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
2.缺点

滞后性:
还没有明确对.NET2.0的支持。最新版本在2.0下编译可以,但有些单元测试不能通过。
不成熟,工程实践较少:
IbatisNet在实际项目中的使用较少。 只是理论上可行.
半ORM,工具支持较少:
需要我们自己写sql,并且.NET下还未发现可以自动生成业务层类和配置文件的工具,这点和NHibernate不一样,NHibernate会为我们的数据库直接产生sql,并有一些辅助工具。因此使用Ibatis比NHibernate要多做一些工作。
3.可行性

没有最好的框架,只有最适合的框架。 存在的便是合理的,它存在就说明有它存在的道理。但它未必为我们存在。所以选择一个框架最主要的是看它对你有没有意义,意义有多大,是不是比其他框架带给你的好处要多。没有绝对的优点也没有绝对的缺点,重要的是看在什么情况下讨论。 上面说了部分的Ibatis的优点和部分缺点。这些优点从理论上证明Ibatis对任何数据持久层都合适,但未必是最好的选择。下面对上面的优缺点分别从两方面讨论。简单: 我们都喜欢简单,简单意味着学习成本低,使用中出错的可能性低。同时,简单的东西一般来说功能不够强大。反过来,复杂的东西学习成本高,用起来不方便,并且团队没有很强的技术实力,一般不要使用。实用:
解决了项目中需要解决的问题,这是任何实际工程中采用的框架和工具都应具有的性质,否则就不要拿到实际项目中来。灵活: 灵活有两层意思,一种是简单易扩展,另一种是功能强大提供了很多选项。Ibatis属于前者,Hibernate属于后者。两者各有优缺点。功能完整: Ibatis的功能完整也是相对的,比我们自己开发的框架应该完整,但对比其他框架肯定也有一些解决不了的问题。增强系统的可维护性: 利用Ibatis可以做到sql和代码分离,可以设计出一个清晰的数据访问层(DAL)。但项目架构是否科学合理,是否以维护,关键不在Ibatis,因为它只是一个数据层框架。但是我们也不得不清楚,要想发挥Ibatis的优势,我们需要做一些额外工作,比如最好设计DAO接口,需要将业务层实体和对实体的访问放在不同的工程中,同时需要维护xml配置文件。滞后性: Ibatis组现在还没有提到要支持.NET2.0,很多人在.NET2.0下使用Ibatis都出现了问题。所以如果要使用.NET2.0开发,IBatis不是一个好选择,还需要等待。不成熟: 开源的东西很难说成熟,但一般比我们自己写的框架要成熟。由于我们可以拿到他的源代码,所以关键在于我们能否驾驭它。半ORM,工具支持少: 这注定了Ibatis不能从本质上提升开发效率,我们需要自己写sql,写实体类,写配置文件。但这也是它优越的地方,它没有为我们做的他多,所以我们就有更多的施展空间。而且它非常适合那些并不能完全控制数据库的系统和需要利用数据库本身提供的高级特性的统计查询系统的开发。
使用Ibatis需要自己写sql,由于我们的sql不可能完全符合sql标准,比起NHibernate产生的sql来,可移植性差。不过由于我们更改数据库的可能性较小,对我们来说sql符合标准以便可以在迁移到不同服务器时代价最小并不是十分必要的。另一方面,NHibernate虽然可以屏蔽很多数据库间的不同,但是却很难利用某些数据库的高级特性,比如Oracle的分析统计函数。
NHibernate不适合数据库模式不规范,约束不完整,需要大量复杂查询的系统,同时NHibernate的学习成本较高,完全掌握NHibernate也较困难,风险较大。 自己写框架未必比Ibatis的好,稳定,强大和可扩展。而且自己开发框架也需要较大的工作量。 如果使用DotNet并且要选一个数据层框架,而系统中有相当一部分较复杂的sql,或数据库设计不合理,脏数据多,对性能和资源要求严格,Ibatis是一个比较不错的选择。他的那些缺点并不是致命的,而且也是有一些解决方案的。尤其是,当选用了Ibatis的DataAccess作为DAO框架时,我们可以同时使用NHibernate,ADO.NET和DataMapper(IbatisNet的核心组件),那样将会使风险降到最低,并且整个系统的框架比较合理。
另外,利用Ibatis可以统一编码风格,节约开发成本,大家不会再把精力浪费到分页 连接池 主键生成等地方了,可以集中精力进行业务组件的编写。

综上:
很多时候我们要在是自己开发框架和选用第三方框架和选用什么样的框架问题上进行综合考虑。考虑的标准当然是项目的当前情况和我们希望达到目的的一个平衡。

Ibatis只是封装了数据访问层,替我们做了部分的对象关系映射。但我们的代价是必须要写xml配置文件,相对于Hibernate我们还要写很多sql。Hibernate通过工具直接从数据库模式生成实体类和基本的配置文件,而且大部分情况下不需要我们写sql,会较大的提升开发效率。但这些也有很多的局限性,尤其是对环境的要求较高(数据库设计,对象设计,团队的协作等)。 个人感觉Ibatis对项目比较有意义的地方在于它小巧灵活,可扩展,封装了数据访问层(事务,缓存,异常,日志),并提供了DAO框架支持。
利用Ibatis我们可以做到代码和sql的分离,只要sql能够解决的问题,Ibatis就能帮我们较容易的解决,同时也使我们的项目对某一框架的依赖性变小(因为Ibatis是非侵入性的)。这将极大的降低项目风险,减少解决复杂问题的时间,使项目的维护变得简单。
Ibatis对于应用的修改,调试,扩充和维护将会变得容易自然。修改时,我们主要修改的是代表模型的实体对象,xml配置文件中的sql,和/或配置文件的ResultMap(很多时候是不需要的)。同时,sql和代码分离,我们不用在代码的StringBuffer的append方法之间寻找需要修改的sql。配置文件中的sql便利了我们的调试和对sql的评审及以后的sql重用。
利用一些框架在前期一般会拖慢开发效率。因为我们需要付出学习成本,很多时候,使用框架需要写很多配置文件,在使用不熟时开发速度较慢;同时利用框架往往使系统代码量增大,比如Model1和Model2模型,开发效率应该还是Model1快,四层的架构肯定比两层的代码量大。 但对于中后期开发和维护将会极大的提高效率。
利用一些较完全的开发框架和代码生成工具,在前期会较大的提高开发效率,但在后期常常会拖慢进度,并有可能成为以后维护的梦魇。比如torque生成实体类和其对应的sql,虽大幅提高了效率,但修改负担较大。
比较理想的开发方式是使用简单框架结合简单的代码生成工具。框架提供系统的基础服务,并规范开发。框架一方面提供了开发中某一方面的开发基础支持,比如数据访问层,事务,日志,公用类,异常等。另一方面,也为开发定义了模式,定义了系统的基本轮廓。同时,通过简单的代码生成工具生成部分低级的代码。比如通过工具从数据库模式生成实体类。这些类生成后我们可以自由修改。

Hibernate是十分强大,比较完善的ORM框架,不过这是它的优点也是它的缺点。 j2ee系统是否采用Hibernate3,是一个需要认真评估的问题。
要想Hibernate工作的好,数据库的设计必须好。同时对于复杂的数据操作同时需要使用sql,Hibernate3对于直接使用sql的支持比Hibernate2要自然,这一点是可以接受的。
Hibernate比较复杂,功能强大而灵活,要用好Hibernate确实不是很简单,当然Spring框架提供了对Hibernate的封装,使Hibernate的使用变得简单了点。 可以说Ibatis在任何系统里都适用,但未必是最好选择。不过Ibatis提供的思路是我们应该仔细考虑的

⑨ ibatis 是什么

iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。

⑩ mybatis和ibatis的区别

1、基本信息不同

mybatis:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

ibatis:iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。相对Hibernate和ApacheOJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

iBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。

2、开发时间不同

mybatis:MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

ibatis:iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。

3、配置方法不同

mybatis简化了编码的过程,不需要去写的实现类,直接写一个的接口,再写一个xml配置文件,整个mybatis就配置好了,也就是数据库就连接好了,然后在service里面直接调用就可以了,但是ibatis则不可以,必须要写的实现类。mybatis是ibatis的升级版本。

热点内容
ig加密语音 发布:2024-10-11 12:19:25 浏览:485
钉图上传 发布:2024-10-11 12:11:27 浏览:477
脚本个 发布:2024-10-11 12:10:43 浏览:149
刚性攻丝的编程 发布:2024-10-11 12:10:39 浏览:467
怎么登录安卓版全民tv 发布:2024-10-11 12:10:33 浏览:622
服务器接收的参数名是什么 发布:2024-10-11 12:05:38 浏览:640
c语言中的goto 发布:2024-10-11 11:57:14 浏览:394
小司马编程 发布:2024-10-11 11:45:03 浏览:83
未使用标签进行编译 发布:2024-10-11 11:45:00 浏览:835
java开发源码下载 发布:2024-10-11 11:39:22 浏览:749