spring,mybatis配置多数据源

来源:互联网 发布:百度输入法linux 编辑:程序博客网 时间:2024/06/10 07:58


双数据配置,一个数据库的操作放在文件夹"one"下面。另一个数据库的操作放到文件夹"two"下面


config.properties:参数配置文件

# Database Connection Poolproxool.alias=DBPoolproxool.maximumActiveTime=900000proxool.maximumConnectionCount=300proxool.minimumConnectionCount=5proxool.houseKeepingSleepTime=90000proxool.simultaneousBuildThrottle=10proxool.prototypeCount=5proxool.testBeforeUse=trueproxool.houseKeepingTestSql=select now()proxool.trace=true# Main Databasejdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/one?useUnicode=true&characterEncoding=UTF-8jdbc.userName=rootjdbc.password=roototherjdbc.driverClassName=com.mysql.jdbc.Driverotherjdbc.url=jdbc:mysql://127.0.0.1:3306/two?useUnicode=true&characterEncoding=UTF-8otherjdbc.userName=roototherjdbc.password=root


DataSourceConfigOne.java: 数据源配置文件1

package com.love.mvc.config;import javax.sql.DataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.logicalcobwebs.proxool.ProxoolDataSource;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;/** * 多数据源配置 * @author Administrator * */@Configurationpublic class DataSourceConfigOne {@Value("${jdbc.driverClassName}")private String driverClassName;@Value("${jdbc.url}")private String url;@Value("${jdbc.userName}")private String username;@Value("${jdbc.password}")private String password;@Bean(name = "dataSourceOne")public DataSource DataSourceOne(){ProxoolDataSource ds = new ProxoolDataSource();ds.setDriver(driverClassName);ds.setDriverUrl(url);ds.setUser(username);ds.setPassword(password);ds.setAlias("alias1");  //--可以配置其它return ds;}@Bean(name = "oneSqlSessionFactory")public SqlSessionFactory oneSqlSessionFactory(@Qualifier("dataSourceOne") DataSource dataSource) throws Exception{SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);Resource res=new ClassPathResource("mybatis-config.xml");  bean.setConfigLocation(res);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/one/*.xml"));//Mybatis使用Log4j记录日志/*org.apache.ibatis.session.Configuration myBatisConfig = new org.apache.ibatis.session.Configuration();myBatisConfig.setLogImpl(Log4jImpl.class);bean.setConfiguration(myBatisConfig);*/                return bean.getObject();}@Bean(name = "oneTransactionManager")public DataSourceTransactionManager oneTransactionManager(@Qualifier("dataSourceOne") DataSource dataSource){return new DataSourceTransactionManager(dataSource);}@Bean(name="oneSqlSessionTemplate")public SqlSessionTemplate oneSqlSessionTemplate(@Qualifier("oneSqlSessionFactory") SqlSessionFactory sqlSessionFactory){return new SqlSessionTemplate(sqlSessionFactory);}}


DataSourceConfigTwo.java:数据源配置文件2

package com.love.mvc.config;import javax.sql.DataSource;import org.apache.ibatis.session.SqlSessionFactory;import org.logicalcobwebs.proxool.ProxoolDataSource;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.SqlSessionTemplate;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.ClassPathResource;import org.springframework.core.io.Resource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;@Configurationpublic class DataSourceConfigTwo {@Value("${otherjdbc.driverClassName}")private String driverClassName;@Value("${otherjdbc.url}")private String url;@Value("${otherjdbc.userName}")private String username;@Value("${otherjdbc.password}")private String password;@Bean(name = "dataSourceTwo")public DataSource DataSourceTwo(){ProxoolDataSource ds = new ProxoolDataSource();ds.setDriver(driverClassName);ds.setDriverUrl(url);ds.setUser(username);ds.setPassword(password);ds.setAlias("alias2");  //--可以配置其它return ds;}@Bean(name = "twoSqlSessionFactory")public SqlSessionFactory twoSqlSessionFactory(@Qualifier("dataSourceTwo") DataSource dataSource) throws Exception{SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);Resource res=new ClassPathResource("mybatis-config.xml");  bean.setConfigLocation(res);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/two/*.xml"));//Mybatis使用Log4j记录日志/*org.apache.ibatis.session.Configuration myBatisConfig = new org.apache.ibatis.session.Configuration();myBatisConfig.setLogImpl(Log4jImpl.class);bean.setConfiguration(myBatisConfig);*/                return bean.getObject();}@Bean(name = "twoTransactionManager")public DataSourceTransactionManager twoTransactionManager(@Qualifier("dataSourceTwo") DataSource dataSource){return new DataSourceTransactionManager(dataSource);}@Bean(name="twoSqlSessionTemplate")public SqlSessionTemplate twoSqlSessionTemplate(@Qualifier("twoSqlSessionFactory") SqlSessionFactory sqlSessionFactory){return new SqlSessionTemplate(sqlSessionFactory);}}


mybatis-config.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> <!-- 使用jdbc的getGeneratekeys获取自增主键值 --> <setting name="useGeneratedKeys" value="true"/> <!-- 使用列别名替换别名,默认true --> <setting name="useColumnLabel" value="true"/> <!-- 开启驼峰命名转换 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> </configuration>

spring-mybatis.xml:mybatis配置文件,这里java文件,其实和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:mybatis="http://mybatis.org/schema/mybatis-spring"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/tx         http://www.springframework.org/schema/tx/spring-tx.xsd        http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context.xsd          http://mybatis.org/schema/mybatis-spring         http://mybatis.org/schema/mybatis-spring.xsd"default-autowire="byName" default-lazy-init="false">            <!-- 配置文件地址 --><context:property-placeholder location="classpath:config.properties"/><mybatis:scan base-package="com.love.mvc.dao.one" factory-ref="oneSqlSessionFactory"/><mybatis:scan base-package="com.love.mvc.dao.two" factory-ref="twoSqlSessionFactory"/><!-- 事务 --><tx:annotation-driven transaction-manager="oneTransactionManager"/><!-- 事务 --><tx:annotation-driven transaction-manager="twoTransactionManager"/></beans>

IStudentDao.java

package com.love.mvc.dao.one;import java.util.Map;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface IStudentDao {/** * 根据用户名查询 * @param username * @return */public Map<String,Object> query(Integer id);}

IStudentDao.xml  student表在数据库one中

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.love.mvc.dao.one.IStudentDao"><select id="query" resultType="map">select * from student where id=#{id}</select></mapper>

IClassDao.java  class表在数据库two中

package com.love.mvc.dao.two;import java.util.Map;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface IClassDao {/** * 根据用户名查询 * @param username * @return */public Map<String,Object> query(Integer id);}

IClassDao.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.love.mvc.dao.two.IClassDao"><select id="query" resultType="map">select * from class where id=#{id}</select></mapper>


MainController.java 使用双数据源,调用两个数据库中的数据。
@Controller@RequestMapping("/main")public class MainController {@Autowiredprivate IStudentDao studentDao;@Autowiredprivate IClassDao classDao;@RequestMapping("/index")public ModelAndView index(){ModelAndView view = new ModelAndView();view.setViewName("login");Map<String,Object> student = studentDao.query(1);Map<String,Object> classs = classDao.query(1);return view;}}


附件pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.love.mvc</groupId>  <artifactId>myweb</artifactId>  <version>0.0.1-SNAPSHOT</version>    <properties>  <commons-lang.version>2.6</commons-lang.version>  <slf4j.version>1.7.6</slf4j.version>  <spring.version>4.2.4.RELEASE</spring.version><!--Spring版本号-->  <jackson.version>2.5.4</jackson.version>  </properties>  <dependencyManagement>    <dependencies>      <dependency>        <groupId>org.springframework</groupId>        <artifactId>spring-framework-bom</artifactId>        <version>${spring.version}</version>        <type>pom</type>        <scope>import</scope>      </dependency>    </dependencies>  </dependencyManagement>  <dependencies>  <!-- mvc -->    <dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>    <dependency>    <groupId>javax.servlet</groupId>    <artifactId>servlet-api</artifactId>    <version>2.5</version>    </dependency>        <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-webmvc</artifactId>    </dependency>    <dependency><groupId>org.springframework</groupId><artifactId>spring-jms</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId></dependency><dependency>  <groupId>org.springframework</groupId>  <artifactId>spring-orm</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId></dependency><!-- 日志 -->    <dependency>      <groupId>commons-lang</groupId>      <artifactId>commons-lang</artifactId>      <version>${commons-lang.version}</version>    </dependency>    <dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-log4j12</artifactId>    <version>${slf4j.version}</version>    </dependency>        <dependency>           <groupId>commons-fileupload</groupId>           <artifactId>commons-fileupload</artifactId>           <version>1.3.1</version>       </dependency>       <dependency>           <groupId>com.fasterxml.jackson.core</groupId>           <artifactId>jackson-databind</artifactId>           <version>${jackson.version}</version>       </dependency>           <!-- mybatis --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.38</version></dependency>     <dependency>     <groupId>org.mybatis</groupId>     <artifactId>mybatis</artifactId>     <version>3.4.4</version>     </dependency>     <dependency>     <groupId>org.mybatis</groupId>     <artifactId>mybatis-spring</artifactId>     <version>1.3.1</version>     </dependency>          <!-- 数据库连接池 --><!-- <dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>2.5.1</version></dependency> --><dependency>  <groupId>com.cloudhopper.proxool</groupId>  <artifactId>proxool</artifactId>  <version>0.9.1</version></dependency><!-- framemarker --><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.23</version></dependency>  </dependencies>  <build>    <finalName>myweb</finalName>  </build></project>



原创粉丝点击