Java开发框架--spring-myBatis.xml 配置详解

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.0.xsd
		">
		
	<!-- myBatis文件 -->    
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSourceRWORR" />
		<property name="configLocation" value="classpath:configuration.xml" />
		<!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
		<property name="mapperLocations" value="classpath:com/app/mapper/*/*.xml" />
		<!-- 开启缓存支持 -->
		<property name="configurationProperties">
			<props>
				<prop key="cacheEnabled">true</prop>
				<!-- 查询时,关闭关联对象即时加载以提高性能 -->
				<prop key="lazyLoadingEnabled">false</prop>
				<!-- 设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指定),不会加载关联表的所有字段,以提高性能 -->
				<prop key="aggressiveLazyLoading">true</prop>
				<!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
				<prop key="multipleResultSetsEnabled">true</prop>
				<!-- 允许使用列标签代替列名 -->
				<prop key="useColumnLabel">true</prop>
				<!-- 允许使用自定义的主键值(比如由程序生成的UUID 32位编码作为键值),数据表的PK生成策略将被覆盖 -->
				<prop key="useGeneratedKeys">true</prop>
				<!-- 给予被嵌套的resultMap以字段-属性的映射支持 -->
				<prop key="autoMappingBehavior">FULL</prop>
				<!-- 对于批量更新操作缓存SQL以提高性能 -->
				<prop key="defaultExecutorType">BATCH</prop>
				<!-- 数据库超过25000秒仍未响应则超时 -->
				<prop key="defaultStatementTimeout">25000</prop>
			</props>
		</property>
		<property name="plugins">
			<array>
				<bean class="com.app.util.PageInterceptor">
					<property name="properties">
						<value>
							databaseType=mysql
						</value>
					</property>
				</bean>
			</array>
		</property>
	</bean>

	<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.app.dao" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>

	<!-- 配置事务管理器 -->
	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSourceRWORR" />
	</bean>
	<!-- 切换数据源 -->
	<bean id="dataSourceAdvice" class="com.app.dataswitch.DataSourceAdvice">
		<property name="sourceMap">
			<map>
				<entry key="update"
					value="(add.*)|(create.*)|(save.*)|(insert.*)|(update.*)|(del.*)|(delete.*)|(remove.*)" />
			</map>
		</property>
	</bean>
	<aop:config>
		<aop:advisor pointcut="execution(* com.app.service..*Impl.*(..))" advice-ref="dataSourceAdvice" order="1" />
	</aop:config> 

	<!-- 拦截器方式配置事物 -->
	<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="insert*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
			<tx:method name="add*" propagation="REQUIRED"   rollback-for="java.lang.Exception"/>
			<tx:method name="save*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
			<tx:method name="update*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
			<tx:method name="delete*" propagation="REQUIRED"  rollback-for="java.lang.Exception"/>
			<tx:method name="get*" propagation="SUPPORTS" read-only="true"  />
			<tx:method name="find*" propagation="SUPPORTS" read-only="true" />
			<tx:method name="select*" propagation="SUPPORTS" read-only="true" />

		</tx:attributes>
	</tx:advice>
	<!-- Spring aop事务管理 -->
	<aop:config>
		<aop:pointcut id="transactionPointcut" expression="execution(* com.app.service..*Impl.*(..))" />
		<aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" order="2" />
	</aop:config>

</beans>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值