/
Hipahopa808
/
SpringCourse
Обзор
Документация
Войти
/
Hipahopa808
/
SpringCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Lesson40.PatternValidation/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java
108 строк
4 KB
Neil Alishev
Add Lesson 40 code
08 фев 2021, 18:42
08 фев 2021, 18:42
3877ac5
Код
Авторство
О чём код?
package ru.alishev.springcourse.dao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BatchPreparedStatementSetter; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Component; import ru.alishev.springcourse.models.Person; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Optional; /** * @author Neil Alishev */ @Component public class PersonDAO { private final JdbcTemplate jdbcTemplate; @Autowired public PersonDAO(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public List<Person> index() { return jdbcTemplate.query("SELECT * FROM Person", new BeanPropertyRowMapper<>(Person.class)); } public Optional<Person> show(String email) { return jdbcTemplate.query("SELECT * FROM Person WHERE email=?", new Object[]{email}, new BeanPropertyRowMapper<>(Person.class)).stream().findAny(); } public Person show(int id) { return jdbcTemplate.query("SELECT * FROM Person WHERE id=?", new Object[]{id}, new BeanPropertyRowMapper<>(Person.class)) .stream().findAny().orElse(null); } public void save(Person person) { jdbcTemplate.update("INSERT INTO Person(name, age, email, address) VALUES(?, ?, ?, ?)", person.getName(), person.getAge(), person.getEmail(), person.getAddress()); } public void update(int id, Person updatedPerson) { jdbcTemplate.update("UPDATE Person SET name=?, age=?, email=?, address=? WHERE id=?", updatedPerson.getName(), updatedPerson.getAge(), updatedPerson.getEmail(), updatedPerson.getAddress(), id); } public void delete(int id) { jdbcTemplate.update("DELETE FROM Person WHERE id=?", id); } ////////////////////// // Тестируем производительность ////////////////////// public void testMultipleUpdate() { List<Person> people = create1000People(); long before = System.currentTimeMillis(); for (Person person : people) { jdbcTemplate.update("INSERT INTO Person VALUES(?, ?, ?, ?)", person.getId(), person.getName(), person.getAge(), person.getEmail()); } long after = System.currentTimeMillis(); System.out.println("Time: " + (after - before)); } public void testBatchUpdate() { List<Person> people = create1000People(); long before = System.currentTimeMillis(); jdbcTemplate.batchUpdate("INSERT INTO Person VALUES(?, ?, ?, ?)", new BatchPreparedStatementSetter() { @Override public void setValues(PreparedStatement ps, int i) throws SQLException { ps.setInt(1, people.get(i).getId()); ps.setString(2, people.get(i).getName()); ps.setInt(3, people.get(i).getAge()); ps.setString(4, people.get(i).getEmail()); } @Override public int getBatchSize() { return people.size(); } }); long after = System.currentTimeMillis(); System.out.println("Time: " + (after - before)); } private List<Person> create1000People() { List<Person> people = new ArrayList<>(); for (int i = 0; i < 1000; i++) people.add(new Person(i, "Name" + i, 30, "test" + i + "@mail.ru", "some address")); return people; } }