最近遇到一个项目,需要访问都多个数据源,并且数据库是不同厂商(mysql, sqlserver).
所以对此做了一些研究,这里咱们采用渐进的方式来展开,先谈谈单一数据源配置。(稍后有时间会陆续补充其他文章)
先上代码吧:
1. database.properties 配置文件(配置多个数据源的 属性值)
1 #MYSQL 2 mysql.jdbc.driverClassName=com.mysql.jdbc.Driver 3 mysql.jdbc.url=jdbc:mysql://localhost:3306/dragonfly?useUnicode=true&characterEncoding=utf-8 4 mysql.jdbc.username=master 5 mysql.jdbc.password=Master_12345 6 # SQL SERVER 7 mssql.jdbc.driverClassName=net.sourceforge.jtds.jdbc.Driver 8 mssql.jdbc.url=jdbc:jtds:sqlserver://192.168.1.153:1433/MES 9 mssql.jdbc.username=SA 10 mssql.jdbc.password=123456
2. 引入上述配置文件到applicationContext.xml 中
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreResourceNotFound" value="false" />
<property name="locations">
<list>
<!-- 这里支持多种寻址方式:classpath和file -->
<value>classpath:/database.properties</value>
<value>classpath:/config.properties</value>
<!-- 推荐使用file的方式引入,这样可以将配置和代码分离 -->
<!-- <value>file:/opt/demo/config/demo-message.properties</value>-->
</list>
</property>
</bean>
3. 配置datasource / sessionFactory / MapperScannerConfigure
<bean id="mysqlDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"><value>${mysql.jdbc.driverClassName}</value></property> <property name="url"><value>${mysql.jdbc.url}</value></property> <property name="username"><value>${mysql.jdbc.username}</value></property> <property name="password"><value>${mysql.jdbc.password}</value></property> </bean> <bean id="mysqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="mysqlDataSource" /> <!-- 指定sqlMapConfig总配置文件,订制的environment在spring容器中不在生效--> <property name="configLocation" value="classpath:mybatis-config-mysql.xml"/> <!--指定实体类映射文件,可以指定同时指定某一包以及子包下面的所有配置文件,mapperLocations和configLocation有一个即可, 当需要为实体类指定别名时,可指定configLocation属性,再在mybatis总配置文件中采用mapper引入实体类映射文件 --> <property name="mapperLocations"> <list> <value>classpath*:/mysqlmapper/*Mapper.xml</value> </list> </property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.robin.it.permission.dao" /> <!-- optional unless there are multiple session factories defined --> <property name="sqlSessionFactoryBeanName" value="mysqlSessionFactory" /> </bean>
注: 黄色高亮部分大家请注意,这个要和下一张将要讲的多数据源有关系。
4. Spring + Mybatis 的分页控件配置文件: mybatis-config-mysql.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <setting name="cacheEnabled" value="false" /> <setting name="lazyLoadingEnabled" value="false" /> <setting name="aggressiveLazyLoading" value="false"/> <setting name="jdbcTypeForNull" value="NULL"/> </settings> <plugins> <plugin interceptor="com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor"> <property name="dialectClass" value="com.github.miemiedev.mybatis.paginator.dialect.MySQLDialect"/> </plugin> </plugins> </configuration>
至此, 单一数据源的配置就完成了! (暂时不提供源代码, 请见谅)