加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Spring+MyBatis多数据源配置实现示例

发布时间:2020-05-23 02:12:53 所属栏目:Java 来源:互联网
导读:最近用到了MyBatis配置多数据源,原以为简单配置下就行了,实际操作后发现还是要费些事的,这里记录下,以作备忘

最近用到了MyBatis配置多数据源,原以为简单配置下就行了,实际操作后发现还是要费些事的,这里记录下,以作备忘

不多废话,直接上代码,后面会有简单的实现介绍

jdbc和log4j的配置

#定义输出格式
ConversionPattern=%d %-5p [%t] %c - %m%n

log4j.rootLogger=DEBUG,Console
log4j.logger.com.cnblogs.lzrabbit=DEBUG
log4j.logger.org.springframework=ERROR
log4j.logger.org.mybatis=ERROR
log4j.logger.org.apache.ibatis=ERROR
log4j.logger.org.quartz=ERROR
log4j.logger.org.apache.axis2=ERROR
log4j.logger.org.apache.axiom=ERROR
log4j.logger.org.apache=ERROR
log4j.logger.httpclient=ERROR
#log4j.additivity.org.springframework=false
#Console 
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Threshold=DEBUG 
log4j.appender.Console.Target=System.out 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=${ConversionPattern}
#log4j.appender.Console.encoding=UTF-8

#org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DailyFile.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.DailyFile.File=${myApp.root}/logs/daily.log
log4j.appender.DailyFile.Append=true
log4j.appender.DailyFile.Threshold=DEBUG
log4j.appender.DailyFile.layout=org.apache.log4j.PatternLayout
log4j.appender.DailyFile.layout.ConversionPattern=${ConversionPattern}
log4j.appender.DailyFile.encoding=UTF-8

# %c 输出日志信息所属的类的全名 
# %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss},输出类似:2002-10-18- 22:10:28
# %f 输出日志信息所属的类的类名 
# %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行 
# %m 输出代码中指定的信息,如log(message)中的message 
# %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n” 
# %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推 
# %r 输出自应用启动到输出该日志信息所耗费的毫秒数 
# %t 输出产生该日志事件的线程名

#============================================================================
# MySQL
#============================================================================
jdbc.mysql.driver=com.mysql.jdbc.Driver
jdbc.mysql.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
jdbc.mysql.username=root
jdbc.mysql.password=root

#============================================================================
# MS SQL Server
#============================================================================
#jdbc.sqlserver.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbc.sqlserver.url=jdbc:sqlserver://127.0.0.1:1433;database=test;
#jdbc.sqlserver.username=sa
#jdbc.sqlserver.password=sa

#============================================================================
# MS SQL Server (JTDS)
#============================================================================
jdbc.sqlserver.driver=net.sourceforge.jtds.jdbc.Driver
jdbc.sqlserver.url=jdbc:jtds:sqlserver://127.0.0.1:1433/test
jdbc.sqlserver.username=sa
jdbc.sqlserver.password=sa


#============================================================================
# 通用配置
#============================================================================
jdbc.initialSize=5
jdbc.minIdle=5
jdbc.maxIdle=20
jdbc.maxActive=100
jdbc.maxWait=100000
jdbc.defaultAutoCommit=false
jdbc.removeAbandoned=true
jdbc.removeAbandonedTimeout=600
jdbc.testWhileIdle=true
jdbc.timeBetweenEvictionRunsMillis=60000
jdbc.numTestsPerEvictionRun=20
jdbc.minEvictableIdleTimeMillis=300000

单数据源时的Spring配置文件

<?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:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:jdbc.properties"/>
 </bean>
  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.mysql.driver}"/>
  <property name="url" value="${jdbc.mysql.url}"/>
  <property name="username" value="${jdbc.mysql.username}"/>
  <property name="password" value="${jdbc.mysql.password}"/>
  <property name="initialSize" value="${jdbc.initialSize}"/>
  <property name="minIdle" value="${jdbc.minIdle}"/>
  <property name="maxIdle" value="${jdbc.maxIdle}"/>
  <property name="maxActive" value="${jdbc.maxActive}"/>
  <property name="maxWait" value="${jdbc.maxWait}"/>
  <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"/>
  <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
  <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/>
  <property name="testWhileIdle" value="${jdbc.testWhileIdle}"/>
  <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
  <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}"/>
  <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
 </bean>
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="dataSource"/>
 </bean>

 <!-- mybatis.spring自动映射 -->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.cnblogs.lzrabbit"/>
 </bean>

 <!-- 自动扫描,多个包以 逗号分隔 -->
 <context:component-scan base-package="com.cnblogs.lzrabbit"/>
 <aop:aspectj-autoproxy/>
</beans>

多数据源时Spring配置文件

<?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:context="http://www.springframework.org/schema/context"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 http://www.springframework.org/schema/context
 http://www.springframework.org/schema/context/spring-context-3.0.xsd
  http://www.springframework.org/schema/aop
   http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location" value="classpath:jdbc.properties"/>
 </bean>
 <bean id="sqlServerDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.sqlserver.driver}"/>
  <property name="url" value="${jdbc.sqlserver.url}"/>
  <property name="username" value="${jdbc.sqlserver.username}"/>
  <property name="password" value="${jdbc.sqlserver.password}"/>
  <property name="initialSize" value="${jdbc.initialSize}"/>
  <property name="minIdle" value="${jdbc.minIdle}"/>
  <property name="maxIdle" value="${jdbc.maxIdle}"/>
  <property name="maxActive" value="${jdbc.maxActive}"/>
  <property name="maxWait" value="${jdbc.maxWait}"/>
  <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"/>
  <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
  <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/>
  <property name="testWhileIdle" value="${jdbc.testWhileIdle}"/>
  <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
  <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}"/>
  <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
 </bean>
 <bean id="mySqlDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="${jdbc.mysql.driver}"/>
  <property name="url" value="${jdbc.mysql.url}"/>
  <property name="username" value="${jdbc.mysql.username}"/>
  <property name="password" value="${jdbc.mysql.password}"/>
  <property name="initialSize" value="${jdbc.initialSize}"/>
  <property name="minIdle" value="${jdbc.minIdle}"/>
  <property name="maxIdle" value="${jdbc.maxIdle}"/>
  <property name="maxActive" value="${jdbc.maxActive}"/>
  <property name="maxWait" value="${jdbc.maxWait}"/>
  <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}"/>
  <property name="removeAbandoned" value="${jdbc.removeAbandoned}"/>
  <property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}"/>
  <property name="testWhileIdle" value="${jdbc.testWhileIdle}"/>
  <property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}"/>
  <property name="numTestsPerEvictionRun" value="${jdbc.numTestsPerEvictionRun}"/>
  <property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}"/>
 </bean>
 <bean id="multipleDataSource" class="com.cnblogs.lzrabbit.MultipleDataSource">
  <property name="defaultTargetDataSource" ref="mySqlDataSource"/>
  <property name="targetDataSources">
   <map>
    <entry key="mySqlDataSource" value-ref="mySqlDataSource"/>
    <entry key="sqlServerDataSource" value-ref="sqlServerDataSource"/>
   </map>
  </property>
 </bean>
 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  <property name="dataSource" ref="multipleDataSource"/>
 </bean>

 <!-- mybatis.spring自动映射 -->
 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  <property name="basePackage" value="com.cnblogs.lzrabbit"/>
 </bean>

 <!-- 自动扫描,多个包以 逗号分隔 -->
 <context:component-scan base-package="com.cnblogs.lzrabbit"/>
 <aop:aspectj-autoproxy/>
</beans>

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读