Java for Beginner
675 subscribers
557 photos
156 videos
12 files
851 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Использование JdbcTemplate в Spring JDBC для выполнения SQL-запросов

Spring JDBC предоставляет удобный инструмент для работы с базами данных — JdbcTemplate. Этот класс помогает упростить выполнение SQL-запросов и управление ресурсами, такими как соединения и курсоры. Благодаря JdbcTemplate разработчики могут выполнять сложные SQL-операции с минимальными усилиями.

Основные возможности JdbcTemplate:

Выполнение SQL-запросов: позволяет выполнять SELECT, INSERT, UPDATE, DELETE и другие команды.
Обработка результатов запросов: через интерфейсы RowMapper, ResultSetExtractor и RowCallbackHandler.
Управление транзакциями: интеграция с Spring Transaction Management.
Параметризованные запросы: поддержка подготовки SQL-запросов с параметрами.


Пример настройки JdbcTemplate
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;

public class AppConfig {

public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}

public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource());
}
}
Теперь JdbcTemplate можно использовать для выполнения SQL-запросов.


Выполнение SQL-запросов с JdbcTemplate

Выполнение простой команды SQL
JdbcTemplate jdbcTemplate = new AppConfig().jdbcTemplate();
String sql = "CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50))";
jdbcTemplate.execute(sql);


Вставка данных
String insertSql = "INSERT INTO users (name, email) VALUES (?, ?)";
jdbcTemplate.update(insertSql, "John Doe", "john.doe@example.com");


Получение данных
Для получения данных используется метод query.
String selectSql = "SELECT * FROM users";
List<User> users = jdbcTemplate.query(selectSql, (rs, rowNum) ->
new User(rs.getInt("id"), rs.getString("name"), rs.getString("email"))
);
users.forEach(System.out::println);


Получение одного значения

Метод queryForObject возвращает одиночное значение, например, количество записей:

String countSql = "SELECT COUNT(*) FROM users";
int count = jdbcTemplate.queryForObject(countSql, Integer.class);
System.out.println("Количество пользователей: " + count);


Работа с RowMapper

Интерфейс RowMapper используется для преобразования строк из ResultSet в объекты Java.
public class UserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
return new User(rs.getInt("id"), rs.getString("name"), rs.getString("email"));
}
}


Использование:
String sql = "SELECT * FROM users";
List<User> users = jdbcTemplate.query(sql, new UserRowMapper());


#Java #Training #Spring #JdbcTemplate