1.主要用的阿里Druid连接池
xml如下
<!-- Druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<!--Driver连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
2.配置 application.properties 或者yml ,我这里用的 application.properties
server.port=6666
# 数据源1
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://localhost:3306/dome?allowPublicKeyRetrieval=true&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
# 数据源2
spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/test1?allowPublicKeyRetrieval=true&allowMultiQueries=true&useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
3.配置DataSourceConfig
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 javax.sql.DataSource;
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
4. 添加 JdbcTemplateConfig 配置类
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
@Configuration
public class JdbcTemplateConfig {
@Bean
public JdbcTemplate primaryJdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean(name = "secondaryJdbcTemplate")
public JdbcTemplate secondaryJdbcTemplate(@Qualifier("secondaryDataSource") DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
}
5.上代码 R 是返回值对象,自己可直接返回map ,( 我库的数据就两条 sql用 * 了)
import com.test.demo.utils.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author lbap
*/
@RestController
@RequestMapping("/a")
public class UserController {
@Autowired
@Qualifier("primaryJdbcTemplate")
private JdbcTemplate primaryJdbcTemplate;
@Autowired
@Qualifier("secondaryJdbcTemplate")
private JdbcTemplate secondaryJdbcTemplate;
@GetMapping("/b")
public R query() {
List<Map<String, Object>> list1 = primaryJdbcTemplate.queryForList("SELECT * FROM user");
List<Map<String, Object>> list2 = secondaryJdbcTemplate.queryForList("SELECT * FROM admin");
HashMap<String, Object> map = new HashMap<>();
map.put("list1",list1);
map.put("list2",list2);
return R.ok(map);
}
}
6.查询结果
{
"code": 0,
"msg": null,
"data": {
"list1": [
{
"id": 1,
"name": "第一个库",
"phone": "6666",
"addr": "高新区"
},
{
"id": 2,
"name": "第一个库",
"phone": "123456",
"addr": "中原区"
}
],
"list2": [
{
"id": 1,
"name": "第二个库",
"phone": "789465",
"addr": "中国"
},
{
"id": 2,
"name": "第二个库",
"phone": "456789",
"addr": "中国"
}
]
}
}