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配置比较熟悉,那么理解这个配置也会觉得容易的多。

    里面主要有三个属性这个类表示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简单了很多,学习容易,主要是对它的一些动态标签配置,使用几次后也会比较熟了。

  • 相关阅读:
    快速排序
    常见的正则表达式验证(更新中)
    中介者模式
    RadioButtonList控件如何取得选中的值
    职责链模式
    设计模式之GOF23建造者模式
    设计模式之GOF23工厂模式02
    设计模式GOF23之工厂模式01
    多线程测试时的辅助类--CountDownLatch
    设计模式GOF23之单例模式
  • 原文地址:https://www.cnblogs.com/lilongsheng1125/p/4978527.html
Copyright © 2011-2022 走看看