Вы можете использовать org.springframework.jdbc.core.JdbcTemplate
для выполнения простого sql.
Просто создайте простой боб:
@Bean
public JdbcTemplate healthJdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
Вы можете автоматически связать jdbcTemplate и выполнить простые SQL-запросы
@Autowired
private JdbcTemplate jdbcTemplate;
После этого вы можете использовать метод queryForList
для получения необходимых данных.
Например, если у вас есть таблица персон со следующими данными:
id first_name last_name, add_info, company_id
1 fn1 ln1 info1 1
2 fn2 ln2 info2 1
3 fn3 ln3 info3 1
4 fn4 ln4 info4 1
И фирменный стол:
id company_name
1 test_company1
И вы используете следующий код для извлечения данных:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
@RestController
public class Controller {
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping("/api/test")
List<Map<String, Object>> getData() {
return jdbcTemplate.queryForList("Select * FROM public.persons p JOIN public.companies c" +
" ON p.company_id = c.id");
}
}
Результат будет
[{"id":1,"f_name":"fn1","l_name":"ln1","add_info":"info1","company_id":1,"company_name":"test_company1"},{"id":1,"f_name":"fn2","l_name":"ln2","add_info":"info2","company_id":1,"company_name":"test_company1"},{"id":1,"f_name":"fn3","l_name":"ln3","add_info":"info3","company_id":1,"company_name":"test_company1"},{"id":1,"f_name":"fn4","l_name":"ln4","add_info":"info4","company_id":1,"company_name":"test_company1"}]
Обновления на основе вопросов в комментариях:
javax.sql.DataSource
- это bean-компонент, который автоматически настраивается пружиной (если вы не переопределите конфигурацию или не отключите ее). Этот bean-компонент необходим для JdbcTemplate
, поскольку он содержит информацию о базе данных, в которой JdbcTemplate
будет выполнять запросы.
По умолчанию он использует следующие свойства из файла application.properties (или в случае ниже, application.yml). Например:
spring:
datasource:
username: someusername
password: somepassword
url: jdbc:postgresql://localhost:5432/dbname
driver-class-name: org.postgresql.Driver