pom.xml
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
<scope>runtime</scope>
</dependency>
mysql 配置累
package com.etc.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
@Configuration
@MapperScan(basePackages = {"com.etc.mapper"},sqlSessionFactoryRef="first.SqlSessionTemplate")
public class MysqlDataSourceConfig {
//mapper放在不同目录
private static final String MAPPER_PATH = "classpath:/mappers/*Mapper.xml";
private static final String ENTITY_PACKAGE = "com.etc.dto";
@Bean(name = "dataSource")
@Primary
@Qualifier("dataSource")
@ConfigurationProperties(prefix="spring.datasource.first")
public DataSource getMyDataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "first.SqlSessionTemplate")
@Primary
public SqlSessionFactory devSqlSessionFactory(
@Qualifier("dataSource") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources(MAPPER_PATH));
sessionFactory.setTypeAliasesPackage(ENTITY_PACKAGE);
return sessionFactory.getObject();
}
@Bean
@Primary
public PlatformTransactionManager mysqlTransactionManager(@Qualifier("dataSource") DataSource mysqlDataSource)
{
return new DataSourceTransactionManager(mysqlDataSource);
}
}
sqlserver 配置
package com.etc.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
//@MapperScan必须配置
@Configuration
@MapperScan(basePackages = {"com.etc.mappers"},sqlSessionFactoryRef="second.SqlSessionTemplate")
public class SqlServerDataSourceConfig {
private static final String MAPPER_PATH = "classpath:/mapper/*.xml";
private static final String ENTITY_PACKAGE = "com.etc.dto";
@Bean(name = "sqlServerDataSource")
@Qualifier("sqlServerDataSource")
@ConfigurationProperties(prefix="spring.datasource.second")
public DataSource getMyDataSource(){
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(
@Qualifier("sqlServerDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "second.SqlSessionTemplate")
public SqlSessionFactory devSqlSessionFactory(
@Qualifier("sqlServerDataSource") DataSource ddataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(ddataSource);
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources(MAPPER_PATH));
sessionFactory.setTypeAliasesPackage(ENTITY_PACKAGE);
return sessionFactory.getObject();
}
@Bean
public PlatformTransactionManager sqlServerTransactionManager(@Qualifier("sqlServerDataSource") DataSource sqlServerDataSource)
{
return new DataSourceTransactionManager(sqlServerDataSource);
}
}
mapper.xml 放在不同目录
mapper.java
application.properties
spring.datasource.first.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.first.jdbc-url= jdbc:mysql://172.17.33.69:3306/etc_manager?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&noAccessToProcedureBodies=true&zeroDateTimeBehavior=convertToNull
spring.datasource.first.username=root
spring.datasource.first.password=root
spring.datasource.second.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.second.jdbc-url=jdbc:sqlserver://192.150.150.100:1433;DatabaseName=jtetc
spring.datasource.second.username=root
spring.datasource.second.password=root
sqlserver.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.etc.mappers.VtransactionMapper">
<resultMap id="vtransactionMap" type="com.etc.dto.VTransaction">
<id property="id" column="ID" javaType="java.lang.String"></id>
<result property="cardNo" column="CARD_NO" javaType="java.lang.String"></result>
<result property="accountId" column="ACCOUNT_ID" javaType="java.lang.String"></result>
<result property="carSerial" column="CAR_SERIAL" javaType="java.lang.String"></result>
<result property="enTime" column="EN_TIME" javaType="java.sql.Timestamp"></result>
<result property="icTransTime" column="IC_TRANS_TIME" javaType="java.sql.Timestamp"></result>
<result property="description" column="DESCRIPTION" javaType="java.lang.String"></result>
<!--<result property="cash" column="CASH" javaType="java.lang.String"></result>-->
</resultMap>
<sql id="Base_Column_List">
ID, CARD_NO, ACCOUNT_ID, CAR_SERIAL, EN_TIME, IC_TRANS_TIME, DESCRIPTION
</sql>
<select id="selectById" parameterType="java.lang.String" resultMap="vtransactionMap">
select
<include refid="Base_Column_List"/>
from v_transaction
where id = #{id}
</select>
</mapper>