版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012081441/article/details/80746538
什么是JdbcTemplate
为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架.
作为 SpringJDBC 框架的核心, JDBC 模板的设计目的是为不同类型的JDBC操作提供模板方法. 每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务.通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低.
JdbcTemplate主要提供以下五类方法:
execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句;
update方法及batchUpdate方法:update方法用于执行新增、修改、删除等语句;batchUpdate方法用于执行批处理相关语句;
query方法及queryForXXX方法:用于执行查询相关语句;
call方法:用于执行存储过程、函数相关语句。
说在前面
之前有整合过SpringBoot+JdbcTemplate和SpringBoot+mybatis,都使用了单数据源。在单数据源的情况下,Spring Boot的配置非常简单,只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展,我们通常会进行数据库拆分或是引入其他数据库,从而我们需要配置多个数据源,下面基于之前的JdbcTemplate介绍下多数据源的配置方式。
项目结构
代码实现
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文件
/**
* 数据源配置
* @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 stub
String 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 stub
String sql = "select * from sys_user";
List<Map<String, Object>> userList = secondaryJdbcTemplate.queryForList(sql);
return userList;
}
}
5、UserController.java
@Controller
public class UserController {
@Resource
private 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 stub
SpringApplication.run(APP.class, args);
}
}
扫描二维码关注公众号,回复:
6182804 查看本文章