SpringBoot集成SpringDataJPA实现多数据源
项目环境
- IDEA 2019.1
- SpringBoot 2.1.5
- Gradle 4.10
操作步骤
数据库准备
主数据库
- 主数据库:microservice
- 表名:tb_student
- 表结构如下:
字段名 | 类型 | 长度 | 是否主键 | 描述 |
---|---|---|---|---|
student_id | int | 11 | 是 | 主键值 |
student_age | int | 11 | 否 | 年龄 |
student_gender | int | 2 | 否 | 性别 |
student_name | varchar | 40 | 否 | 学生名 |
从数据库
- 主数据库:microservice2
- 表名:tb_user
- 表结构如下
字段名 | 类型 | 长度 | 是否主键 | 描述 |
---|---|---|---|---|
id | int | 11 | 是 | 主键值 |
user_name | varchar | 40 | 否 | 用户名 |
password | varchar | 40 | 否 | 密码 |
配置修改
在application.yml
中增加两个数据源,分别为master
和slave
server:
port: 8880
spring:
datasource:
master:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/microservice?useUnicode=true&characterEncoding=utf-8&useSSL=true
username : root
password : xda265856
driverClassName : com.mysql.jdbc.Driver
slave:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/microservice2?useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: xda265856
driverClassName: com.mysql.jdbc.Driver
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
ddl-auto: update
show-sql: true
编写配置类
关于注入配置的代码部分就不贴上来了,没多大意义,最后会补充上GitHub的地址
运行
编写测试用controller,用来从两个数据源中读取数据,并响应:
@Controller
public class MultiSouceController {
@Autowired
private StudentRepository studentRepository;
@Autowired
private UserRepository userRepository;
@ResponseBody
@RequestMapping(value = "/datasouces/data", method = {RequestMethod.GET})
public Map<String,Object> updateStudent(){
Map<String,Object> allData = new HashMap<>();
List<Student> students = studentRepository.findAll();
List<User> users = userRepository.findAll();
allData.put("students",students);
allData.put("users",users);
return allData;
}
}
项目代码
- github:点击这里
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13169.html