Я хочу подключить приложение SpringBoot к унаследованной системе баз данных с ручным управлением сегментированием.
С помощью идентификатора пользователя, указанного пользователем, я могу найти фрагмент, где сохранен автомобиль. (примеры: carId = 1 в шарде 1, carId = 2 в шарде 2)
Я не знаю, как это сделать правильно (автопровод ?, источник данных ?, ..).
Можете ли вы мне помочь?
Мое приложение
@SpringBootApplication
public class CarApiApplication {
public static void main(String[] args) {
SpringApplication.run(CarApiApplication.class, args);
}
}
Мой контроллер
@RestController
public class CarController {
@Autowired
CarService carService;
@GetMapping("/car/{carId}")
public Optional<Car> car(
@PathVariable(value = "carId") String carId
) {
return carService.getTransaction(carId);
}
}
Мой сервис
public class CarService {
@Autowired
private CarJpaRepository carJpaRepository;
public Optional<Car> getCar(String carId) {
Optional<Car> car = carJpaRepository.findById(carId);
return car;
}
}
Мой репозиторий
public interface CarJpaRepository extends JpaRepository<Transaction, Long> {
}
Моя конфигурация
spring.shard1.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shard1.url=jdbc:mysql://localhost:3306/shard1?serverTimezone=UTC&useLegacyDatetimeCode=false
spring.shard1.username=root
spring.shard1.password=root
spring.shard2.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shard2.url=jdbc:mysql://localhost:3306/shard2?serverTimezone=UTC&useLegacyDatetimeCode=false
spring.shard2.username=root
spring.shard2.password=root
spring.shard3.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shard3.url=jdbc:mysql://localhost:3306/shard3?serverTimezone=UTC&useLegacyDatetimeCode=false
spring.shard3.username=root
spring.shard3.password=root
spring.shard4.driver-class-name=com.mysql.cj.jdbc.Driver
spring.shard4.url=jdbc:mysql://localhost:3306/shard4?serverTimezone=UTC&useLegacyDatetimeCode=false
spring.shard4.username=root
spring.shard4.password=root