From 9e8b71862d171b2e44d89791f351bb23af600239 Mon Sep 17 00:00:00 2001 From: SGoriainov Date: Thu, 30 Mar 2023 13:16:47 +0400 Subject: [PATCH 1/6] =?UTF-8?q?=D0=B5=C3=91therst=20commit=20in=20this=20c?= =?UTF-8?q?ourse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/FirstController.java | 27 ++++- .../webapp/WEB-INF/views/first/goodbye.html | 1 + .../webapp/WEB-INF/views/first/hello.html | 7 +- Lesson20_Starter.IntroToModel/pom.xml | 20 ++-- Lesson21.CRUD_App1/pom.xml | 24 ++-- ...pringMvcDispatcherSerlvetIntitializer.java | 15 +++ .../controllers/PeopleController.java | 33 +++++- .../alishev/springcourse/dao/PersonDAO.java | 15 +++ .../alishev/springcourse/models/Person.java | 4 + .../webapp/WEB-INF/views/people/edit.html | 17 +++ .../webapp/WEB-INF/views/people/index.html | 7 +- .../main/webapp/WEB-INF/views/people/new.html | 18 +++ .../webapp/WEB-INF/views/people/show.html | 8 +- .../pom.xml | 15 +++ .../controllers/PeopleController.java | 14 ++- .../alishev/springcourse/dao/PersonDAO.java | 106 +++++++++++++++--- .../alishev/springcourse/models/Person.java | 13 +++ .../webapp/WEB-INF/views/people/edit.html | 3 + .../main/webapp/WEB-INF/views/people/new.html | 3 + Lesson27_Starter.SpringJdbcTemplate/pom.xml | 2 +- .../alishev/springcourse/dao/PersonDAO.java | 2 +- pom.xml | 17 +++ 22 files changed, 326 insertions(+), 45 deletions(-) create mode 100644 Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/edit.html create mode 100644 Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/new.html create mode 100644 pom.xml diff --git a/Lesson17.SpringControllersIntro/src/main/java/ru/alishev/springcourse/controllers/FirstController.java b/Lesson17.SpringControllersIntro/src/main/java/ru/alishev/springcourse/controllers/FirstController.java index 2d4a9e87..090e46ba 100644 --- a/Lesson17.SpringControllersIntro/src/main/java/ru/alishev/springcourse/controllers/FirstController.java +++ b/Lesson17.SpringControllersIntro/src/main/java/ru/alishev/springcourse/controllers/FirstController.java @@ -1,8 +1,10 @@ package ru.alishev.springcourse.controllers; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; /** * @author Neil Alishev @@ -11,11 +13,34 @@ @RequestMapping("/first") public class FirstController { + @GetMapping("/hello") - public String helloPage() { + public String helloPage(@RequestParam(value="a", required = false) int a, + @RequestParam(value="b", required = false) int b, + @RequestParam(value="action", required = false) String action, + Model model) { + model.addAttribute("someMessage","result "+ a + action + b +" = " + calculate(a,b,action)); + + //int sum = calculate(a,b,action); + + //System.out.println("Hello, " + name + " " + surname); return "first/hello"; } + public int calculate(int a, int b, String action) { + switch (action) { + case "multiplication": + return a * b; + case "addition": + return a+b; + case "substruction": + return a%b; + case "division": + return a-b; + default: return 0; + } + } + @GetMapping("/goodbye") public String goodByePage() { return "first/goodbye"; diff --git a/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/goodbye.html b/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/goodbye.html index 1d1cd3ca..04617c49 100644 --- a/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/goodbye.html +++ b/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/goodbye.html @@ -8,5 +8,6 @@ Goodbye! Say hello or Exit +or Request with anower parameters!!OMG \ No newline at end of file diff --git a/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/hello.html b/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/hello.html index ee20cf13..3fa0cb87 100644 --- a/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/hello.html +++ b/Lesson17.SpringControllersIntro/src/main/webapp/WEB-INF/views/first/hello.html @@ -1,5 +1,5 @@ - + Hello @@ -8,5 +8,10 @@ Hello! Say goodbye or Exit +or Request with parameters + +

+ + \ No newline at end of file diff --git a/Lesson20_Starter.IntroToModel/pom.xml b/Lesson20_Starter.IntroToModel/pom.xml index c1ba0a6c..44aa169b 100644 --- a/Lesson20_Starter.IntroToModel/pom.xml +++ b/Lesson20_Starter.IntroToModel/pom.xml @@ -18,17 +18,19 @@ 1.7 1.7 - 5.2.1.RELEASE + 6.0.4 + - junit - junit - 4.11 + org.junit.jupiter + junit-jupiter-api + 5.9.2 test + org.springframework spring-core @@ -59,12 +61,16 @@ 3.0.11.RELEASE + - javax.servlet - javax.servlet-api - 4.0.1 + jakarta.servlet + jakarta.servlet-api + 6.0.0 provided + + + diff --git a/Lesson21.CRUD_App1/pom.xml b/Lesson21.CRUD_App1/pom.xml index ad5b303f..526fdb1a 100644 --- a/Lesson21.CRUD_App1/pom.xml +++ b/Lesson21.CRUD_App1/pom.xml @@ -1,7 +1,7 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 ru.alishev.springcourse @@ -102,15 +102,15 @@ - - - org.apache.maven.plugins - maven-compiler-plugin - - 8 - 8 - - - + + + org.apache.maven.plugins + maven-compiler-plugin + + 8 + 8 + + + - + \ No newline at end of file diff --git a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/config/MySpringMvcDispatcherSerlvetIntitializer.java b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/config/MySpringMvcDispatcherSerlvetIntitializer.java index 1cf3442e..63582e9f 100644 --- a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/config/MySpringMvcDispatcherSerlvetIntitializer.java +++ b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/config/MySpringMvcDispatcherSerlvetIntitializer.java @@ -1,7 +1,11 @@ package ru.alishev.springcourse.config; +import org.springframework.web.filter.HiddenHttpMethodFilter; import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; + /** * @author Neil Alishev */ @@ -20,4 +24,15 @@ protected Class[] getServletConfigClasses() { protected String[] getServletMappings() { return new String[]{"/"}; } + + @Override + public void onStartup(ServletContext aServletContext) throws ServletException { + super.onStartup(aServletContext); + registerHiddenFieldFilter(aServletContext); + } + + private void registerHiddenFieldFilter(ServletContext aContext) { + aContext.addFilter("hiddenHttpMethodFilter", + new HiddenHttpMethodFilter()).addMappingForUrlPatterns(null ,true, "/*"); + } } diff --git a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java index 80146ec6..86912ccf 100644 --- a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java +++ b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java @@ -3,10 +3,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.*; import ru.alishev.springcourse.dao.PersonDAO; +import ru.alishev.springcourse.models.Person; /** * @author Neil Alishev @@ -33,4 +32,32 @@ public String show(@PathVariable("id") int id, Model model) { model.addAttribute("person", personDAO.show(id)); return "people/show"; } + + @GetMapping("/new") + public String newPerson (@ModelAttribute("person") Person person) { + return "people/new"; + + } + @PostMapping() + public String create(@ModelAttribute("person") Person person) { + personDAO.save(person); + return "redirect:/people"; + } + @GetMapping("/{id}/edit") + public String edit (Model model,@PathVariable("id") int id) { + model.addAttribute("person",personDAO.show(id)); + return "people/edit"; + } + + @PatchMapping("/{id}") + public String update (@ModelAttribute("person") Person person, @PathVariable("id") int id) { + personDAO.update(id,person); + return "redirect:/people"; + } + + @DeleteMapping("/{id}") + public String delete (@PathVariable("id") int id) { + personDAO.delete(id); + return "redirect:/people"; + } } diff --git a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index 04a711cc..176e38a6 100644 --- a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -30,4 +30,19 @@ public List index() { public Person show(int id) { return people.stream().filter(person -> person.getId() == id).findAny().orElse(null); } + + public void save(Person person) { + person.setId(++PEOPLE_COUNT); + people.add(person); + } + + public void update (int id, Person updatePerson) { + Person personToBeUpdated = show(id); + + personToBeUpdated.setName(updatePerson.getName()); + } + + public void delete (int id) { + people.removeIf(p -> p.getId()==id); + } } diff --git a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/models/Person.java b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/models/Person.java index b71e7be8..9fc67d17 100644 --- a/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/models/Person.java +++ b/Lesson21.CRUD_App1/src/main/java/ru/alishev/springcourse/models/Person.java @@ -7,6 +7,10 @@ public class Person { private int id; private String name; + public Person () { + + } + public Person(int id, String name) { this.id = id; this.name = name; diff --git a/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/edit.html b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/edit.html new file mode 100644 index 00000000..ff209b6d --- /dev/null +++ b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/edit.html @@ -0,0 +1,17 @@ + + + + + Update person + + + +

+ + +
+ +
+ + + \ No newline at end of file diff --git a/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/index.html b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/index.html index 969c4b29..a9dfd8bf 100644 --- a/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/index.html +++ b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/index.html @@ -2,7 +2,7 @@ - Все люди + All people @@ -10,5 +10,10 @@ user +
+
+ +Create new person + \ No newline at end of file diff --git a/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/new.html b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/new.html new file mode 100644 index 00000000..aaf3e7f5 --- /dev/null +++ b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/new.html @@ -0,0 +1,18 @@ + + + + + New person + + + +
+ + +
+ + +
+ + + \ No newline at end of file diff --git a/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/show.html b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/show.html index f5fd1835..e9275546 100644 --- a/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/show.html +++ b/Lesson21.CRUD_App1/src/main/webapp/WEB-INF/views/people/show.html @@ -2,10 +2,16 @@ - Человек + Person

VALUE

VALUE

+ +Edit + +
+ +
\ No newline at end of file diff --git a/Lesson24_Starter.SpringFormsValidation/pom.xml b/Lesson24_Starter.SpringFormsValidation/pom.xml index 18593eaa..1583f70f 100644 --- a/Lesson24_Starter.SpringFormsValidation/pom.xml +++ b/Lesson24_Starter.SpringFormsValidation/pom.xml @@ -65,6 +65,21 @@ 4.0.1 provided + + + + org.hibernate.validator + hibernate-validator + 6.1.6.Final + + + + org.postgresql + postgresql + 42.5.4 + + + diff --git a/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java b/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java index 65e99378..66e34769 100644 --- a/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java +++ b/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/controllers/PeopleController.java @@ -3,10 +3,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import ru.alishev.springcourse.dao.PersonDAO; import ru.alishev.springcourse.models.Person; +import javax.validation.Valid; + /** * @author Neil Alishev */ @@ -39,7 +42,10 @@ public String newPerson(@ModelAttribute("person") Person person) { } @PostMapping() - public String create(@ModelAttribute("person") Person person) { + public String create(@ModelAttribute("person") @Valid Person person, + BindingResult bindingResult) { + if (bindingResult.hasErrors()) + return "people/new"; personDAO.save(person); return "redirect:/people"; } @@ -51,7 +57,11 @@ public String edit(Model model, @PathVariable("id") int id) { } @PatchMapping("/{id}") - public String update(@ModelAttribute("person") Person person, @PathVariable("id") int id) { + public String update(@ModelAttribute("person") @Valid Person person, BindingResult bindingResult, + @PathVariable("id") int id) { + if ( bindingResult.hasErrors()) + return "people/edit"; + personDAO.update(id, person); return "redirect:/people"; } diff --git a/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index 94d1fca3..a1cb489f 100644 --- a/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -3,6 +3,7 @@ import org.springframework.stereotype.Component; import ru.alishev.springcourse.models.Person; +import java.sql.*; import java.util.ArrayList; import java.util.List; @@ -12,39 +13,114 @@ @Component public class PersonDAO { private static int PEOPLE_COUNT; - private List people; + private static final String URL = "jdbc:postgresql://localhost:5432/first_db"; + private static final String USERNAME = "postgres"; + private static final String PASSWORD = "postgre"; - { - people = new ArrayList<>(); + private static Connection connection; - people.add(new Person(++PEOPLE_COUNT, "Tom", 24, "tom@mail.ru")); - people.add(new Person(++PEOPLE_COUNT, "Bob", 52, "bob@mail.ru")); - people.add(new Person(++PEOPLE_COUNT, "Mike", 18, "mike@yahoo.com")); - people.add(new Person(++PEOPLE_COUNT, "Katy", 34, "katy@gmail.com")); + static { + try { + Class.forName("org.postgresql.Driver"); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + try { + connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); + } catch (SQLException e) { + throw new RuntimeException(e); + } } public List index() { + List people = new ArrayList<>(); + + try { + Statement statement = connection.createStatement(); + String SQL = "SELECT * FROM Person"; + ResultSet resultSet = statement.executeQuery(SQL); + + while (resultSet.next()) { + Person person = new Person(); + + person.setId(resultSet.getInt("id")); + person.setName(resultSet.getString("name")); + person.setEmail(resultSet.getString("email")); + person.setAge(resultSet.getInt("age")); + + people.add(person); + + } + + } catch (SQLException e) { + throw new RuntimeException(e); + } return people; } public Person show(int id) { - return people.stream().filter(person -> person.getId() == id).findAny().orElse(null); + Person person = null; + try { + PreparedStatement preparedStatement = + connection.prepareStatement("SELECT * FROM Person WHERE id=?"); + preparedStatement.setInt(1,id); + ResultSet resultSet= preparedStatement.executeQuery(); + resultSet.next(); + + person =new Person(); + + person.setId(resultSet.getInt("id")); + person.setName(resultSet.getString("name")); + person.setEmail(resultSet.getString("email")); + person.setAge(resultSet.getInt("age")); + + } catch (SQLException e) { + throw new RuntimeException(e); + } + return person; } public void save(Person person) { - person.setId(++PEOPLE_COUNT); - people.add(person); + + try { + PreparedStatement preparedStatement= + connection.prepareStatement("INSERT INTO Person VALUES (1, ?, ?, ?)"); + preparedStatement.setString(1, person.getName()); + preparedStatement.setInt(2, person.getAge()); + preparedStatement.setString(3, person.getEmail()); + + preparedStatement.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } } public void update(int id, Person updatedPerson) { - Person personToBeUpdated = show(id); - personToBeUpdated.setName(updatedPerson.getName()); - personToBeUpdated.setAge(updatedPerson.getAge()); - personToBeUpdated.setEmail(updatedPerson.getEmail()); + try { + PreparedStatement preparedStatement = + connection.prepareStatement("UPDATE Person SET name=?, age=?, email=? WHERE id=?"); + preparedStatement.setString(1, updatedPerson.getName()); + preparedStatement.setInt(2, updatedPerson.getAge()); + preparedStatement.setString(3, updatedPerson.getEmail()); + preparedStatement.setInt(4, id); + preparedStatement.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } } public void delete(int id) { - people.removeIf(p -> p.getId() == id); + PreparedStatement preparedStatement=null; + try { + preparedStatement = + connection.prepareStatement("DELETE FROM Person WHERE id=?"); + preparedStatement.setInt(1,id); + + preparedStatement.executeUpdate(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } } diff --git a/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/models/Person.java b/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/models/Person.java index ce6d186a..07e5e6d3 100644 --- a/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/models/Person.java +++ b/Lesson24_Starter.SpringFormsValidation/src/main/java/ru/alishev/springcourse/models/Person.java @@ -1,12 +1,25 @@ package ru.alishev.springcourse.models; +import javax.validation.constraints.Email; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.Size; + /** * @author Neil Alishev */ public class Person { private int id; + + @NotEmpty(message = "Name should not be empty") + @Size(min=2, max=30, message = "Name should not be between 2 and 30 characters") private String name; + + @Min(value = 0, message = "Age should not be greater than 0") private int age; + + @NotEmpty(message = "Email shold not be empty") + @Email(message = "Email shold be balid") private String email; public Person() { diff --git a/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/edit.html b/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/edit.html index ea9ddc84..be242716 100644 --- a/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/edit.html +++ b/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/edit.html @@ -9,12 +9,15 @@
+
Name error

+
Age error

+
Email error

diff --git a/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/new.html b/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/new.html index 40e7b9c6..ed5f8ef9 100644 --- a/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/new.html +++ b/Lesson24_Starter.SpringFormsValidation/src/main/webapp/WEB-INF/views/people/new.html @@ -9,12 +9,15 @@
+
Name error

+
age error

+
Email error

diff --git a/Lesson27_Starter.SpringJdbcTemplate/pom.xml b/Lesson27_Starter.SpringJdbcTemplate/pom.xml index 640e8bc8..c988716a 100644 --- a/Lesson27_Starter.SpringJdbcTemplate/pom.xml +++ b/Lesson27_Starter.SpringJdbcTemplate/pom.xml @@ -72,7 +72,7 @@ 6.1.6.Final - + org.postgresql postgresql diff --git a/Lesson27_Starter.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/Lesson27_Starter.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index 07940567..ea78439d 100644 --- a/Lesson27_Starter.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/Lesson27_Starter.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -16,7 +16,7 @@ public class PersonDAO { private static final String URL = "jdbc:postgresql://localhost:5432/first_db"; private static final String USERNAME = "postgres"; - private static final String PASSWORD = "postgres"; + private static final String PASSWORD = "postgre"; private static Connection connection; diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..12597023 --- /dev/null +++ b/pom.xml @@ -0,0 +1,17 @@ + + + 4.0.0 + + groupId + SpringCourse + 1.0-SNAPSHOT + + + 19 + 19 + UTF-8 + + + \ No newline at end of file From 762a336860d1ceb1f63400ffccf481c93f431d3f Mon Sep 17 00:00:00 2001 From: SGoriainov Date: Thu, 30 Mar 2023 21:27:10 +0400 Subject: [PATCH 2/6] lesson 26,27,29 update --- .../ru/alishev/springcourse/dao/PersonDAO.java | 2 +- .../springcourse/config/SpringConfig.java | 16 +++++++++++----- .../src/main/resources/database.properties | 4 ++++ .../springcourse/config/SpringConfig.java | 2 +- .../springcourse/config/SpringConfig.java | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 Lesson27.SpringJdbcTemplate/src/main/resources/database.properties diff --git a/Lesson26_Starter.SpringJDBC2/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/Lesson26_Starter.SpringJDBC2/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index c7d21b5f..9767deda 100644 --- a/Lesson26_Starter.SpringJDBC2/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/Lesson26_Starter.SpringJDBC2/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -16,7 +16,7 @@ public class PersonDAO { private static final String URL = "jdbc:postgresql://localhost:5432/first_db"; private static final String USERNAME = "postgres"; - private static final String PASSWORD = "postgres"; + private static final String PASSWORD = "postgre"; private static Connection connection; diff --git a/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java b/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java index 626690e7..a4376d7a 100644 --- a/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java +++ b/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java @@ -5,6 +5,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.web.servlet.config.annotation.EnableWebMvc; @@ -15,6 +17,7 @@ import org.thymeleaf.spring5.view.ThymeleafViewResolver; import javax.sql.DataSource; +import java.util.Objects; /** * @author Neil Alishev @@ -22,13 +25,16 @@ @Configuration @ComponentScan("ru.alishev.springcourse") @EnableWebMvc +@PropertySource("classpath:database.properties") public class SpringConfig implements WebMvcConfigurer { private final ApplicationContext applicationContext; + private final Environment environment; @Autowired - public SpringConfig(ApplicationContext applicationContext) { + public SpringConfig(ApplicationContext applicationContext, Environment environment) { this.applicationContext = applicationContext; + this.environment = environment; } @Bean @@ -62,10 +68,10 @@ public void configureViewResolvers(ViewResolverRegistry registry) { public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName("org.postgresql.Driver"); - dataSource.setUrl("jdbc:postgresql://localhost:5432/first_db"); - dataSource.setUsername("postgres"); - dataSource.setPassword("postgres"); + dataSource.setDriverClassName(Objects.requireNonNull(environment.getProperty("driver"))); + dataSource.setUrl(environment.getProperty("url")); + dataSource.setUsername(environment.getProperty("username")); + dataSource.setPassword(environment.getProperty("password")); return dataSource; } diff --git a/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties b/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties new file mode 100644 index 00000000..9867cb71 --- /dev/null +++ b/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties @@ -0,0 +1,4 @@ +driver=org.postgresql.Driver +url=jdbc:postgresql://localhost:5432/first_db +username=postgres +password=postgre \ No newline at end of file diff --git a/Lesson29.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java b/Lesson29.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java index c02911e9..680646b3 100644 --- a/Lesson29.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java +++ b/Lesson29.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java @@ -62,7 +62,7 @@ public DataSource dataSource() { dataSource.setDriverClassName("org.postgresql.Driver"); dataSource.setUrl("jdbc:postgresql://localhost:5432/first_db"); dataSource.setUsername("postgres"); - dataSource.setPassword("postgres"); + dataSource.setPassword("postgre"); return dataSource; } diff --git a/Lesson29_Starter.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java b/Lesson29_Starter.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java index c02911e9..680646b3 100644 --- a/Lesson29_Starter.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java +++ b/Lesson29_Starter.JdbcTemplateBatchUpdate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java @@ -62,7 +62,7 @@ public DataSource dataSource() { dataSource.setDriverClassName("org.postgresql.Driver"); dataSource.setUrl("jdbc:postgresql://localhost:5432/first_db"); dataSource.setUsername("postgres"); - dataSource.setPassword("postgres"); + dataSource.setPassword("postgre"); return dataSource; } From 491cc33fe9f9cf7a55fd13edce0bbffcb45f8513 Mon Sep 17 00:00:00 2001 From: SGoriainov Date: Fri, 16 Jun 2023 15:27:22 +0400 Subject: [PATCH 3/6] repeat learning hibernate --- Lesson27.SpringJdbcTemplate/pom.xml | 7 +++++++ .../alishev/springcourse/config/SpringConfig.java | 5 +++-- .../src/main/resources/database.properties | 2 +- .../alishev/springcourse/config/SpringConfig.java | 2 +- .../alishev/springcourse/config/SpringConfig.java | 2 +- .../ru/alishev/springcourse/dao/PersonDAO.java | 15 +++++++++++---- .../src/main/resources/hibernate.properties | 2 +- 7 files changed, 25 insertions(+), 10 deletions(-) diff --git a/Lesson27.SpringJdbcTemplate/pom.xml b/Lesson27.SpringJdbcTemplate/pom.xml index 9ca8d03f..ae40930a 100644 --- a/Lesson27.SpringJdbcTemplate/pom.xml +++ b/Lesson27.SpringJdbcTemplate/pom.xml @@ -84,6 +84,13 @@ postgresql 42.2.18 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.11.0 + diff --git a/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java b/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java index a4376d7a..48a5ee81 100644 --- a/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java +++ b/Lesson27.SpringJdbcTemplate/src/main/java/ru/alishev/springcourse/config/SpringConfig.java @@ -68,11 +68,12 @@ public void configureViewResolvers(ViewResolverRegistry registry) { public DataSource dataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); - dataSource.setDriverClassName(Objects.requireNonNull(environment.getProperty("driver"))); + dataSource.setDriverClassName(environment.getRequiredProperty("driver")); dataSource.setUrl(environment.getProperty("url")); - dataSource.setUsername(environment.getProperty("username")); + dataSource.setUsername(environment.getProperty("usern")); dataSource.setPassword(environment.getProperty("password")); + return dataSource; } diff --git a/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties b/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties index 9867cb71..5eb597b9 100644 --- a/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties +++ b/Lesson27.SpringJdbcTemplate/src/main/resources/database.properties @@ -1,4 +1,4 @@ driver=org.postgresql.Driver url=jdbc:postgresql://localhost:5432/first_db -username=postgres +usern=postgres password=postgre \ No newline at end of file diff --git a/Lesson30.DBAutoIncrement/src/main/java/ru/alishev/springcourse/config/SpringConfig.java b/Lesson30.DBAutoIncrement/src/main/java/ru/alishev/springcourse/config/SpringConfig.java index c02911e9..680646b3 100644 --- a/Lesson30.DBAutoIncrement/src/main/java/ru/alishev/springcourse/config/SpringConfig.java +++ b/Lesson30.DBAutoIncrement/src/main/java/ru/alishev/springcourse/config/SpringConfig.java @@ -62,7 +62,7 @@ public DataSource dataSource() { dataSource.setDriverClassName("org.postgresql.Driver"); dataSource.setUrl("jdbc:postgresql://localhost:5432/first_db"); dataSource.setUsername("postgres"); - dataSource.setPassword("postgres"); + dataSource.setPassword("postgre"); return dataSource; } diff --git a/Lesson39.SpringValidator/src/main/java/ru/alishev/springcourse/config/SpringConfig.java b/Lesson39.SpringValidator/src/main/java/ru/alishev/springcourse/config/SpringConfig.java index c02911e9..680646b3 100644 --- a/Lesson39.SpringValidator/src/main/java/ru/alishev/springcourse/config/SpringConfig.java +++ b/Lesson39.SpringValidator/src/main/java/ru/alishev/springcourse/config/SpringConfig.java @@ -62,7 +62,7 @@ public DataSource dataSource() { dataSource.setDriverClassName("org.postgresql.Driver"); dataSource.setUrl("jdbc:postgresql://localhost:5432/first_db"); dataSource.setUsername("postgres"); - dataSource.setPassword("postgres"); + dataSource.setPassword("postgre"); return dataSource; } diff --git a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index f12178a7..d0b016f2 100644 --- a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -32,19 +32,26 @@ public List index() { return people; } + @Transactional public Person show(int id) { - return null; + Session session = sessionFactory.getCurrentSession(); + return session.get(Person.class,id); } public void save(Person person) { - + Session session = sessionFactory.getCurrentSession(); + session.persist(person); } public void update(int id, Person updatedPerson) { - + Session session = sessionFactory.getCurrentSession(); + Person person = session.get(Person.class, id); + person.setAge(updatedPerson.getAge()); + person.setName(updatedPerson.getName()); } public void delete(int id) { - + Session session = sessionFactory.getCurrentSession(); + session.remove(session.get(Person.class, id)); } } diff --git a/SpringHibernateApp/src/main/resources/hibernate.properties b/SpringHibernateApp/src/main/resources/hibernate.properties index 69717fea..3cc709ec 100644 --- a/SpringHibernateApp/src/main/resources/hibernate.properties +++ b/SpringHibernateApp/src/main/resources/hibernate.properties @@ -2,7 +2,7 @@ hibernate.driver_class=org.postgresql.Driver hibernate.connection.url=jdbc:postgresql://localhost:5432/hibernate_demo_db hibernate.connection.username=postgres -hibernate.connection.password=postgres +hibernate.connection.password=postgre # Конфигурация самого Hibernate hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect From a1b5f3e8dd428883423f3109711c87265312f668 Mon Sep 17 00:00:00 2001 From: SGoriainov Date: Sat, 17 Jun 2023 23:33:28 +0400 Subject: [PATCH 4/6] repeat learning hibernate --- .../src/main/java/ru/alishev/springcourse/dao/PersonDAO.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index d0b016f2..c90bbd92 100644 --- a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -38,11 +38,13 @@ public Person show(int id) { return session.get(Person.class,id); } + @Transactional public void save(Person person) { Session session = sessionFactory.getCurrentSession(); session.persist(person); } + @Transactional public void update(int id, Person updatedPerson) { Session session = sessionFactory.getCurrentSession(); Person person = session.get(Person.class, id); @@ -50,6 +52,7 @@ public void update(int id, Person updatedPerson) { person.setName(updatedPerson.getName()); } + @Transactional public void delete(int id) { Session session = sessionFactory.getCurrentSession(); session.remove(session.get(Person.class, id)); From 0d0853ea521c1b1cb2b7b99d1c1e8468d5b75b45 Mon Sep 17 00:00:00 2001 From: SGoriainov Date: Thu, 22 Jun 2023 16:06:24 +0400 Subject: [PATCH 5/6] add email --- .../ru/alishev/springcourse/dao/PersonDAO.java | 1 + .../ru/alishev/springcourse/models/Person.java | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java index c90bbd92..366734a5 100644 --- a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java +++ b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/dao/PersonDAO.java @@ -50,6 +50,7 @@ public void update(int id, Person updatedPerson) { Person person = session.get(Person.class, id); person.setAge(updatedPerson.getAge()); person.setName(updatedPerson.getName()); + person.setEmail(updatedPerson.getEmail()); } @Transactional diff --git a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/models/Person.java b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/models/Person.java index f8e20790..d1101c58 100644 --- a/SpringHibernateApp/src/main/java/ru/alishev/springcourse/models/Person.java +++ b/SpringHibernateApp/src/main/java/ru/alishev/springcourse/models/Person.java @@ -1,6 +1,7 @@ package ru.alishev.springcourse.models; import javax.persistence.*; +import javax.validation.constraints.Email; import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Size; @@ -25,8 +26,12 @@ public class Person { @Column(name = "age") private int age; - public Person() { + @Column(name = "email") + @NotEmpty(message = "email should not will empty") + @Email + private String email; + public Person() { } public Person(String name, int age) { @@ -58,6 +63,14 @@ public void setAge(int age) { this.age = age; } + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + @Override public String toString() { return "Person{" + From 902da90fc2afe9450d713ea56daad67a0ec21a2c Mon Sep 17 00:00:00 2001 From: SGoriainov Date: Sun, 25 Jun 2023 16:12:52 +0400 Subject: [PATCH 6/6] add depenency jpa --- SpringHibernateApp/pom.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/SpringHibernateApp/pom.xml b/SpringHibernateApp/pom.xml index b64b8fb9..e12d13b2 100644 --- a/SpringHibernateApp/pom.xml +++ b/SpringHibernateApp/pom.xml @@ -101,6 +101,14 @@ spring-orm ${spring.version} + + + + org.springframework.data + spring-data-jpa + 3.1.1 + +