深入iBATIS 2.2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

松迪科技(北京)有限公司松迪科技(北京)有限公司深入iBATIS简介与入门松迪科技(北京)有限公司松迪科技(北京)有限公司渊源ziBATIS一词来源于“internet”和“abatis”的组合,是一个由ClintonBegin在2001年发起的开源项目。ziBATIS最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。zClintonBegin在2003年加入加拿大的ThoughtWorks公司。松迪科技(北京)有限公司松迪科技(北京)有限公司渊源ziBATIS已被Apache组织接管,官方网站为。ziBATIS目前的最高版本为2.3,应经常关注其版本变化。z正在酝酿中的新版本是3.0松迪科技(北京)有限公司松迪科技(北京)有限公司渊源z与其它ORM解决方案不同,iBATIS不是完整ORM解决方案。适用于以下情况:1、不知道表结构(出于商业机密考虑)2、所有数据库操作只能通过存储过程实现(出于安全考虑)3、在线量庞大,数据库操作频繁(出于性能考虑)z再者,iBATIS直接与SQL语句关联,对于习惯了JDBC的用户来说更易于上手。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS简介松迪科技(北京)有限公司松迪科技(北京)有限公司快速入门-步骤ziBATIS是使用SQL语句映射到类,而非通常的将字段映射到属性。z与其它ORM解决方案类似,iBATIS的开发也分为以下几个方面:1、定义与表相对应的类;2、配置需要连接的数据库;3、将表映射到类;松迪科技(北京)有限公司松迪科技(北京)有限公司快速入门-配置文件z配置文件指明连接哪个数据库,以及映射文件有哪些。sqlMapConfigtransactionManagertype=JDBCdataSourcetype=SIMPLEpropertyname=JDBC.Drivervalue=“…/propertyname=JDBC.ConnectionURLvalue=“…/propertyname=JDBC.Usernamevalue=“…/propertyname=JDBC.Passwordvalue=“…//dataSource/transactionManagersqlMapresource=vo/User.xml//sqlMapConfig松迪科技(北京)有限公司松迪科技(北京)有限公司快速入门-映射文件z映射文件将类映射为SQL语句的操作sqlMaptypeAliasalias=Usertype=vo.User/selectid=getUserparameterClass=intresultClass=Userselect*fromuserswhereid=#id#/selectinsertid=insertUserparameterClass=Userinsertintousers(name,password)values(#name#,#password#)/insert/sqlMap松迪科技(北京)有限公司松迪科技(北京)有限公司快速入门-操纵对象Stringresource=sql-map-config.xml;Readerreader=Resources.getResourceAsReader(resource);SqlMapClientmap=SqlMapClientBuilder.buildSqlMapClient(reader);Useru=(User)map.queryForObject(getUser,p);松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置ziBATIS配置用于指明与数据库的连接,同时指明映射文件都有哪些,类似于Hibernate中的hibernate.cfg.xml文件。ziBATIS配置中可以包含的元素有properties?,settings?,resultObjectFactory?,typeAlias*,typeHandler*,transactionManager?,sqlMap。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置zproperties元素指明properties文件的存储位置,而properties文件中设置的内容可以在配置文件中以表达式语言的方式读入。zsettings元素用于设置在读写数据库时的一些操作特性,如延迟加载、缓存等等。zresultObjectFactory元素仅支持2.2以上版本,指明生成结果对象的工厂类,这个类必须要实现ResultObjectFactory接口。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置zsettings元素包括以下属性(括号中是默认值):–maxRequests(512):同时执行SQL语句的最大线程数–maxSessions(128):同一时间内活动的最大session数–maxTransactions(32):同时进入SqlMapClient.startTransaction()的最大线程数–cacheModelEnabled(true):全局性地启用或禁用SqlMapClient的所有缓存model。–lazyLoadEnabled(true):全局性地启用或禁用SqlMapClient的所有延迟加载。–enhancementEnabled(false):全局性地启用或禁用运行时字节码增强,以优化访问JavaBean属性的性能,同时优化延迟加载的性能。–useStatementNamespaces(false):如果启用本属性,必须使用全限定名来引用mappedstatement松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置ztypeAlias元素用于为某一类指定别名,使用了别名后就不必再使用完整类名映射类了。其中有几个别名已经被预定义:松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置ztransactionManager元素用于配置事务管理器,同时也设置好了数据源。iBATIS提供了三个内置事务管理器,它们是JDBC、JTA和EXTERNAL;除此之外,还可以自定义事务管理器,事务管理器必须实现Transaction接口。其中,JDBC使用Connection接口管理事务,JTA使用UserTransaction管理事务,而EXTERNAL则使用外部资源来管理事务。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置ztransactionManager元素包含有dataSource元素,dataSource元素可以是以下几种:SIMPLE:iBATIS内置的数据源实现,适于没有J2EE服务器提供数据源的情况。DBCP:使用JakartaDBCP实现数据源,也适于没有J2EE服务器的情况,但更专业。JNDI:使用JNDI查找数据源,适于提供了JNDI服务器的情况z数据源属性包括两类,一类是JDBC的,另一类是Pool的。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS配置松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-基本元素ziBATIS映射将对象操作映射成SQL语句,可以使用statement、select、insert、update、delete、procedure等元素来配置。z其中statement元素可以配置任意SQL语句,procedure用于配置存储过程,其它元素则各有侧重点。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-基本元素松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-基本元素松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-SQL语句z在这些元素的体中都要嵌入SQL语句,但在XML文件中,某些字符是不能包含的,如和等。z这时可按如下方式处理:松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-SQL语句z使用sql元素和include元素实现代码复用,如:松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-主键ziBATIS支持数据库主键自动生成,这包括支持预生成主键和后生成主键。z所谓预生成是在插入记录前就生成主键,主键与其它字段一同插入数据库,如Oracle;z所谓后生成则是在插入记录后才知道主键,不插入记录主键便是未知的,如SQLServer。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-主键松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-主键z生成的主键会设置到同名属性中,也可通过keyProperty属性指定主键属性。z一般情况下,selectKey的位置决定了它是先于SQL还是后于SQL执行。z2.2以后版本支持type属性,它决定执行次序松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数ziBATIS中可以通过#、?等方式设置参数ziBATIS提供多种设置参数的方法:1、自动匹配;2、使用paramClass;3、使用paramMap;松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数z自动匹配:JavaBean的同名属性会设置到相应的参数位置上。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数z使用paramClass的情况下,限定了可以作为参数的JavaBean的类型。否则,任何含有同名属性的JavaBean都可以做为参数传入。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数z除了可以使用一个JavaBean的完整类名外,还可以使用iBATIS对基本类型内置的别名。例如下面的代码中的java.lang.Integer可以替换成int.松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-参数zparamMap也可用来设置参数松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-结果z可以通过以下方式来指定结果:1、使用resultClass2、使用resultMap3、使用xmlResultName松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-结果松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-结果松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-结果松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-结果松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-存储过程ziBATIS支持对存储过程的调用,语法形式如下松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-使用Map松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-使用Mapz我应该使用JavaBean还是Map?–Map简单易用,基本没有VO的代码–但Map对每一属性的类型不明确,同时属性名称也不明确,往往过份依赖数据库–同时Map性能相对也会稍稍低一点松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-关系z与其它ORM解决方案类似,iBATIS也将关系映射成对象的属性,即一对一、多对一时映射成实体属性;而一对多、多对多时则映射成集合属性。z在iBATIS2之前,没有解决N+1查询问题,2.0之后,这个问题得到很好的解决。松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-关系松迪科技(北京)有限公司松迪科技(北京)有限公司iBATIS映射-关系z什么是N+1查询问题?z如何解决N+1查询问题?ziBATIS是如

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功