Spring Boot — это мощная платформа, упрощающая разработку Java-приложений, в том числе требующих взаимодействия с базами данных. В этой статье мы рассмотрим, как выполнять операции CRUD (создание, чтение, обновление, удаление) в Spring Boot с использованием JDBC без необходимости использования класса сущности. Этот подход может быть полезен при работе с устаревшими базами данных или в сценариях, где сопоставление таблиц базы данных с объектами Java нежелательно или невозможно.
Предварительные требования.
Прежде чем углубляться в примеры кода, убедитесь, что у вас есть следующие предварительные условия:
- Базовые знания Spring Boot и JDBC.
- Рабочий проект Spring Boot с конфигурацией базы данных.
Метод 1: использование JdbcTemplate
Класс JdbcTemplate, предоставляемый Spring JDBC, предлагает удобный способ взаимодействия с базой данных без необходимости использования класса сущности. Вот пример кода:
@Autowired
private JdbcTemplate jdbcTemplate;
public void create(String name, int age) {
String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
jdbcTemplate.update(sql, name, age);
}
public List<Map<String, Object>> readAll() {
String sql = "SELECT * FROM users";
return jdbcTemplate.queryForList(sql);
}
public void update(int id, String name, int age) {
String sql = "UPDATE users SET name = ?, age = ? WHERE id = ?";
jdbcTemplate.update(sql, name, age, id);
}
public void delete(int id) {
String sql = "DELETE FROM users WHERE id = ?";
jdbcTemplate.update(sql, id);
}
Метод 2: использование NamedParameterJdbcTemplate
Класс NamedParameterJdbcTemplate позволяет нам использовать именованные параметры вместо традиционных заполнителей «?». Это может сделать код более читабельным и удобным в сопровождении. Вот пример:
@Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
public void create(String name, int age) {
String sql = "INSERT INTO users (name, age) VALUES (:name, :age)";
Map<String, Object> params = new HashMap<>();
params.put("name", name);
params.put("age", age);
namedParameterJdbcTemplate.update(sql, params);
}
// Implement readAll(), update(), and delete() methods similar to Method 1 using named parameters
Метод 3: использование SimpleJdbcInsert и SimpleJdbcCall
Классы SimpleJdbcInsert и SimpleJdbcCall, предоставляемые Spring JDBC, могут упростить процесс вставки и вызова хранимых процедур без необходимости использования класса сущности. Вот пример:
@Autowired
private JdbcTemplate jdbcTemplate;
private SimpleJdbcInsert insertUser;
private SimpleJdbcCall callProcedure;
@PostConstruct
public void init() {
insertUser = new SimpleJdbcInsert(jdbcTemplate)
.withTableName("users")
.usingGeneratedKeyColumns("id");
callProcedure = new SimpleJdbcCall(jdbcTemplate)
.withProcedureName("my_procedure");
}
public void create(String name, int age) {
Map<String, Object> params = new HashMap<>();
params.put("name", name);
params.put("age", age);
insertUser.execute(params);
}
public void callStoredProc() {
Map<String, Object> inParams = new HashMap<>();
inParams.put("param1", value1);
inParams.put("param2", value2);
Map<String, Object> result = callProcedure.execute(inParams);
// Process the result as needed
}
// Implement readAll(), update(), and delete() methods using SimpleJdbcInsert and SimpleJdbcCall
В этой статье мы рассмотрели различные методы выполнения операций CRUD в Spring Boot с использованием JDBC без необходимости использования класса сущности. Мы рассмотрели использование JdbcTemplate, NamedParameterJdbcTemplate и SimpleJdbcInsert/SimpleJdbcCall. Эти подходы обеспечивают гибкость, особенно при работе с устаревшими базами данных или сценариями, где сопоставление таблиц базы данных с объектами Java нежелательно. Используя эти методы, вы можете эффективно взаимодействовать с базами данных в своих приложениях Spring Boot.