springBoot配置mysql主从使用
时间: 2024-04-21 22:05:16 浏览: 217
1. 配置主从数据库
首先需要将主从数据库配置好,可以通过修改MySQL的配置文件my.cnf实现,具体方法可以参考官方文档或其他相关资料。
2. 在Spring Boot项目中引入MySQL主从依赖
在pom.xml文件中添加以下依赖:
```
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
```
3. 配置主从数据源
在application.yml文件中添加以下配置:
```
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/master
username: root
password: root
datasources:
slave:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3307/slave
username: root
password: root
```
在上面的配置中,我们定义了两个数据源,一个是主数据源,另一个是从数据源。主数据源的URL为localhost:3306/master,从数据源的URL为localhost:3307/slave。
4. 配置JPA实体管理器
在application.yml文件中添加以下配置:
```
spring:
jpa:
show-sql: true
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
ddl-auto: update
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
connection:
provider_class: org.hibernate.hikaricp.internal.HikariCPConnectionProvider
```
在上面的配置中,我们使用了Hibernate作为JPA实体管理器,并启用了SQL输出。此外,我们也配置了Hibernate的方言和HikariCP连接池提供程序。
5. 配置事务管理器
在Spring Boot项目中,我们可以使用Spring的事务管理器来控制事务。在application.yml文件中添加以下配置:
```
spring:
jpa:
properties:
hibernate:
transaction:
jta:
datasource: master
```
在上面的配置中,我们将事务管理器指定为主数据源。
6. 编写DAO层代码
接下来,我们需要编写DAO层代码来访问主从数据库。这里我们以用户表为例,创建一个UserRepository接口:
```
public interface UserRepository extends JpaRepository<User, Long> {
}
```
7. 编写Service层代码
在Service层,我们需要使用@Transactional注解来启用事务管理。在UserService类中,我们定义了两个方法,一个是保存用户,另一个是获取所有用户:
```
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void saveUser(User user) {
userRepository.save(user);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
```
在上面的代码中,我们使用@Autowired注解将UserRepository注入到UserService中,然后在saveUser方法中使用@Transactional注解启用事务管理。
8. 编写Controller层代码
在Controller层,我们可以定义一些RESTful API来测试主从数据库的读写操作。在UserController类中,我们定义了两个API,一个是保存用户,另一个是获取所有用户:
```
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public ResponseEntity<?> saveUser(@RequestBody User user) {
userService.saveUser(user);
return ResponseEntity.ok("User saved successfully!");
}
@GetMapping
public ResponseEntity<List<User>> getAllUsers() {
List<User> users = userService.getAllUsers();
return ResponseEntity.ok(users);
}
}
```
在上面的代码中,我们使用@Autowired注解将UserService注入到UserController中,然后定义了一个POST请求和一个GET请求来保存用户和获取所有用户。
9. 测试主从数据库的读写操作
现在我们可以启动Spring Boot应用程序,并使用Postman等工具来测试主从数据库的读写操作。我们可以先向主数据库中保存一个用户,然后从从数据库中获取所有用户,看看是否能正常工作。如果一切正常,我们应该能够在从数据库中看到新保存的用户。
总结
在本文中,我们介绍了如何使用Spring Boot配置MySQL主从数据库,并演示了如何通过DAO层、Service层和Controller层来访问主从数据库。希望这篇文章对你有所帮助。
阅读全文