关闭

关闭

关闭

封号提示

内容

首页 ibatis开发指南(中文版).pdf

ibatis开发指南(中文版).pdf

ibatis开发指南(中文版).pdf

上传者: kanjingcai 2010-12-19 评分 0 0 0 0 0 0 暂无简介 简介 举报

简介:本文档为《ibatis开发指南(中文版)pdf》,可适用于IT/计算机领域,主题内容包含开发指南iBATISSQLMapsPageofiBATISSQLMaps开发指南Version年月日ClintonBegin著刘涛译http:www符等。

开发指南iBATISSQLMapsPageofiBATISSQLMaps开发指南Version年月日ClintonBegin著刘涛译http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageof目录简介关于本文SQLMaps(comibatissqlmap*)SQLMap的概念SQLMap如何工作?安装SQLMapsJAR文件和依赖性从x版本升级是否应该升级转换XML配置文件(从x到)使用新的JAR文件SQLMapXML配置文件<properties>元素<setting>元素<typeAlias>元素<transactionManager>元素<datasource>元素<sqlMap>元素SQLMapXML映射文件MappedStatementsStatement的类型SQL语句自动生成的主键存储过程parameterClassparameterMapInlineParameter简介resultClassresultMapcacheModelxmlResultNameParameterMap和InlineParameter<parameter>元素InlineParameterMap基本类型输入参数Map类型输入参数ResultMap隐式的ResultMap基本类型的Result(即StringIntegerBoolean)http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageofMap类型的Result复杂类型属性(即自定义类型的属性)避免N+Select(:)延迟加载VS联合查询(:)复杂类型集合的属性避免N+Select(:M和M:N)组合键值或多个复杂参数属性支持ParameterMap和ResultMap的数据类型缓存MappedStatement结果集只读VS可读写Serializable可读写缓存缓存类型动态MappedStatement二元条件元素一元条件元素其他元素简单的动态SQL元素使用SQLMapAPI编程配置SQLMap事务处理自动的事务处理全局(分布式)事务批处理用SqlMapClient执行SQL语句代码例子例子:执行update(insertupdatedelete)例子:查询成对象(select)例子:用预赋值的结果对象查询成对象(select)例子:查询成对象List(select)例子:自动提交例子:用结果集边界查询成对象List(select)例子:用RowHandler执行查询(select)例子:查询成PaginatedList(select)例子:查询成Map(select)用JakartaCommonsLogging记录SQLMap日志配置日志服务JavaBean简易教程Resources(comibatiscommonresource*)SimpleDataSource(comibatiscommonjdbc*)ScriptRunner(comibatiscommonjdbc*)http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageof简介使用SQLMap能够大大减少访问关系数据库的代码。SQLMap使用简单的XML配置文件将JavaBean映射成SQL语句对比其他的数据库持续层和ORM框架(如JDO的实现Hibernate等)SQLMap最大的优点在于它简单易学。要使用SQLMap只要熟悉JavaBeanXML和SQL就能使您充分发挥SQL语句的能力。关于本文本文讨论了iBATISSQLMap最重要的特性。本文中没有提及的其他特性可能以后不再支持或不久将会修改并且修改时不作通告因此最好不要使用它们。本文将随着iBatisSQLMap的修改而变更。如果您发现其中的错误或是觉得某些地方难以理解请发email至clintonbeginibatiscom。本文是《iBatisSQLMapsDeveloperGuide》的中文版仅供读者参考最权威的应以ClintonBegin的官方文档为准。如果中文翻译有错误请通知译者(email:toleucncomBlog:http:starrynightblogdrivercom)。http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageofSQLMaps(comibatissqlmap*)SQLMap的概念SQLMapAPI让开发人员可以轻易地将JavaBean映射成PreparedStatement的输入参数和ResultSet结果集。开发SQLMap的想法很简单:提供一个简洁的架构能够用%的代码实现%JDBC的功能。SQLMap如何工作?SQLMap提供了一个简洁的框架使用简单的XML描述文件将JavaBeanMap实现和基本数据类型的包装类(StringInteger等)映射成JDBC的PreparedStatement。以下流程描述了SQLMaps的高层生命周期:将一个对象作为参数(对象可以是JavaBeanMap实现和基本类型的包装类)参数对象将为SQL修改语句和查询语句设定参数值。)执行mappedstatement。这是SQLMaps最重要的步骤。SQLMap框架将创建一个PreparedStatement实例用参数对象为PreparedStatement实例设定参数执行PreparedStatement并从ResultSet中创建结果对象。)执行SQL的更新数据语句时返回受影响的数据行数。执行查询语句时将返回一个结果对象或对象的集合。和参数对象一样结果对象可以是JavaBeanMap实现和基本数据类型的包装类。下图描述了以上的执行流程。http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageof安装SQLMaps安装SQLMaps很简单只要把相关的JAR文件复制到类路径下即可。类路径或者是JVM启动是指定的类路径(java命令参数)或者是Web应用中的WEBINFlib目录。Java类路径的详尽讨论超出了本文的范围如果您是Java的初学者请参考以下的资源:http:javasuncomjsedocstooldocswinclasspathhtmlhttp:javasuncomjsedocsapijavalangClassLoaderhtmlhttp:javasuncomjsedocs安装iBatis需要在类路径下放置以下JAR文件:文件名描述是否必需ibatiscommonjarIBATIS公用的工具类是ibatissqlmapjarIBATISSQLMaps框架是ibatisdaojarIBATISDAO框架否JAR文件和依赖性如果一个框架依赖于太多的JAR文件就很难与其他的应用和框架集成。IBATIS的一个主要的关注点是管理并降低JAR文件的依赖性。因此如果您用的是JDKIBATIShttp:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageof仅仅依赖于JakartaCommonsLogging框架。可选的JAR文件放在发布版的liboptional目录下。它们根据功能来分类。下面列表总结了何时需要使用可选JAR类库。描述何时使用目录以前JDK版本支持如果您使用的JDK版本低于并且您的应用服务器不提供这些JAR文件您将需要这些可选的JAR文件liboptionaljdbcliboptionaljtaliboptionalxmlIBATIS的向后兼容如果您使用旧的IBATIS(x)DAO框架或旧的SQLMaps(x)liboptionalcompatibility运行时字节码增强如果您需要使用CGLIB字节码增强来提高lazyloading和reflection的性能liboptionalenhancementDataSource实现如果您使用JakartaDBCP连接池liboptionaldbcp分布式缓存如果您使用OSCache来支持集中或分布式缓存liboptionalcachingLogJ日志如果您需要使用LogJliboptionallogging从x版本升级是否应该升级判断您是否需要升级的最好办法是尝试它。下面是几种升级的方法。版本几乎完全保持和x版本的向后兼容因此某些情况下只需用新的JAR文件替代旧的即可。这个升级方法带来的好处最少但最简单。您无需修改XML文件或Java代码但会存在某些不兼容的问题。第二种方法是把x的XML文件转换成规范但仍使用x的JavaAPI。除了XML映射文件存在着细微的不兼容之处外这是个安全的方法。SQLMap框架包括了用来转换XML映射文件的ANTTask(参见下节)。第三种方法是转换XML文件(和第二种方法相同)和Java代码。因为没有转换Java代码的工具必须手工进行。第四种方法是不必升级。如果您升级有困难可以让应用继续使用x版本。让旧应用继续使用x版在新应用中使用版是个不错的主意。转换XML配置文件(从x到)框架的版本包含了一个可以在ANT构建环境中使用的XML文件转换器。虽然转换http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageofXML配置文件是可选的但将x的配置文件转换成仍然是个好主意。你几乎不会遇到不兼容的文件并且还可以使用版本新的特性(即使您继续使用x的JavaAPI)。XML配置文件转换器在buildxml文件中的例子如下:<taskdefname="convertSqlMaps"classname="comibatisdbsqlmapupgradeConvertTask"classpathref="classpath"><targetname="convert"><convertSqlMapstodir="D:targetDirectory"overwrite="true"><filesetdir="DsourceDirectory"><includename="**maps*xml"><fileset><convertSqlMaps><target>就像您看到的一样它和Ant的copytask很相似。事实上它就是Ant的copytask类的子类因此您可以用这个task完成任何copytask的功能(详细信息请参考Ant的Copytask文档)使用新的JAR文件要升级到最好删除iBatis原有旧的JAR文件及其依赖JAR类库并用新的JAR文件替代。但要主要不要删除其他组件或框架还需要的文件。请参考上节关于JAR类库及其依赖性的讨论。下表总结了旧文件及其相应的新文件。旧文件新文件ibatisdbjarb以后的版本这个文件被分拆成一下个文件ibatiscommonjaribatisdaojaribatissqlmapjaribatiscommonjar(必需)ibatissqlmapjar(必需)ibatisdaojar(可选)commonsloggingjarcommonsloggingapijarcommonscollectionjarcommonsdbcpjarcommonspooljaroscachejarjtajarjdbcstdextjarxercesImpljarxmlParserAPIsjarcommonsloggingjar(必需)commonscollectionjar(可选)commonsdbcpjar(可选)commonspooljar(可选)oscachejar(可选)jtaajar(可选)jdbcstdextjar(可选)xercesImpljar(可选)xmlParserAPIsjar(可选)xalanjar(可选)http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageofjdomjarlogjjar(可选)cglibfullrcjar(可选)本文余下部分将介绍如何使用SQLMaps框架。http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageofSQLMapXML配置文件SQLMap使用XML配置文件统一配置不同的属性包括DataSource的详细配置信息SQLMap和其他可选属性如线程管理等。以下是SQLMap配置文件的一个例子:SqlMapConfigxml<xmlversion=""encoding=""><!DOCTYPEsqlMapConfigPUBLIC"iBATIScomDTDSQLMapConfigEN""http:wwwibatiscomdtdsqlmapconfigdtd"><!AlwaysensuretousethecorrectXMLheaderasabove!><sqlMapConfig><!Theproperties(name=value)inthefilespecifiedherecanbeusedplaceholdersinthisconfigfile(eg“${driver}”Thefileisrelativetotheclasspathandiscompletelyoptional><propertiesresource="examplessqlmapmapsSqlMapConfigExampleproperties"><!ThesesettingscontrolSqlMapClientconfigurationdetails,primarilytodowithtransactionmanagementTheyarealloptional(moredetaillaterinthisdocument)><settingscacheModelsEnabled="true"enhancementEnabled="true"lazyLoadingEnabled="true"maxRequests=""maxSessions=""maxTransactions=""useStatementNamespaces="false"><!Typealiasesallowyoutouseashorternameforlongfullyqualifiedclassnames><typeAliasalias="order"type="testdomainOrder"><!ConfigureadatasourcetousewiththisSQLMapusingSimpleDataSourceNoticetheuseofthepropertiesfromtheaboveresource><transactionManagertype="JDBC"><dataSourcetype="SIMPLE"><propertyname="JDBCDriver"value="${driver}"><propertyname="JDBCConnectionURL"value="${url}"><propertyname="JDBCUsername"value="${username}"><propertyname="JDBCPassword"value="${password}"><propertyname="JDBCDefaultAutoCommit"value="true"><propertyname="PoolMaximumActiveConnections"value="">http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageof<propertyname="PoolMaximumIdleConnections"value=""><propertyname="PoolMaximumCheckoutTime"value=""><propertyname="PoolTimeToWait"value=""><propertyname="PoolPingQuery"value="selectfromACCOUNT"><propertyname="PoolPingEnabled"value="false"><propertyname="PoolPingConnectionsOlderThan"value=""><propertyname="PoolPingConnectionsNotUsedFor"value=""><dataSource><transactionManager><!IdentifyallSQLMapXMLfilestobeloadedbythisSQLmapNoticethepathsarerelativetotheclasspathFornow,weonlyhaveone…><sqlMapresource="examplessqlmapmapsPersonxml"><sqlMapConfig>以下详细讨论SQLMap配置文件的各组成部分。<properties>元素SQLMap配置文件拥有唯一的<properties>元素用于在配置文件中使用标准的Java属性文件(name=value)。这样做后在属性文件中定义的属性可以作为变量在SQLMap配置文件及其包含的所有SQLMap映射文件中引用。例如如果属性文件中包含属性:driver=orghsqldbjdbcDriverSQLMap配置文件及其每个映射文件都可以使用占位符${driver}来代表值orghsqldbjdbcDriver。例如:<propertyname="JDBCDriver"value="${driver}">这个元素在开发测试和部署各阶段都很有用。它可以使在多个不同的环境中重新配置应用和使用自动生成工具(如ANT)变得容易。属性文件可以从类路径中加载(使用resource熟悉)也可以从合法的URL中加载(使用url属性)。例如要加载固定路径的属性文件使用:<propertiesurl=”file:c:configmyproperties”><setting>元素<setting>元素用于配置和优化SqlMapClient实例的各选项。<setting>元素本身及其所有的属性都是可选的。下表列出了<setting>元素支持的属性及其功能:maxRequests同时执行SQL语句的最大线程数。大于这个值的线http:wwwibatiscomClintonBegin著刘涛(toleucncom)译开发指南iBATISSQLMapsPageof程将阻塞直到另一个线程执行完成。不同的DBMS有不同的限制值但任何数据库都有这些限制。通常这个值应该至少是maxTransactions(参见以下)的倍并且总是大于maxSessions和maxTranactions。减小这个参数值通常能提高性能。例如:maxRequests=“”缺省值:maxSessions同一时间内活动的最大session数。一个session可以是代码请求的显式session也可以是当线程使用SqlMapClient实例(即执行一条语句)自动获得的session。它应该总是大于或等于maxTransactions并小于maxRequests。减小这个参数值通常能减少内存使用。例如:maxSessions=“”缺省值:maxTransactions同时进入SqlMapClientstartTransaction()的最大线程数。大于这个值的线程将阻塞直到另一个线程退出。不同的DBMS有不同的限制值但任何数据库都有这些限制。这个参数值应该总是小于或等于maxSessions并总是远远小于maxRequests。减小这个参数值通常能提高性能。例如:maxTransactions=“”缺省

用户评论(0)

0/200

精彩专题

上传我的资料

每篇奖励 +2积分

资料评价:

/12
仅支持在线阅读

意见
反馈

立即扫码关注

爱问共享资料微信公众号

返回
顶部