您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > iBATIS技术培训
iBATIS技术教程软件外包事业部Copyright2011与传统的JDBC进行比较减少了61%的代码量最简单的持久化框架架构级性能增强SQL代码从程序代码中彻底分离,可重用增强了项目中的分工增强了移植性实例步骤1.建立数据库2.创建工程3.添加lib下载ibatis2.0开发包4.编写sqlmapconfig.xml5.编写sqlmap.xml6.编写代码—从感性认识到理性认识业务分层搬家的例子持久层细化Hibernate映射关系iBATIS映射关系认识SqlMapClientSqlMapClientsqlMap=sqlMapClientBuilder.buidSqlMapClient(reader);返回的真实对象是谁?SQLMAPAPI(1)ObjectqueryForObject(java.lang.Stringid);ObjectqueryForObject(java.lang.Stringid,java.lang.ObjectparameterObject);ObjectqueryForObject(java.lang.Stringid,java.lang.ObjectparameterObject,java.lang.ObjectresultObject)SQLMAPAPI(2)MapqueryForMap(java.lang.Stringid,java.lang.ObjectparameterObject,java.lang.StringkeyProp);MapqueryForMap(java.lang.Stringid,java.lang.ObjectparameterObject,java.lang.StringkeyProp,java.lang.StringvalueProp);SQLMAPAPI(3)ListqueryForList(java.lang.Stringid);ListqueryForList(java.lang.Stringid,intskip,intmax);ListqueryForList(java.lang.Stringid,java.lang.ObjectparameterObject);ListqueryForList(java.lang.Stringid,java.lang.ObjectparameterObject,intskip,intmax);—config/sqlmap文件SqlMapConfig的标签propertiessettingstransactionManagertypeAlias已经内置的类型别名定义P59typeHandlersqlMapibatis实例配置一个典型的配置文件如下(具体配置项目的含义见后):?xmlversion=1.0encoding=UTF-8?!DOCTYPEsqlMapConfigPUBLIC-//iBATIS.com//DTDSQLMapConfig2.0/=trueenhancementEnabled=truelazyLoadingEnabled=trueerrorTracingEnabled=truemaxRequests=32maxSessions=10maxTransactions=5useStatementNamespaces=false/transactionManagertype=JDBCdataSourcetype=SIMPLEpropertyname=JDBC.Drivervalue=com.p6spy.engine.spy.P6SpyDriver/propertyname=JDBC.ConnectionURLvalue=jdbc:mysql://localhost/sample/propertyname=JDBC.Usernamevalue=user/propertyname=JDBC.Passwordvalue=mypass/propertyname=Pool.MaximumActiveConnectionsvalue=10/propertyname=Pool.MaximumIdleConnectionsvalue=5/propertyname=Pool.MaximumCheckoutTimevalue=120000/propertyname=Pool.TimeToWaitvalue=500/propertyname=Pool.PingQueryvalue=select1fromACCOUNT/propertyname=Pool.PingEnabledvalue=false/propertyname=Pool.PingConnectionsOlderThanvalue=1/propertyname=Pool.PingConnectionsNotUsedForvalue=1//dataSource/transactionManagersqlMapresource=com/ibatis/sample/User.xml//sqlMapConfigSettings节点cacheModelsEnabled是否启用SqlMapClient上的缓存机制。建议设为trueenhancementEnabled是否针对POJO启用字节码增强机getter/setter的调用效能,避免Reflect所带来的性能开销。同时,这也为LazyLoading带来提升。建议设为trueerrorTracingEnabled是否启用错误日志,在开发期间建议设为true以方便调试lazyLoadingEnabled是否启用延迟加载机制,建议设为truemaxRequests最大并发请求数(Statement并发数)maxTransactions最大并发事务数maxSessions最大Session数。即当前最大允许的并发SqlMapClient数。useStatementNamespaces是否使用Statement命名空间。这里的命名空间指的是映射文件中,sqlMap节的namespace属性,如在上例中针对t_use表的映射文件sqlMap节点:sqlMapnamespace=User这里,指定了此sqlMap节点下定义的操作均属于User命名空间。在useStatementNamespaces=true的情况下,Statement调用需追加命名空间,如:sqlMap.update(User.updateUser,user);否则直接通过Statement名称调用即可,如:sqlMap.update(updateUser,user);但请注意此时需要保证所有映射文件中,Statement定义无重名。transactionManager节点transactionManager节点定义了ibatis的事务管理器目前提供了以下几种选择:JDBC通过传统JDBCConnection.commit/rollback实现事务支持。JTA使用容器提供的JTA服务实现全局事务管理。EXTERNAL外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制。此时ibatis将把所有事务委托给外部容器进行管理。dataSource节点dataSource从属于transactionManager节点,用于设定ibatis运行期使用的DataSource属性。type属性:dataSource节点的type属性指定了dataSource的实现类型。可选项目:SIMPLE:SIMPLE是ibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制,对应ibatis实现类为com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。sqlMap节点sqlMap节点sqlMap节点指定了映射文件的位置,配置中可出现多个sqlMap节点,以指定项目内所包含的所有映射文件。SqlMap的标签selectinsertupdatedeleteprocedurestatementsqlselect*fromawherename=“aaa”includeXmlSqlMapClientBuilderXmlSqlMapClientBuilder是ibatis2.0之后版本新引入的组件,用以替代1.x版本中的XmlSqlMapBuilder。其作用是根据配置文件创建SqlMapClient实例。SqlMapClientSqlMapClient是ibatis的核心组件,提供数据操作的基础平台。SqlMapClient可通过XmlSqlMapClientBuilder创建:Stringresource=com/ibatis/sample/SqlMapConfig.xml;Readerreader;reader=Resources.getResourceAsReader(resource);XmlSqlMapClientBuilderxmlBuilder=newXmlSqlMapClientBuilder();SqlMapClientsqlMap=xmlBuilder.buildSqlMap(reader);com/ibatis/sample/SqlMapConfig.xml指明了配置文件在CLASSPATH中的相对路径。XmlSqlMapClientBuilder通过接受一个Reader类型的配置文件句柄,根据配置参数,创建SqlMapClient实例。SqlMapClient基本操作示例SqlMapClient提供了众多数据操作方法,下面是一些常用方法的示例,具体说明文档请参见ibatisjavadoc,或者ibatis官方开发手册。例1:数据写入操作(insert,update,delete):sqlMap.startTransaction();Productproduct=newProduct();product.setId(1);product.setDescription(“ShihTzu”);introws=sqlMap.insert(“insertProduct”,product);sqlMap.commitTransaction();例2:数据查询(select)sqlMap.startTransaction();Integerkey=newInteger(1);Productproduct=(Product)sqlMap.queryForObject(“getProduct”,key);sqlMap.commitTransaction();例3:在指定对象中存放查询结果(select)sqlMap.startTransaction();Customercustomer=newCustomer();sqlMap.queryForObject(“getCust”,parameterObject,customer);sqlMap.queryForObject(“getAddr”,parameterObject,customer);sqlMap.commitTransaction();例4:执行批量查询(select)sqlMap.startTransaction();Listlist=sqlMap.queryForLis
本文标题:iBATIS技术培训
链接地址:https://www.777doc.com/doc-4893071 .html