From 945e3a2721958d71e0955c07c3d33f811a3fe2d8 Mon Sep 17 00:00:00 2001 From: Patrick Glavin Date: Sun, 8 Apr 2018 15:23:09 -0400 Subject: [PATCH 1/6] finish part 1 --- src/main/resources/script.sql | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/resources/script.sql diff --git a/src/main/resources/script.sql b/src/main/resources/script.sql new file mode 100644 index 0000000..478cc85 --- /dev/null +++ b/src/main/resources/script.sql @@ -0,0 +1,22 @@ +INSERT INTO movies (title, runtime, genre, imdb_score, rating) +VALUES ('Howard the Duck', 110, 'Sci-Fi', 4.6, 'PG'),('Lavalantula', 83, 'Horror', 4.7, 'TV-14'), +('Starship Troopers', 129, 'Sci-Fi', 7.2, 'PG-13'), ('Waltz With Bashir', 90, 'Documentary', 8.0, 'R'), ('Monsters Inc.', 92, 'Animation', 8.1, 'G'), +('Spaceballs', 96, 'Comedy', 7.1, 'PG'),('Tombstone', 102, 'Western', 7.3, 'R'), ('Black Panther', 135, 'Superhero', 9.5, 'PG-13'); + +SELECT * FROM movies WHERE genre='Sci-Fi'; + +SELECT * FROM movies WHERE imdb_score > 6.5; + +SELECT * FROM movies WHERE rating = 'G' OR rating = 'PG' AND runtime < 100; + +SELECT AVG(runtime), genre FROM movies WHERE imdb_score < 7.5 GROUP BY genre; + +UPDATE movies SET rating = 'R' WHERE title = 'Starship Troopers'; + +SELECT id, rating FROM movies WHERE genre='Horror' OR genre='Documentary'; + +SELECT genre, AVG(imdb_score), MAX(imdb_score), MIN(imdb_score) FROM movies GROUP BY genre; + +SELECT genre, AVG(imdb_score), MAX(imdb_score), MIN(imdb_score) FROM movies GROUP BY genre HAVING COUNT(*) > 1; + +DELETE FROM movies WHERE rating='R'; \ No newline at end of file From b541c0f2646176c9874c660b595f7c2a86f5cf32 Mon Sep 17 00:00:00 2001 From: Patrick Glavin Date: Sun, 8 Apr 2018 17:32:32 -0400 Subject: [PATCH 2/6] connect to datasource --- .../io/zipcoder/persistenceapp/Person.java | 80 +++++++++++++++++++ .../persistenceapp/PersonRepository.java | 4 + .../persistenceapp/PersonService.java | 39 +++++++++ src/main/resources/schema-h2.sql | 2 + 4 files changed, 125 insertions(+) create mode 100644 src/main/java/io/zipcoder/persistenceapp/Person.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonRepository.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonService.java diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/Person.java new file mode 100644 index 0000000..cd34a2e --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/Person.java @@ -0,0 +1,80 @@ +package io.zipcoder.persistenceapp; + +import org.springframework.jdbc.core.JdbcTemplate; + +public class Person extends JdbcTemplate{ + private Integer id; + private String first_name; + private String last_name; + private String mobile; + private String birthday; + private Integer home_id; + + public Person() { + } + + public Person(Integer id, String first_name, String last_name, String mobile, String birthday, Integer home_id) { + this.id = id; + this.first_name = first_name; + this.last_name = last_name; + this.mobile = mobile; + this.birthday = birthday; + this.home_id = home_id; + } + + public Person(String first_name, String last_name, String mobile, String birthday, Integer home_id) { + this.first_name = first_name; + this.last_name = last_name; + this.mobile = mobile; + this.birthday = birthday; + this.home_id = home_id; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getFirst_name() { + return first_name; + } + + public void setFirst_name(String first_name) { + this.first_name = first_name; + } + + public String getLast_name() { + return last_name; + } + + public void setLast_name(String last_name) { + this.last_name = last_name; + } + + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + + public String getBirthday() { + return birthday; + } + + public void setBirthday(String birthday) { + this.birthday = birthday; + } + + public Integer getHome_id() { + return home_id; + } + + public void setHome_id(Integer home_id) { + this.home_id = home_id; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonRepository.java b/src/main/java/io/zipcoder/persistenceapp/PersonRepository.java new file mode 100644 index 0000000..8e03008 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/PersonRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.persistenceapp; + +public class PersonRepository { +} diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java new file mode 100644 index 0000000..438cd74 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/PersonService.java @@ -0,0 +1,39 @@ +package io.zipcoder.persistenceapp; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcOperations; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Controller; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Service +@RequestMapping +public class PersonService { + + JdbcTemplate template; + + @RequestMapping(value = "/people", method = RequestMethod.POST) + public ResponseEntity createPerson(Integer id, String first_name, String last_name, String mobile, String birthday, Integer home_id){ + String sql = "INSERT INTO people (ID, FIRST_NAME, LAST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES (" + id + ", " + first_name + ", " + last_name + ", " + + mobile + ", " + birthday + ", " + home_id + ")"; + Person person = new Person(id, first_name, last_name, mobile, birthday, home_id); + template.execute(sql); + return new ResponseEntity(HttpStatus.CREATED); + } + + @RequestMapping(value = "/people", method = RequestMethod.GET) + public ResponseEntity getAllPeople(){ + String sql = "SELECT * FROM person"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } +} diff --git a/src/main/resources/schema-h2.sql b/src/main/resources/schema-h2.sql index 39c2c27..9dde65b 100644 --- a/src/main/resources/schema-h2.sql +++ b/src/main/resources/schema-h2.sql @@ -13,6 +13,8 @@ CREATE TABLE PERSON ( ADD FOREIGN KEY (HOME_ID) REFERENCES HOME(ID); +INSERT INTO person (first_name, last_name, mobile, birthday, home_id) +VALUES ('Bobby', 'Labonte', '1234567890', '1973-01-23', 1); DROP TABLE IF EXISTS HOME; From 238dd918ee2aea7f624bd1e8eddc4efd0f7f6ee0 Mon Sep 17 00:00:00 2001 From: Patrick Glavin Date: Sun, 8 Apr 2018 17:58:44 -0400 Subject: [PATCH 3/6] sql insert with hardcoded parameters --- .../io/zipcoder/persistenceapp/Person.java | 1 + .../zipcoder/persistenceapp/PersonService.java | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/Person.java index cd34a2e..f4337cd 100644 --- a/src/main/java/io/zipcoder/persistenceapp/Person.java +++ b/src/main/java/io/zipcoder/persistenceapp/Person.java @@ -3,6 +3,7 @@ import org.springframework.jdbc.core.JdbcTemplate; public class Person extends JdbcTemplate{ + private Integer id; private String first_name; private String last_name; diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java index 438cd74..5bb55fc 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonService.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonService.java @@ -19,12 +19,17 @@ @RequestMapping public class PersonService { - JdbcTemplate template; + private JdbcTemplate template; + + public PersonService(JdbcTemplate template) { + this.template = template; + } @RequestMapping(value = "/people", method = RequestMethod.POST) public ResponseEntity createPerson(Integer id, String first_name, String last_name, String mobile, String birthday, Integer home_id){ - String sql = "INSERT INTO people (ID, FIRST_NAME, LAST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES (" + id + ", " + first_name + ", " + last_name + ", " - + mobile + ", " + birthday + ", " + home_id + ")"; +// String sql = "INSERT INTO people (ID, FIRST_NAME, LAST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES (" + first_name + ", " + last_name + ", " +// + mobile + ", " + birthday + ", " + home_id + ")"; + String sql = "INSERT INTO person (FIRST_NAME, LAST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES ('Jeff', 'Gordon', '9876543210', '1985-03-07', 2)"; Person person = new Person(id, first_name, last_name, mobile, birthday, home_id); template.execute(sql); return new ResponseEntity(HttpStatus.CREATED); @@ -36,4 +41,11 @@ public ResponseEntity getAllPeople(){ Iterable people = template.queryForList(sql); return new ResponseEntity(people, HttpStatus.OK); } + +// @RequestMapping(value = "/people/{id}", method = RequestMethod.GET) +// public ResponseEntity getPersonById(Integer id){ +// String sql = "SELECT * FROM person WHERE id = " + id; +// Iterable people = template.queryForObject; +// return new ResponseEntity(people, HttpStatus.OK); +// } } From feb3a5faca315c85cc6e9f9b5b43c17a6f22b493 Mon Sep 17 00:00:00 2001 From: Patrick Glavin Date: Sun, 8 Apr 2018 18:21:58 -0400 Subject: [PATCH 4/6] consume json, format to insert for create person --- .../zipcoder/persistenceapp/PersonService.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java index 5bb55fc..7c7787d 100644 --- a/src/main/java/io/zipcoder/persistenceapp/PersonService.java +++ b/src/main/java/io/zipcoder/persistenceapp/PersonService.java @@ -7,6 +7,7 @@ import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Controller; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -26,11 +27,9 @@ public PersonService(JdbcTemplate template) { } @RequestMapping(value = "/people", method = RequestMethod.POST) - public ResponseEntity createPerson(Integer id, String first_name, String last_name, String mobile, String birthday, Integer home_id){ -// String sql = "INSERT INTO people (ID, FIRST_NAME, LAST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES (" + first_name + ", " + last_name + ", " -// + mobile + ", " + birthday + ", " + home_id + ")"; - String sql = "INSERT INTO person (FIRST_NAME, LAST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES ('Jeff', 'Gordon', '9876543210', '1985-03-07', 2)"; - Person person = new Person(id, first_name, last_name, mobile, birthday, home_id); + public ResponseEntity createPerson(@RequestBody Person person){ +// Person person = new Person(first_name, last_name, mobile, birthday, home_id); + String sql = createInsertStatement(person); template.execute(sql); return new ResponseEntity(HttpStatus.CREATED); } @@ -48,4 +47,11 @@ public ResponseEntity getAllPeople(){ // Iterable people = template.queryForObject; // return new ResponseEntity(people, HttpStatus.OK); // } + + private String createInsertStatement(Person person){ + String sql = "INSERT INTO PERSON(first_name, last_name, mobile, birthday, home_id) VALUES( '" + + person.getFirst_name() + "','" + person.getLast_name() + "','" + person.getMobile() + "','" + person.getBirthday() + "','" + person.getHome_id() + + "')"; + return sql; + } } From 7a5d2c2ce18e24b8f4f2d34f1522d1088f6871ea Mon Sep 17 00:00:00 2001 From: Patrick Glavin Date: Sun, 8 Apr 2018 20:03:49 -0400 Subject: [PATCH 5/6] finalize personservice, move to homeservice --- .../persistenceapp/PersonService.java | 57 --------- .../zipcoder/persistenceapp/domain/Home.java | 46 ++++++++ .../persistenceapp/{ => domain}/Person.java | 2 +- .../persistenceapp/service/HomeService.java | 35 ++++++ .../persistenceapp/service/PersonService.java | 111 ++++++++++++++++++ src/main/resources/schema-h2.sql | 18 ++- 6 files changed, 209 insertions(+), 60 deletions(-) delete mode 100644 src/main/java/io/zipcoder/persistenceapp/PersonService.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/domain/Home.java rename src/main/java/io/zipcoder/persistenceapp/{ => domain}/Person.java (97%) create mode 100644 src/main/java/io/zipcoder/persistenceapp/service/HomeService.java create mode 100644 src/main/java/io/zipcoder/persistenceapp/service/PersonService.java diff --git a/src/main/java/io/zipcoder/persistenceapp/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/PersonService.java deleted file mode 100644 index 7c7787d..0000000 --- a/src/main/java/io/zipcoder/persistenceapp/PersonService.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.zipcoder.persistenceapp; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.jdbc.core.JdbcOperations; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.stereotype.Controller; -import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import java.sql.ResultSet; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -@Service -@RequestMapping -public class PersonService { - - private JdbcTemplate template; - - public PersonService(JdbcTemplate template) { - this.template = template; - } - - @RequestMapping(value = "/people", method = RequestMethod.POST) - public ResponseEntity createPerson(@RequestBody Person person){ -// Person person = new Person(first_name, last_name, mobile, birthday, home_id); - String sql = createInsertStatement(person); - template.execute(sql); - return new ResponseEntity(HttpStatus.CREATED); - } - - @RequestMapping(value = "/people", method = RequestMethod.GET) - public ResponseEntity getAllPeople(){ - String sql = "SELECT * FROM person"; - Iterable people = template.queryForList(sql); - return new ResponseEntity(people, HttpStatus.OK); - } - -// @RequestMapping(value = "/people/{id}", method = RequestMethod.GET) -// public ResponseEntity getPersonById(Integer id){ -// String sql = "SELECT * FROM person WHERE id = " + id; -// Iterable people = template.queryForObject; -// return new ResponseEntity(people, HttpStatus.OK); -// } - - private String createInsertStatement(Person person){ - String sql = "INSERT INTO PERSON(first_name, last_name, mobile, birthday, home_id) VALUES( '" + - person.getFirst_name() + "','" + person.getLast_name() + "','" + person.getMobile() + "','" + person.getBirthday() + "','" + person.getHome_id() - + "')"; - return sql; - } -} diff --git a/src/main/java/io/zipcoder/persistenceapp/domain/Home.java b/src/main/java/io/zipcoder/persistenceapp/domain/Home.java new file mode 100644 index 0000000..73df866 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/domain/Home.java @@ -0,0 +1,46 @@ +package io.zipcoder.persistenceapp.domain; + +public class Home{ + private Integer id; + private String address; + private String homenumber; + + public Home() { + } + + public Home(String address, String homenumber) { + + this.address = address; + this.homenumber = homenumber; + } + + public Home(Integer id, String address, String homenumber) { + this.id = id; + this.address = address; + this.homenumber = homenumber; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getHomenumber() { + return homenumber; + } + + public void setHomenumber(String homenumber) { + this.homenumber = homenumber; + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/Person.java b/src/main/java/io/zipcoder/persistenceapp/domain/Person.java similarity index 97% rename from src/main/java/io/zipcoder/persistenceapp/Person.java rename to src/main/java/io/zipcoder/persistenceapp/domain/Person.java index f4337cd..c12f699 100644 --- a/src/main/java/io/zipcoder/persistenceapp/Person.java +++ b/src/main/java/io/zipcoder/persistenceapp/domain/Person.java @@ -1,4 +1,4 @@ -package io.zipcoder.persistenceapp; +package io.zipcoder.persistenceapp.domain; import org.springframework.jdbc.core.JdbcTemplate; diff --git a/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java b/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java new file mode 100644 index 0000000..d1465f8 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java @@ -0,0 +1,35 @@ +package io.zipcoder.persistenceapp.service; + +import io.zipcoder.persistenceapp.domain.Home; +import org.springframework.http.HttpRequest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Service +@RequestMapping +public class HomeService { + private JdbcTemplate template; + + public HomeService(JdbcTemplate jdbcTemplate) { + this.template = jdbcTemplate; + } + + @RequestMapping(value = "/homes", method = RequestMethod.GET) + public ResponseEntity getAllHomes(){ + String sql = "SELECT * FROM home"; + Iterable homes = template.queryForList(sql); + return new ResponseEntity(homes, HttpStatus.OK); + } + + @RequestMapping(value = "/homes", method = RequestMethod.POST) + public ResponseEntity createHome(@RequestBody Home home){ + String sql = "INSERT INTO home (address, homenumber) VALUES('" + home.getAddress() +"','" + home.getHomenumber() + "')"; + template.execute(sql); + return new ResponseEntity(HttpStatus.CREATED); + } +} diff --git a/src/main/java/io/zipcoder/persistenceapp/service/PersonService.java b/src/main/java/io/zipcoder/persistenceapp/service/PersonService.java new file mode 100644 index 0000000..4dbd3b8 --- /dev/null +++ b/src/main/java/io/zipcoder/persistenceapp/service/PersonService.java @@ -0,0 +1,111 @@ +package io.zipcoder.persistenceapp.service; + +import io.zipcoder.persistenceapp.domain.Person; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Service +@RequestMapping +public class PersonService { + + private JdbcTemplate template; + + public PersonService(JdbcTemplate template) { + this.template = template; + } + + @RequestMapping(value = "/people", method = RequestMethod.POST) + public ResponseEntity createPerson(@RequestBody Person person){ +// Person person = new Person(first_name, last_name, mobile, birthday, home_id); + String sql = createInsertStatement(person); + template.execute(sql); + return new ResponseEntity(HttpStatus.CREATED); + } + + @RequestMapping(value = "people/{id}", method = RequestMethod.PUT) + public ResponseEntity updatePerson(@PathVariable Integer id, @RequestBody Person person){ + String sql = "UPDATE person SET first_name = '" + person.getFirst_name() + "', last_name = '" + person.getLast_name() + "', mobile = '" + + person.getMobile() + "', birthday = '" + person.getBirthday() + "', home_id = '" + person.getHome_id() + "' WHERE id = " + id; + template.execute(sql); + return new ResponseEntity(person, HttpStatus.OK); + } + + @RequestMapping(value = "/people", method = RequestMethod.GET) + public ResponseEntity getAllPeople(){ + String sql = "SELECT * FROM person"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + @RequestMapping(value = "/people/{id}", method = RequestMethod.GET) + public ResponseEntity getPersonById(@PathVariable Integer id){ + String sql = "SELECT * FROM person WHERE id = " + id; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + @RequestMapping(value = "/people/{id}", method = RequestMethod.DELETE) + public ResponseEntity deletePersonById(@PathVariable Integer id){ + String sql = "DELETE FROM person WHERE id = " + id; + template.execute(sql); + return new ResponseEntity(HttpStatus.OK); + } + + //need to come back to this one + @RequestMapping(value = "/people", method = RequestMethod.DELETE) + public ResponseEntity deleteGroup(@RequestBody Integer[] ids){ + for (Integer id:ids) { + String sql = "DELETE FROM person WHERE id = " + id; + template.execute(sql); + } + return new ResponseEntity(HttpStatus.OK); + } + + @RequestMapping(value = "/people/first_name/{first_name}", method = RequestMethod.GET) + public ResponseEntity findGroupByFirstName(@PathVariable String first_name){ + String sql = "SELECT * FROM person WHERE first_name = '" + first_name + "'"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + @RequestMapping(value = "/people/last_name/{last_name}", method = RequestMethod.GET) + public ResponseEntity findGroupByLastName(@PathVariable String last_name){ + String sql = "SELECT * FROM person WHERE last_name = '" + last_name + "'"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + @RequestMapping(value = "/people/birthday/{birthday}", method = RequestMethod.GET) + public ResponseEntity findGroupByBirthday(@PathVariable String birthday){ + String sql = "SELECT * FROM person WHERE birthday = '" + birthday + "'"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + @RequestMapping(value = "/people/last_name", method = RequestMethod.GET) + public ResponseEntity lastNameOccurences(){ + String sql = "SELECT last_name, COUNT(last_name) FROM person GROUP BY last_name"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + @RequestMapping(value = "/people/first_name", method = RequestMethod.GET) + public ResponseEntity firstNameOccurences(){ + String sql = "SELECT first_name, COUNT(first_name) FROM person GROUP BY first_name"; + Iterable people = template.queryForList(sql); + return new ResponseEntity(people, HttpStatus.OK); + } + + private String createInsertStatement(Person person){ + String sql = "INSERT INTO PERSON(first_name, last_name, mobile, birthday, home_id) VALUES( '" + + person.getFirst_name() + "','" + person.getLast_name() + "','" + person.getMobile() + "','" + person.getBirthday() + "','" + person.getHome_id() + + "')"; + return sql; + } +} diff --git a/src/main/resources/schema-h2.sql b/src/main/resources/schema-h2.sql index 9dde65b..2624a0c 100644 --- a/src/main/resources/schema-h2.sql +++ b/src/main/resources/schema-h2.sql @@ -13,8 +13,6 @@ CREATE TABLE PERSON ( ADD FOREIGN KEY (HOME_ID) REFERENCES HOME(ID); -INSERT INTO person (first_name, last_name, mobile, birthday, home_id) -VALUES ('Bobby', 'Labonte', '1234567890', '1973-01-23', 1); DROP TABLE IF EXISTS HOME; @@ -63,6 +61,22 @@ CREATE TABLE auto_prices ( ); +INSERT INTO HOME (ADDRESS, HOMENUMBER) VALUES ('36 E. Bayberry Rd.Savannah, GA 31404', '565-6895'); +INSERT INTO HOME (ADDRESS, HOMENUMBER) VALUES ('11 Essex Dr.Farmingdale, NY 11735', '454-4544'); +INSERT INTO HOME (ADDRESS, HOMENUMBER) VALUES ('920 Arlington Street Clifton, NJ 07011', '985-4515'); +INSERT INTO HOME (ADDRESS, HOMENUMBER) VALUES ('234 High Street, PA 19159 ', '267-3940'); + + +INSERT INTO PERSON ( LAST_NAME, FIRST_NAME, MOBILE, BIRTHDAY, HOME_ID ) VALUES ('Carbral', 'Sheeri', '230-4233', '1970-02-23', 2); +INSERT INTO PERSON ( LAST_NAME, FIRST_NAME, MOBILE, BIRTHDAY, HOME_ID) VALUES ( 'Sharam', 'Raj', '186-5223', '1980-08-31', 3); +INSERT INTO PERSON ( LAST_NAME, FIRST_NAME, MOBILE, BIRTHDAY, HOME_ID)VALUES ('Durand', 'Noelle', '395-6161', '1960-07-06', 1); +INSERT INTO PERSON ( LAST_NAME, FIRST_NAME, MOBILE, BIRTHDAY, HOME_ID)VALUES ('Smith', 'Thomas', '395-6181', '1987-07-06', 1); +INSERT INTO PERSON ( LAST_NAME, FIRST_NAME, MOBILE, BIRTHDAY, HOME_ID)VALUES ('Smith', 'Jane', '393-6181', '1987-12-06', 3); +INSERT INTO PERSON ( LAST_NAME, FIRST_NAME, MOBILE, BIRTHDAY, HOME_ID)VALUES ('Brown', 'Doug', '466-6241', '1954-12-07', 3); + + + + DROP SEQUENCE hibernate_sequence; CREATE SEQUENCE hibernate_sequence; From 19bf2bb41803ddd3675fe376807a45fa2e28ced6 Mon Sep 17 00:00:00 2001 From: Patrick Glavin Date: Sun, 8 Apr 2018 20:21:51 -0400 Subject: [PATCH 6/6] add crud methods, findbyid --- .../persistenceapp/service/HomeService.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java b/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java index d1465f8..eb9c53f 100644 --- a/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java +++ b/src/main/java/io/zipcoder/persistenceapp/service/HomeService.java @@ -6,6 +6,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -32,4 +33,25 @@ public ResponseEntity createHome(@RequestBody Home home){ template.execute(sql); return new ResponseEntity(HttpStatus.CREATED); } + + @RequestMapping(value = "/homes/{id}", method = RequestMethod.PUT) + public ResponseEntity updateHome(@PathVariable Integer id, @RequestBody Home home){ + String sql = "UPDATE home SET address = '" + home.getAddress() + "', homenumber = '" + home.getHomenumber() + "' WHERE id = " + id; + template.execute(sql); + return new ResponseEntity(HttpStatus.OK); + } + + @RequestMapping(value = "/homes/{id}", method = RequestMethod.DELETE) + public ResponseEntity deleteHome(@PathVariable Integer id){ + String sql = "DELETE FROM home WHERE id = " + id; + template.execute(sql); + return new ResponseEntity(HttpStatus.OK); + } + + @RequestMapping(value = "/homes/{id}", method = RequestMethod.GET) + public ResponseEntity findHomeById(@PathVariable Integer id){ + String sql = "SELECT * FROM home WHERE id = " + id; + Iterable home = template.queryForList(sql); + return new ResponseEntity(home, HttpStatus.OK); + } }