Я пишу приложение для визуализации данных статистики NBA. Я использую базу данных Spring Boot + MySql. Я пытаюсь найти наименьшее и наибольшее значение из каждого столбца с условием, что игрок должен был сыграть не менее 10 игр. Для этого я могу написать такие методы:
@Repository
public interface PerGameStatsRepository extends JpaRepository<PerGameStats, PerGameStatsId> {
@Query(value = "SELECT MAX(stats.pts) FROM PerGameStats stats WHERE stats.gamesPlayed >= 10")
BigDecimal findMaxAmountOfPoints();
@Query(value = "SELECT MIN(stats.pts) FROM PerGameStats stats WHERE stats.gamesPlayed >= 10")
BigDecimal findMinAmountOfPoints();
}
Однако в таблице около 15 столбцов, таких как «Точки», «Возвраты», «Ассисты», «Блоки» и т. Д. c. (И, возможно, я добавлю еще ). Чтобы получить минимальное и максимальное значения для каждого из них, я должен написать 2 метода для каждого столбца: 2x15 = 30 всего. Есть ли способ избежать этого повторения и написать метод, который принимает имя столбца в качестве параметра и на основании которого выполняет правильный запрос? Что-то вроде:
// this obviously doesn't work
@Query(value = "SELECT MAX(stats.:#{#fieldName}) FROM PerGameStats stats WHERE stats.gamesPlayed >= 10")
BigDecimal findMaxAmountOfField(String fieldName);