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,主要是对它的一些动态标签配置,使用几次后也会比較熟了。

【推广】 免费学中医,健康全家人
原文地址:https://www.cnblogs.com/zhchoutai/p/8302642.html