zoukankan      html  css  js  c++  java
  • ibatis 开发中的经验 (三)Struts+Spring+Ibatis 开发环境搭建

             ibatis项目中用到了一些基本配置,须要和spring集成,看了看这些配置大部分同hibernate中是一样的,也比較好理解。仅仅是须要他们的配置中每个类的含义,还有当中的一些细节还是须要我们了解的,知识不在多,而在不断吸收和反复,在使用和练习中加深对各种问题的理解。

    读取属性文件配置

    	<bean id="propertyConfigurer"
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="locations">
    			<list>
    				<value>classpath:zydc.properties</value><!-- /web -->
    			</list>
    		</property>
    	</bean>
    

             这个类是一个spring工具类。是为了在配置文件里载入其它的属性文件。能够载入一个文件也能够载入多个,假设是同一时候载入多个文件在<list>标签里面多谢几个<value>值就可以,这个文件要写在配置文件開始,其它的bean配置中能够通过${key}这样的形式引用属性文件里的值。


    基本数据源配置

    	<!-- Apache Database Connection Pool  -->
    	<bean id="dataSource"
    		class="org.apache.commons.dbcp.BasicDataSource"
    		destroy-method="close">
    		<property name="driverClassName">
    			<value>${db.driver}</value>
    		</property>
    		<property name="url">
    			<value>${db.url}</value>
    		</property>
    		<property name="username">
    			<value>${db.user}</value>
    		</property>
    		<property name="password">
    			<value>${db.password}</value>
    		</property>
    	</bean>
    

              上面配置了一个数据源。当中有一个数据库连接池,也相当于一个主要的单元,其它的配置假设有须要会引用这个配置。

    <bean id="sqlMapClient"
    		class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    		<property name="configLocation">
    			<value>classpath:sql-map-config.xml</value>
    		</property>
    		<property name="dataSource">
    			<ref bean="dataSource" />
    		</property>
    		<property name="lobHandler" ref="lobHandler"/> 
    	</bean>
    

             这个是ibatis特有的对象,横向比較一下,相当于hibernate中的sessionFactory对象,假设你对hibernate配置比較熟悉。那么理解这个配置也会认为easy的多。

    里面主要有三个属性这个类表示sqlMapClientfactory交给spring管理。达到session共享。另一个configlocation属性,这是读取ibatis自己的配置文件,你是否还记得hibernate中也有一个hibernate.cfg.xml配置文件。这两个是相似的。

    其次。须要给sqlmapclientfactory配置数据源,上面已经配置好,将他的id引用一下就可以。

    最后一个属性也非常重要,表示处理一些大的对象,lob即large object,大对象能够达到2GB。

    <bean id="lobHandler"class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>

    通过从网上查阅资料,除了Oracle9i以及更高版本号数据库。都是用这个类配置.

    简单JDBC模板类

    	<bean id="jdbcTemplate"
    		class="org.springframework.jdbc.core.JdbcTemplate">
    		<property name="dataSource">
    			<ref local="dataSource" />
    		</property>
    	</bean>
    

             对照hibernate中gettemplate()方法具有异曲同工之妙。都是将操作封装了,比方保存操作,仅仅须要jdbcTemplate.insert()一个方法就完毕了,不须要一大堆别的代码。

    事务管理配置

             在ibatis中事务配置是这样的思路非常清晰。首先,是为每个单一的事务,它仅仅对jdbc数据库连接起作用,也就是说它能够为每个dao层的实现服务,而不能够为服务层开启事务,例如以下

    	<bean id="transactionManager"
    		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource">
    			<ref local="dataSource" />
    		</property>
    
    	</bean>
    

              假设须要为服务层开发事务,须要配置事务代理类,例如以下

    <bean id="baseTransactionProxy"
    		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
    		abstract="true">
    		<property name="transactionManager">
    			<ref bean="transactionManager" />
    		</property>
    		<property name="transactionAttributes">
    			<props>
    				<prop key="insert*">PROPAGATION_REQUIRED</prop>
    				<prop key="update*">PROPAGATION_REQUIRED</prop>
    				<prop key="delete*">PROPAGATION_REQUIRED</prop>
    				<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
    			</props>
    		</property>
    	</bean>
    

               该事务代理类原理也简单。利用了拦截器机制,通过拦截请求方法调用。假设同他的事务属性中的key配置一样。它将依照自己的事务配置进行事务管理。这样的方式同hibernate中是一样的。

               到此。ibatis框架同spring集成配置就配置完了。里面也没多少内容,把这个配置文之后在配置一下sql语句文件,就能够正常开发了,以后。再用ibatis就仅仅是写写sql语句,ibatis这个框架相对于hibernate简单了非常多。学习easy,主要是对它的一些动态标签配置,使用几次后也会比較熟了。

  • 相关阅读:
    POJ 2240 Arbitrage spfa 判正环
    POJ 3259 Wormholes spfa 判负环
    POJ1680 Currency Exchange SPFA判正环
    HDU5649 DZY Loves Sorting 线段树
    HDU 5648 DZY Loves Math 暴力打表
    HDU5647 DZY Loves Connecting 树形DP
    CDOJ 1071 秋实大哥下棋 线段树
    HDU5046 Airport dancing links 重复覆盖+二分
    HDU 3335 Divisibility dancing links 重复覆盖
    FZU1686 神龙的难题 dancing links 重复覆盖
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8302642.html
Copyright © 2011-2022 走看看