帮我写一个完整的springboot多数据源配置的项目
时间: 2024-06-08 15:09:20 浏览: 102
好的,下面是一个完整的Spring Boot多数据源配置的项目:
1. 创建一个Spring Boot项目
使用Spring Initializr创建一个新的Spring Boot项目,包括Web、JPA和MySQL依赖。
2. 添加多数据源配置
在application.properties文件中添加以下配置:
# 主数据源配置
spring.datasource.primary.url=jdbc:mysql://localhost:3306/primary_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
spring.datasource.primary.username=root
spring.datasource.primary.password=root
spring.datasource.primary.driver-class-name=com.mysql.cj.jdbc.Driver
# 从数据源配置
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/secondary_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC
spring.datasource.secondary.username=root
spring.datasource.secondary.password=root
spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver
3. 创建数据源和JdbcTemplate
在应用程序中创建两个数据源,一个主数据源和一个从数据源,并为它们创建JdbcTemplate对象。可以在配置类中完成这些操作:
@Configuration
public class DataSourceConfig {
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@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. 创建实体和Repository
创建两个实体类和对应的Repository接口,一个用于主数据源,一个用于从数据源。
@Entity
@Table(name = "primary_table")
public class PrimaryEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// 省略getter和setter方法
}
@Entity
@Table(name = "secondary_table")
public class SecondaryEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// 省略getter和setter方法
}
@Repository
public interface PrimaryRepository extends JpaRepository<PrimaryEntity, Long> {
}
@Repository
public interface SecondaryRepository extends JpaRepository<SecondaryEntity, Long> {
}
5. 创建Controller
创建一个Controller类,注入两个JdbcTemplate和两个Repository,分别处理主数据源和从数据源的请求。
@RestController
public class TestController {
@Autowired
private JdbcTemplate primaryJdbcTemplate;
@Autowired
private JdbcTemplate secondaryJdbcTemplate;
@Autowired
private PrimaryRepository primaryRepository;
@Autowired
private SecondaryRepository secondaryRepository;
@GetMapping("/primary")
public List<PrimaryEntity> getPrimaryData() {
return primaryRepository.findAll();
}
@GetMapping("/secondary")
public List<SecondaryEntity> getSecondaryData() {
return secondaryRepository.findAll();
}
@GetMapping("/primary/jdbc")
public List<Map<String, Object>> getPrimaryDataJdbc() {
return primaryJdbcTemplate.queryForList("SELECT * FROM primary_table");
}
@GetMapping("/secondary/jdbc")
public List<Map<String, Object>> getSecondaryDataJdbc() {
return secondaryJdbcTemplate.queryForList("SELECT * FROM secondary_table");
}
}
6. 运行项目
运行Spring Boot项目,访问以下URL可以查看主数据源和从数据源的数据。
http://localhost:8080/primary
http://localhost:8080/secondary
访问以下URL可以使用JdbcTemplate查看主数据源和从数据源的数据。
http://localhost:8080/primary/jdbc
http://localhost:8080/secondary/jdbc
这样就完成了一个完整的Spring Boot多数据源配置的项目。
阅读全文