創建maven項目並添加依賴 我這裏用的是SQLserver mybatis
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.5</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
application.properties配置文件中添加 多個數據源
spring.datasource.test1.jdbcUrl=jdbc:sqlserver://ip:port;DatabaseName=xxglptcsDB
spring.datasource.test1.username=sa
spring.datasource.test1.password=123
spring.datasource.test1.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.test2.jdbcUrl=jdbc:sqlserver://ip:port;DatabaseName=xxglptcsDB1
spring.datasource.test2.username=sa
spring.datasource.test2.password=123
spring.datasource.test2.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
項目結構
啓動類
這裏掃包除了controller層 service層 還要添加DataSource包 (博主因爲沒掃這個包找了兩個小時的錯……)
在網上找了兩個小時也沒有一個管用的 ,然後博主突然想到這配置文件跟數據源配置類好像也沒有關聯,於是就添加了掃DataSource包
如果沒有掃數據源配置包 可能會報這個錯Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
或者'url' attribute is not specified and no embedded datasource could be configured.
package com.vhukze.App;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
/**
* @author zsz
* @version
* @創建時間:2019年9月2日 下午1:08:00
*/
@SpringBootApplication
@ComponentScan(basePackages= {"com.vhukze.controller","com.vhukze.test1.service","com.vhukze.test2.service","com.vhukze.datasource"})
@MapperScan({"com.vhukze.test1.mapper","com.vhukze.test2.mapper"})
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
數據源配置類
test1
package com.vhukze.datasource;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
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.jdbc.datasource.DataSourceTransactionManager;
/**
* @author zsz
* @version
* @創建時間:2019年9月2日 上午11:19:09
*/
@Configuration
@MapperScan(basePackages="com.vhukze.test1.mapper",sqlSessionFactoryRef="test1SqlSessionFactory")//掃描對應的dao包
public class Datasource1 {
@Bean(name="test1DataSource")
@ConfigurationProperties(prefix="spring.datasource.test1")//這裏是配置文件裏定義的屬性名
@Primary //默認優先使用
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
//@Qualifier 從spring容器中查找名爲test1DataSource的bean
@Bean(name="test1SqlSessionFactory")
@Primary //默認優先使用
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
//需要加載配置文件的話
// bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:*.xml"));
return bean.getObject();
}
/**
* @author zsz
* @編輯時間 2019年9月2日上午11:45:07
* @編輯說明 事務管理
* @param dataSource
* @return
*/
@Bean(name="test1TuansactionManager")
@Primary //默認優先使用
public DataSourceTransactionManager testTransactionManager(@Qualifier("test1DataSource") DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
@Bean(name="test1SqlSessionTemplate")
@Primary //默認優先使用
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
test2
package com.vhukze.datasource;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
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.jdbc.datasource.DataSourceTransactionManager;
/**
* @author zsz
* @version
* @創建時間:2019年9月2日 上午11:53:15
*/
@Configuration
@MapperScan(basePackages="com.vhukze.test2.mapper",sqlSessionFactoryRef="test2SqlSessionFactory")//掃描對應的dao包
public class Datasource2 {
@Bean(name="test2DataSource")
@ConfigurationProperties(prefix="spring.datasource.test2")//這裏是配置文件裏定義的屬性名
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name="test2SqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("test2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
//需要加載配置文件的話
// bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:*.xml"));
return bean.getObject();
}
/**
* @author zsz
* @編輯時間 2019年9月2日上午11:54:08
* @編輯說明 事務管理
* @param dataSource
* @return
*/
@Bean(name="test2TuansactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("test2DataSource") DataSource dataSource){
return new DataSourceTransactionManager(dataSource);
}
@Bean(name="test2SqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("test2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
到此所有的配置都完成了
接下來就是走一下流程了
controller層
@RestController
public class UserController {
@Autowired
private User1Service service1;
@Autowired
private User2Service service2;
@RequestMapping("index")
public String index() {
service1.insert();
service2.insert();
return "success";
}
}
service層 (1和2都是一樣的 這裏貼一個就可以了)
@Service
public class User1Service {
@Autowired
private User1Mapper mapper1;
public void insert() {
mapper1.insert();
}
}
dao層(1和2都是一樣的 這裏貼一個就可以了)
@Repository
public interface User1Mapper{
@Insert("insert into user_demo values('1','1')")
public void insert();
}
啓動項目訪問映射路徑