From 91534946308c7f02f3ad4d16f36f28b403547763 Mon Sep 17 00:00:00 2001 From: stvort Date: Wed, 25 Mar 2020 14:18:47 +0400 Subject: [PATCH] 2020-02 07-jdbc lesson classwork has been added --- .../jdbc-demo-exercise/.gitignore | 4 ++ .../jdbc-demo-exercise/pom.xml | 46 ++++++++++++ .../src/main/java/ru/otus/spring/Main.java | 20 ++++++ .../java/ru/otus/spring/dao/PersonDao.java | 4 ++ .../ru/otus/spring/dao/PersonDaoJdbc.java | 15 ++++ .../java/ru/otus/spring/domain/Person.java | 20 ++++++ .../src/main/resources/data.sql | 1 + .../src/main/resources/schema.sql | 2 + .../jdbc-demo-solution-3/.gitignore | 4 ++ .../jdbc-demo-solution-3/pom.xml | 46 ++++++++++++ .../src/main/java/ru/otus/spring/Main.java | 23 ++++++ .../java/ru/otus/spring/dao/PersonDao.java | 6 ++ .../ru/otus/spring/dao/PersonDaoJdbc.java | 23 ++++++ .../java/ru/otus/spring/domain/Person.java | 20 ++++++ .../src/main/resources/data.sql | 1 + .../src/main/resources/schema.sql | 2 + .../jdbc-demo-solution-4/.gitignore | 4 ++ .../jdbc-demo-solution-4/pom.xml | 46 ++++++++++++ .../src/main/java/ru/otus/spring/Main.java | 27 +++++++ .../java/ru/otus/spring/dao/PersonDao.java | 12 ++++ .../ru/otus/spring/dao/PersonDaoJdbc.java | 33 +++++++++ .../java/ru/otus/spring/domain/Person.java | 20 ++++++ .../src/main/resources/data.sql | 1 + .../src/main/resources/schema.sql | 2 + .../jdbc-demo-solution-5/.gitignore | 4 ++ .../jdbc-demo-solution-5/pom.xml | 46 ++++++++++++ .../src/main/java/ru/otus/spring/Main.java | 31 ++++++++ .../java/ru/otus/spring/dao/PersonDao.java | 16 +++++ .../ru/otus/spring/dao/PersonDaoJdbc.java | 56 +++++++++++++++ .../java/ru/otus/spring/domain/Person.java | 20 ++++++ .../src/main/resources/data.sql | 1 + .../src/main/resources/schema.sql | 2 + .../jdbc-demo-solution-final/.gitignore | 4 ++ .../jdbc-demo-solution-final/pom.xml | 46 ++++++++++++ .../src/main/java/ru/otus/spring/Main.java | 33 +++++++++ .../java/ru/otus/spring/dao/PersonDao.java | 18 +++++ .../ru/otus/spring/dao/PersonDaoJdbc.java | 70 +++++++++++++++++++ .../java/ru/otus/spring/domain/Person.java | 20 ++++++ .../src/main/resources/data.sql | 1 + .../src/main/resources/schema.sql | 2 + .../spring-07-jdbc/jdbc-class-work/pom.xml | 20 ++++++ 41 files changed, 772 insertions(+) create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/.gitignore create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/pom.xml create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/Main.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/domain/Person.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/data.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/schema.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/.gitignore create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/pom.xml create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/Main.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDao.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/domain/Person.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/data.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/schema.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/.gitignore create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/pom.xml create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/Main.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDao.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/domain/Person.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/data.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/schema.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/.gitignore create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/pom.xml create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/Main.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDao.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/domain/Person.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/data.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/schema.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/.gitignore create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/pom.xml create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/Main.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDao.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/domain/Person.java create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/data.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/schema.sql create mode 100644 2020-02/spring-07-jdbc/jdbc-class-work/pom.xml diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/.gitignore b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/pom.xml b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/pom.xml new file mode 100644 index 00000000..1538c35c --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + jdbc-demo-exercise + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.h2database + h2 + 1.4.200 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/Main.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..8916eb04 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,20 @@ +package ru.otus.spring; + +import org.h2.tools.Console; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import ru.otus.spring.dao.PersonDao; + +@SpringBootApplication +public class Main { + + public static void main(String[] args) throws Exception { + + ApplicationContext context = SpringApplication.run(Main.class); + + PersonDao dao = context.getBean(PersonDao.class); + + Console.main(args); + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..4ee1a3b3 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,4 @@ +package ru.otus.spring.dao; + +public interface PersonDao { +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java new file mode 100644 index 00000000..a6b41b84 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java @@ -0,0 +1,15 @@ +package ru.otus.spring.dao; + +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.stereotype.Repository; + +@SuppressWarnings({"SqlNoDataSourceInspection", "ConstantConditions", "SqlDialectInspection"}) +@Repository +public class PersonDaoJdbc implements PersonDao { + private final JdbcOperations jdbc; + + public PersonDaoJdbc(JdbcOperations jdbcOperations) + { + this.jdbc = jdbcOperations; + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/domain/Person.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..4faa446b --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring.domain; + +public class Person { + + private final long id; + private final String name; + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/data.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/data.sql new file mode 100644 index 00000000..240a5b4e --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/data.sql @@ -0,0 +1 @@ +insert into persons (id, `name`) values (1, 'masha'); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/schema.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/schema.sql new file mode 100644 index 00000000..87aadc44 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-exercise/src/main/resources/schema.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS PERSONS; +CREATE TABLE PERSONS(ID BIGINT PRIMARY KEY, NAME VARCHAR(255)); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/.gitignore b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/pom.xml b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/pom.xml new file mode 100644 index 00000000..ebe0a6bd --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + jdbc-demo-solution-3 + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.h2database + h2 + 1.4.200 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/Main.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..6c08834b --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,23 @@ +package ru.otus.spring; + +import org.h2.tools.Console; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import ru.otus.spring.dao.PersonDao; +import ru.otus.spring.domain.Person; + +@SpringBootApplication +public class Main { + + public static void main(String[] args) throws Exception { + + ApplicationContext context = SpringApplication.run(Main.class); + + PersonDao dao = context.getBean(PersonDao.class); + + System.out.println("All count " + dao.count()); + + Console.main(args); + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDao.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..9f5581fd --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,6 @@ +package ru.otus.spring.dao; + +public interface PersonDao { + + int count(); +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java new file mode 100644 index 00000000..f069a7a2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java @@ -0,0 +1,23 @@ +package ru.otus.spring.dao; + +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.stereotype.Repository; +import ru.otus.spring.domain.Person; + +@SuppressWarnings({"SqlNoDataSourceInspection", "ConstantConditions", "SqlDialectInspection"}) +@Repository +public class PersonDaoJdbc implements PersonDao { + + private final JdbcOperations jdbc; + + public PersonDaoJdbc(JdbcOperations jdbcOperations) + { + this.jdbc = jdbcOperations; + } + + @Override + public int count() { + return jdbc.queryForObject("select count(*) from persons", Integer.class); + } + +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/domain/Person.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..4faa446b --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring.domain; + +public class Person { + + private final long id; + private final String name; + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/data.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/data.sql new file mode 100644 index 00000000..240a5b4e --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/data.sql @@ -0,0 +1 @@ +insert into persons (id, `name`) values (1, 'masha'); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/schema.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/schema.sql new file mode 100644 index 00000000..87aadc44 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-3/src/main/resources/schema.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS PERSONS; +CREATE TABLE PERSONS(ID BIGINT PRIMARY KEY, NAME VARCHAR(255)); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/.gitignore b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/pom.xml b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/pom.xml new file mode 100644 index 00000000..eef3dc15 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + jdbc-demo-solution-4 + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.h2database + h2 + 1.4.200 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/Main.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..2bc8e898 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,27 @@ +package ru.otus.spring; + +import org.h2.tools.Console; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import ru.otus.spring.dao.PersonDao; +import ru.otus.spring.domain.Person; + +@SpringBootApplication +public class Main { + + public static void main(String[] args) throws Exception { + + ApplicationContext context = SpringApplication.run(Main.class); + + PersonDao dao = context.getBean(PersonDao.class); + + System.out.println("All count " + dao.count()); + + dao.insert(new Person(2, "ivan")); + + System.out.println("All count " + dao.count()); + + Console.main(args); + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDao.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..73109a4a --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,12 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +import java.util.List; + +public interface PersonDao { + + int count(); + + void insert(Person person); +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java new file mode 100644 index 00000000..35b648f2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java @@ -0,0 +1,33 @@ +package ru.otus.spring.dao; + +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.stereotype.Repository; +import ru.otus.spring.domain.Person; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +@SuppressWarnings({"SqlNoDataSourceInspection", "ConstantConditions", "SqlDialectInspection"}) +@Repository +public class PersonDaoJdbc implements PersonDao { + + private final JdbcOperations jdbc; + + public PersonDaoJdbc(JdbcOperations jdbcOperations) + { + this.jdbc = jdbcOperations; + } + + @Override + public int count() { + return jdbc.queryForObject("select count(*) from persons", Integer.class); + } + + @Override + public void insert(Person person) { + jdbc.update("insert into persons (id, `name`) values (?, ?)", person.getId(), person.getName()); + } + +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/domain/Person.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..4faa446b --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring.domain; + +public class Person { + + private final long id; + private final String name; + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/data.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/data.sql new file mode 100644 index 00000000..240a5b4e --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/data.sql @@ -0,0 +1 @@ +insert into persons (id, `name`) values (1, 'masha'); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/schema.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/schema.sql new file mode 100644 index 00000000..87aadc44 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-4/src/main/resources/schema.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS PERSONS; +CREATE TABLE PERSONS(ID BIGINT PRIMARY KEY, NAME VARCHAR(255)); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/.gitignore b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/pom.xml b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/pom.xml new file mode 100644 index 00000000..1f838595 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + jdbc-demo-solution-5 + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.h2database + h2 + 1.4.200 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/Main.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..4bc2aca8 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,31 @@ +package ru.otus.spring; + +import org.h2.tools.Console; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import ru.otus.spring.dao.PersonDao; +import ru.otus.spring.domain.Person; + +@SpringBootApplication +public class Main { + + public static void main(String[] args) throws Exception { + + ApplicationContext context = SpringApplication.run(Main.class); + + PersonDao dao = context.getBean(PersonDao.class); + + System.out.println("All count " + dao.count()); + + dao.insert(new Person(2, "ivan")); + + System.out.println("All count " + dao.count()); + + Person ivan = dao.getById(2); + + System.out.println("Ivan id: " + ivan.getId() + " name: " + ivan.getName()); + + Console.main(args); + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDao.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..e2995f92 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,16 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +import java.util.List; + +public interface PersonDao { + + int count(); + + void insert(Person person); + + Person getById(long id); + + List getAll(); +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java new file mode 100644 index 00000000..9685df76 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java @@ -0,0 +1,56 @@ +package ru.otus.spring.dao; + +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; +import org.springframework.stereotype.Repository; +import ru.otus.spring.domain.Person; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@SuppressWarnings({"SqlNoDataSourceInspection", "ConstantConditions", "SqlDialectInspection"}) +@Repository +public class PersonDaoJdbc implements PersonDao { + + private final JdbcOperations jdbc; + + public PersonDaoJdbc(JdbcOperations jdbcOperations) + { + this.jdbc = jdbcOperations; + } + + @Override + public int count() { + return jdbc.queryForObject("select count(*) from persons", Integer.class); + } + + @Override + public void insert(Person person) { + jdbc.update("insert into persons (id, `name`) values (?, ?)", person.getId(), person.getName()); + } + + @Override + public Person getById(long id) { + return jdbc.queryForObject("select * from persons where id = ?", new Object[] {id}, new PersonMapper()); + } + + @Override + public List getAll() { + return jdbc.query("select * from persons", new PersonMapper()); + } + + + private static class PersonMapper implements RowMapper { + + @Override + public Person mapRow(ResultSet resultSet, int i) throws SQLException { + long id = resultSet.getLong("id"); + String name = resultSet.getString("name"); + return new Person(id, name); + } + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/domain/Person.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..4faa446b --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring.domain; + +public class Person { + + private final long id; + private final String name; + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/data.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/data.sql new file mode 100644 index 00000000..240a5b4e --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/data.sql @@ -0,0 +1 @@ +insert into persons (id, `name`) values (1, 'masha'); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/schema.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/schema.sql new file mode 100644 index 00000000..87aadc44 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-5/src/main/resources/schema.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS PERSONS; +CREATE TABLE PERSONS(ID BIGINT PRIMARY KEY, NAME VARCHAR(255)); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/.gitignore b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/.gitignore new file mode 100644 index 00000000..e62c33c2 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/.gitignore @@ -0,0 +1,4 @@ +.idea/ +*.iml + +target/ diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/pom.xml b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/pom.xml new file mode 100644 index 00000000..57a48f5c --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + ru.otus + jdbc-demo-solution-final + 1.0-SNAPSHOT + + + org.springframework.boot + spring-boot-starter-parent + 2.2.1.RELEASE + + + + 11 + 11 + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.h2database + h2 + 1.4.200 + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/Main.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/Main.java new file mode 100644 index 00000000..05636811 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/Main.java @@ -0,0 +1,33 @@ +package ru.otus.spring; + +import org.h2.tools.Console; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ApplicationContext; +import ru.otus.spring.dao.PersonDao; +import ru.otus.spring.domain.Person; + +@SpringBootApplication +public class Main { + + public static void main(String[] args) throws Exception { + + ApplicationContext context = SpringApplication.run(Main.class); + + PersonDao dao = context.getBean(PersonDao.class); + + System.out.println("All count " + dao.count()); + + dao.insert(new Person(2, "ivan")); + + System.out.println("All count " + dao.count()); + + Person ivan = dao.getById(2); + + System.out.println("Ivan id: " + ivan.getId() + " name: " + ivan.getName()); + + System.out.println(dao.getAll()); + + Console.main(args); + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDao.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDao.java new file mode 100644 index 00000000..f2c30f7c --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDao.java @@ -0,0 +1,18 @@ +package ru.otus.spring.dao; + +import ru.otus.spring.domain.Person; + +import java.util.List; + +public interface PersonDao { + + int count(); + + void insert(Person person); + + Person getById(long id); + + List getAll(); + + void deleteById(long id); +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java new file mode 100644 index 00000000..f76b3d3f --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/dao/PersonDaoJdbc.java @@ -0,0 +1,70 @@ +package ru.otus.spring.dao; + +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations; +import org.springframework.stereotype.Repository; +import ru.otus.spring.domain.Person; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@SuppressWarnings({"SqlNoDataSourceInspection", "ConstantConditions", "SqlDialectInspection"}) +@Repository +public class PersonDaoJdbc implements PersonDao { + + private final JdbcOperations jdbc; + private final NamedParameterJdbcOperations namedParameterJdbcOperations; + + public PersonDaoJdbc(NamedParameterJdbcOperations namedParameterJdbcOperations) + { + // Это просто отсавили, чтобы не переписывать код + // В идеале всё должно быть на NamedParameterJdbcOperations + this.jdbc = namedParameterJdbcOperations.getJdbcOperations(); + this.namedParameterJdbcOperations = namedParameterJdbcOperations; + } + + @Override + public int count() { + return jdbc.queryForObject("select count(*) from persons", Integer.class); + } + + @Override + public void insert(Person person) { + jdbc.update("insert into persons (id, `name`) values (?, ?)", person.getId(), person.getName()); + } + + @Override + public Person getById(long id) { + Map params = Collections.singletonMap("id", id); + return namedParameterJdbcOperations.queryForObject( + "select * from persons where id = :id", params, new PersonMapper() + ); + } + + @Override + public List getAll() { + return jdbc.query("select * from persons", new PersonMapper()); + } + + @Override + public void deleteById(long id) { + Map params = Collections.singletonMap("id", id); + namedParameterJdbcOperations.update( + "delete from persons where id = :id", params + ); + } + + private static class PersonMapper implements RowMapper { + + @Override + public Person mapRow(ResultSet resultSet, int i) throws SQLException { + long id = resultSet.getLong("id"); + String name = resultSet.getString("name"); + return new Person(id, name); + } + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/domain/Person.java b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/domain/Person.java new file mode 100644 index 00000000..4faa446b --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/java/ru/otus/spring/domain/Person.java @@ -0,0 +1,20 @@ +package ru.otus.spring.domain; + +public class Person { + + private final long id; + private final String name; + + public Person(long id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public String getName() { + return name; + } +} diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/data.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/data.sql new file mode 100644 index 00000000..240a5b4e --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/data.sql @@ -0,0 +1 @@ +insert into persons (id, `name`) values (1, 'masha'); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/schema.sql b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/schema.sql new file mode 100644 index 00000000..87aadc44 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/jdbc-demo-solution-final/src/main/resources/schema.sql @@ -0,0 +1,2 @@ +DROP TABLE IF EXISTS PERSONS; +CREATE TABLE PERSONS(ID BIGINT PRIMARY KEY, NAME VARCHAR(255)); diff --git a/2020-02/spring-07-jdbc/jdbc-class-work/pom.xml b/2020-02/spring-07-jdbc/jdbc-class-work/pom.xml new file mode 100644 index 00000000..1c941227 --- /dev/null +++ b/2020-02/spring-07-jdbc/jdbc-class-work/pom.xml @@ -0,0 +1,20 @@ + + + 4.0.0 + + ru.otus + jdbc-class-work + 1.0 + + pom + + + jdbc-demo-exercise + jdbc-demo-solution-3 + jdbc-demo-solution-4 + jdbc-demo-solution-5 + jdbc-demo-solution-final + +