SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用
什么是JdbcTemplate
為了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定義了一個抽象層, 以此建立一個JDBC存取框架.
作為 SpringJDBC 框架的核心, JDBC 模板的設(shè)計目的是為不同類型的JDBC操作提供模板方法. 每個模板方法都能控制整個過程,并允許覆蓋過程中的特定任務(wù).通過這種方式,可以在盡可能保留靈活性的情況下,將數(shù)據(jù)庫存取的工作量降到最低.
JdbcTemplate主要提供以下五類方法:
execute方法:可以用于執(zhí)行任何SQL語句,一般用于執(zhí)行DDL語句;
update方法及batchUpdate方法:update方法用于執(zhí)行新增、修改、刪除等語句;batchUpdate方法用于執(zhí)行批處理相關(guān)語句;
query方法及queryForXXX方法:用于執(zhí)行查詢相關(guān)語句;
call方法:用于執(zhí)行存儲過程、函數(shù)相關(guān)語句。
說在前面
之前有整合過SpringBoot+JdbcTemplate和SpringBoot+mybatis,都使用了單數(shù)據(jù)源。在單數(shù)據(jù)源的情況下,Spring Boot的配置非常簡單,只需要在application.properties文件中配置連接參數(shù)即可。但是往往隨著業(yè)務(wù)量發(fā)展,我們通常會進行數(shù)據(jù)庫拆分或是引入其他數(shù)據(jù)庫,從而我們需要配置多個數(shù)據(jù)源,下面基于之前的JdbcTemplate介紹下多數(shù)據(jù)源的配置方式。
項目結(jié)構(gòu)
代碼實現(xiàn)
1、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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.fit</groupId><artifactId>SpringBootJdbcTemplate</artifactId><version>0.0.1-SNAPSHOT</version><!-- SpringBoot父類依賴引用 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.2.RELEASE</version></parent><dependencies><!-- jdbc--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><!-- SpringBoot web 組件 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>
2、application.properties文件
#primary
spring.datasource.primary.url=jdbc:mysql://127.0.0.1:3306/mydb
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.jdbc.Driver#secondary
spring.datasource.secondary.url=jdbc:mysql://127.0.0.1:3306/mydb1
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.jdbc.Driver
3、DataSourceConfig.java文件
/*** 數(shù)據(jù)源配置* @author zlzhaoe**/
@Configuration
public class DataSourceConfig {@Bean(name = "primaryDataSource")@Qualifier("primaryDataSource")@ConfigurationProperties(prefix="spring.datasource.primary")public DataSource primaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "secondaryDataSource")@Qualifier("secondaryDataSource")@Primary@ConfigurationProperties(prefix="spring.datasource.secondary")public DataSource secondaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "primaryJdbcTemplate")public JdbcTemplate primaryJdbcTemplate(@Qualifier("primaryDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}@Bean(name = "secondaryJdbcTemplate")public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {return new JdbcTemplate(dataSource);}
}
4、com.fit.service層
public interface UserService {public List<Map<String, Object>> primaryUserList();public List<Map<String, Object>> secondaryUserList();
}@Service
public class UserServiceImpl implements UserService {@Autowired@Qualifier("primaryJdbcTemplate")private JdbcTemplate primaryJdbcTemplate;@Autowired@Qualifier("secondaryJdbcTemplate")private JdbcTemplate secondaryJdbcTemplate;public List<Map<String, Object>> primaryUserList() {// TODO Auto-generated method stubString sql = "select * from sys_user";List<Map<String, Object>> userList = primaryJdbcTemplate.queryForList(sql);return userList;}public List<Map<String, Object>> secondaryUserList() {// TODO Auto-generated method stubString sql = "select * from sys_user";List<Map<String, Object>> userList = secondaryJdbcTemplate.queryForList(sql);return userList;}}
5、UserController.java
@Controller
public class UserController {@Resourceprivate UserService userService;@ResponseBody@RequestMapping(value = "primaryUserList")public List<Map<String, Object>> userList() {return userService.primaryUserList();}@ResponseBody@RequestMapping(value = "secondaryUserList")public List<Map<String, Object>> secondaryUserList() {return userService.secondaryUserList();}
}
6、APP.java文件
@SpringBootApplication
public class APP {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubSpringApplication.run(APP.class, args);}
}
源碼下載
總結(jié)
以上是生活随笔為你收集整理的SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【微服务架构】SpringCloud之E
- 下一篇: 【微服务架构】SpringCloud使用