From f702bbd7fff018383148e04162031956f1f23293 Mon Sep 17 00:00:00 2001 From: Subham Tripathi Date: Tue, 31 Mar 2020 07:30:15 +0530 Subject: [PATCH 1/5] new commit firstly --- .../bootstrap/BootStrapData.java | 58 ++++++++++ .../spring5webapp/domain/Author.java | 90 ++++++++++++++++ .../spring5webapp/domain/Book.java | 92 ++++++++++++++++ .../spring5webapp/domain/Publisher.java | 101 ++++++++++++++++++ .../repository/AuthorRepository.java | 7 ++ .../repository/BookRepository.java | 7 ++ .../repository/PublisherRepository.java | 7 ++ 7 files changed, 362 insertions(+) create mode 100644 src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java create mode 100644 src/main/java/guru/springframework/spring5webapp/domain/Author.java create mode 100644 src/main/java/guru/springframework/spring5webapp/domain/Book.java create mode 100644 src/main/java/guru/springframework/spring5webapp/domain/Publisher.java create mode 100644 src/main/java/guru/springframework/spring5webapp/repository/AuthorRepository.java create mode 100644 src/main/java/guru/springframework/spring5webapp/repository/BookRepository.java create mode 100644 src/main/java/guru/springframework/spring5webapp/repository/PublisherRepository.java diff --git a/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java b/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java new file mode 100644 index 0000000000..c3a28529ea --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java @@ -0,0 +1,58 @@ +package guru.springframework.spring5webapp.bootstrap; + +import ch.qos.logback.core.net.SyslogOutputStream; +import guru.springframework.spring5webapp.domain.Author; +import guru.springframework.spring5webapp.domain.Book; +import guru.springframework.spring5webapp.domain.Publisher; +import guru.springframework.spring5webapp.repository.AuthorRepository; +import guru.springframework.spring5webapp.repository.BookRepository; +import guru.springframework.spring5webapp.repository.PublisherRepository; +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + + +@Component +public class BootStrapData implements CommandLineRunner { + + private final AuthorRepository authorRepository; + private final BookRepository bookRepository; + private final PublisherRepository publisherRepository; + + public BootStrapData(AuthorRepository authorRepository, BookRepository bookRepository,PublisherRepository publisherRepository) { + this.authorRepository = authorRepository; + this.bookRepository = bookRepository; + this.publisherRepository=publisherRepository; + } + + @Override + public void run(String... args) throws Exception { + Author eric=new Author("Eric","Evans"); + Book b=new Book("Domain driven desing ","1233322"); + + Author rod = new Author("Rod", "Johnson"); + Book noEJB = new Book("J2EE Development without EJB", "3939459459"); + rod.getBooks().add(noEJB); //this line hard to understand why we do this? + noEJB.getAuthors().add(rod); + + authorRepository.save(rod); + bookRepository.save(noEJB); + + Publisher p=new Publisher(); + p.setCity("St Petersburg"); + p.setState("FL"); + p.setName("SFG Publishing"); + + publisherRepository.save(p); + + + eric.getBooks().add(b); + b.getAuthors().add(eric); + + authorRepository.save(eric); + bookRepository.save(b); + + System.out.println("No of books"+bookRepository.count()); + System.out.println("No of publisher"+publisherRepository.count()); + + } +} diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Author.java b/src/main/java/guru/springframework/spring5webapp/domain/Author.java new file mode 100644 index 0000000000..1e8db83a4c --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/domain/Author.java @@ -0,0 +1,90 @@ +package guru.springframework.spring5webapp.domain; + +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; + +@Entity +public class Author{ + private String firstName; + private String lastName; + + @ManyToMany(mappedBy = "authors") + private Set books=new HashSet<>(); + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + //Constructors + + public Author() { + } + + public Author(String firstName, String lastName) + { + this.firstName=firstName; + this.lastName=lastName; + + } + + + //Getters and setters + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public Set getBooks() { + return books; + } + + public void setBooks(Set books) { + this.books = books; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Author author = (Author) o; + + if (firstName != null ? !firstName.equals(author.firstName) : author.firstName != null) return false; + if (lastName != null ? !lastName.equals(author.lastName) : author.lastName != null) return false; + if (books != null ? !books.equals(author.books) : author.books != null) return false; + return id != null ? id.equals(author.id) : author.id == null; + } + + + + + @Override + public String toString() { + return "Author{" + + "firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", books=" + books + + ", id=" + id + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Book.java b/src/main/java/guru/springframework/spring5webapp/domain/Book.java new file mode 100644 index 0000000000..7eab2fa5cf --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/domain/Book.java @@ -0,0 +1,92 @@ +package guru.springframework.spring5webapp.domain; + + +import javax.persistence.*; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +@Entity +public class Book{ + + @Id + @GeneratedValue + private long id; + + private String isbn; + private String title; + + + //Many to many mapping based on the id + + @ManyToMany + @JoinTable(name = "author_book",joinColumns = @JoinColumn(name = "book_id"),inverseJoinColumns = @JoinColumn(name = "author_id")) + private Set authors = new HashSet<>(); + + public Book() { //for entity class we need to have an empty constructor + } + public Book(String title,String isbn) + { + this.isbn=isbn; + this.title=title; + } + + + //Getters and Setters + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Set getAuthors() { + return authors; + } + + public void setAuthors(Set authors) { + this.authors = authors; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Book book = (Book) o; + + if (id != book.id) return false; + if (isbn != null ? !isbn.equals(book.isbn) : book.isbn != null) return false; + if (title != null ? !title.equals(book.title) : book.title != null) return false; + return authors != null ? authors.equals(book.authors) : book.authors == null; + } + + + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", isbn='" + isbn + '\'' + + ", title='" + title + '\'' + + ", authors=" + authors + + '}'; + } +} \ No newline at end of file diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java b/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java new file mode 100644 index 0000000000..f2d00da223 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java @@ -0,0 +1,101 @@ +package guru.springframework.spring5webapp.domain; + + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Publisher { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String name; + private String addressLine1; + private String state; + private String zip; + private String city; + + public Publisher() { + } + + public Publisher(String name,String addressLine1,String state,String zip,String city) + { + this.name=name; + this.addressLine1=addressLine1; + this.zip=zip; + this.city=city; + this.state=state; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAddressLine1() { + return addressLine1; + } + + public void setAddressLine1(String addressLine1) { + this.addressLine1 = addressLine1; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getZip() { + return zip; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public void setZip(String zip) { + this.zip = zip; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Publisher publisher = (Publisher) o; + + if (id != null ? !id.equals(publisher.id) : publisher.id != null) return false; + if (addressLine1 != null ? !addressLine1.equals(publisher.addressLine1) : publisher.addressLine1 != null) + return false; + if (state != null ? !state.equals(publisher.state) : publisher.state != null) return false; + if (zip != null ? !zip.equals(publisher.zip) : publisher.zip != null) return false; + return city != null ? city.equals(publisher.city) : publisher.city == null; + } + + @Override + public int hashCode() { + return id != null ? id.hashCode() : 0; + } +} diff --git a/src/main/java/guru/springframework/spring5webapp/repository/AuthorRepository.java b/src/main/java/guru/springframework/spring5webapp/repository/AuthorRepository.java new file mode 100644 index 0000000000..61ed1cce21 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/repository/AuthorRepository.java @@ -0,0 +1,7 @@ +package guru.springframework.spring5webapp.repository; + +import guru.springframework.spring5webapp.domain.Author; +import org.springframework.data.repository.CrudRepository; + +public interface AuthorRepository extends CrudRepository { +} diff --git a/src/main/java/guru/springframework/spring5webapp/repository/BookRepository.java b/src/main/java/guru/springframework/spring5webapp/repository/BookRepository.java new file mode 100644 index 0000000000..005c7486cd --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/repository/BookRepository.java @@ -0,0 +1,7 @@ +package guru.springframework.spring5webapp.repository; + +import guru.springframework.spring5webapp.domain.Book; +import org.springframework.data.repository.CrudRepository; + +public interface BookRepository extends CrudRepository { +} diff --git a/src/main/java/guru/springframework/spring5webapp/repository/PublisherRepository.java b/src/main/java/guru/springframework/spring5webapp/repository/PublisherRepository.java new file mode 100644 index 0000000000..014858aef7 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/repository/PublisherRepository.java @@ -0,0 +1,7 @@ +package guru.springframework.spring5webapp.repository; + +import guru.springframework.spring5webapp.domain.Publisher; +import org.springframework.data.repository.CrudRepository; + +public interface PublisherRepository extends CrudRepository { +} From 9c36495e95227c81546de5fe62bd4f5360a9bede Mon Sep 17 00:00:00 2001 From: Subham Tripathi Date: Wed, 1 Apr 2020 00:48:45 +0530 Subject: [PATCH 2/5] H2 db enabled --- .../bootstrap/BootStrapData.java | 54 ++++++----- .../spring5webapp/domain/Author.java | 56 +++++------ .../spring5webapp/domain/Book.java | 78 ++++++++------- .../spring5webapp/domain/Publisher.java | 97 ++++++++++--------- src/main/resources/application.properties | 1 + 5 files changed, 153 insertions(+), 133 deletions(-) diff --git a/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java b/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java index c3a28529ea..d3b2ef4ea4 100644 --- a/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java +++ b/src/main/java/guru/springframework/spring5webapp/bootstrap/BootStrapData.java @@ -16,43 +16,53 @@ public class BootStrapData implements CommandLineRunner { private final AuthorRepository authorRepository; private final BookRepository bookRepository; - private final PublisherRepository publisherRepository; + private final PublisherRepository publisherRepository; - public BootStrapData(AuthorRepository authorRepository, BookRepository bookRepository,PublisherRepository publisherRepository) { + public BootStrapData(AuthorRepository authorRepository, BookRepository bookRepository, PublisherRepository publisherRepository) { this.authorRepository = authorRepository; this.bookRepository = bookRepository; - this.publisherRepository=publisherRepository; + this.publisherRepository = publisherRepository; } @Override public void run(String... args) throws Exception { - Author eric=new Author("Eric","Evans"); - Book b=new Book("Domain driven desing ","1233322"); - Author rod = new Author("Rod", "Johnson"); - Book noEJB = new Book("J2EE Development without EJB", "3939459459"); - rod.getBooks().add(noEJB); //this line hard to understand why we do this? - noEJB.getAuthors().add(rod); + System.out.println("Started in Bootstrap"); - authorRepository.save(rod); - bookRepository.save(noEJB); + Publisher publisher = new Publisher(); + publisher.setName("SFG Publishing"); + publisher.setCity("St Petersburg"); + publisher.setState("FL"); - Publisher p=new Publisher(); - p.setCity("St Petersburg"); - p.setState("FL"); - p.setName("SFG Publishing"); + publisherRepository.save(publisher); - publisherRepository.save(p); + System.out.println("Publisher Count: " + publisherRepository.count()); + Author eric = new Author("Eric", "Evans"); + Book ddd = new Book("Domain Driven Design", "123123"); + eric.getBooks().add(ddd); + ddd.getAuthors().add(eric); - eric.getBooks().add(b); - b.getAuthors().add(eric); + ddd.setPublisher(publisher); + publisher.getBooks().add(ddd); authorRepository.save(eric); - bookRepository.save(b); + bookRepository.save(ddd); + publisherRepository.save(publisher); + + Author rod = new Author("Rod", "Johnson"); + Book noEJB = new Book("J2EE Development without EJB", "3939459459"); + rod.getBooks().add(noEJB); + noEJB.getAuthors().add(rod); - System.out.println("No of books"+bookRepository.count()); - System.out.println("No of publisher"+publisherRepository.count()); + noEJB.setPublisher(publisher); + publisher.getBooks().add(noEJB); + + authorRepository.save(rod); + bookRepository.save(noEJB); + publisherRepository.save(publisher); + System.out.println("Number of Books: " + bookRepository.count()); + System.out.println("Publisher Number of Books: " + publisher.getBooks().size()); } -} +} \ No newline at end of file diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Author.java b/src/main/java/guru/springframework/spring5webapp/domain/Author.java index 1e8db83a4c..26cdc15d34 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Author.java @@ -5,31 +5,34 @@ import java.util.Set; @Entity -public class Author{ - private String firstName; - private String lastName; - - @ManyToMany(mappedBy = "authors") - private Set books=new HashSet<>(); +public class Author { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - //Constructors + private String firstName; + private String lastName; + + @ManyToMany(mappedBy = "authors") + private Set books = new HashSet<>(); public Author() { } - public Author(String firstName, String lastName) - { - this.firstName=firstName; - this.lastName=lastName; + public Author(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + public Long getId() { + return id; } + public void setId(Long id) { + this.id = id; + } - //Getters and setters public String getFirstName() { return firstName; } @@ -54,12 +57,14 @@ public void setBooks(Set books) { this.books = books; } - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; + @Override + public String toString() { + return "Author{" + + "id=" + id + + ", firstName='" + firstName + '\'' + + ", lastName='" + lastName + '\'' + + ", books=" + books + + '}'; } @Override @@ -69,22 +74,11 @@ public boolean equals(Object o) { Author author = (Author) o; - if (firstName != null ? !firstName.equals(author.firstName) : author.firstName != null) return false; - if (lastName != null ? !lastName.equals(author.lastName) : author.lastName != null) return false; - if (books != null ? !books.equals(author.books) : author.books != null) return false; return id != null ? id.equals(author.id) : author.id == null; } - - - @Override - public String toString() { - return "Author{" + - "firstName='" + firstName + '\'' + - ", lastName='" + lastName + '\'' + - ", books=" + books + - ", id=" + id + - '}'; + public int hashCode() { + return id != null ? id.hashCode() : 0; } } \ No newline at end of file diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Book.java b/src/main/java/guru/springframework/spring5webapp/domain/Book.java index 7eab2fa5cf..8260ad9448 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Book.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Book.java @@ -2,52 +2,49 @@ import javax.persistence.*; -import java.util.Collection; import java.util.HashSet; import java.util.Set; @Entity -public class Book{ +public class Book { @Id - @GeneratedValue - private long id; + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; - private String isbn; private String title; + private String isbn; - - //Many to many mapping based on the id + @ManyToOne + private Publisher publisher; @ManyToMany - @JoinTable(name = "author_book",joinColumns = @JoinColumn(name = "book_id"),inverseJoinColumns = @JoinColumn(name = "author_id")) + @JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "book_id"), + inverseJoinColumns = @JoinColumn(name = "author_id")) private Set authors = new HashSet<>(); - public Book() { //for entity class we need to have an empty constructor + public Book() { } - public Book(String title,String isbn) - { - this.isbn=isbn; - this.title=title; - } - - //Getters and Setters + public Book(String title, String isbn) { + this.title = title; + this.isbn = isbn; + } - public long getId() { - return id; + public Publisher getPublisher() { + return publisher; } - public void setId(long id) { - this.id = id; + public void setPublisher(Publisher publisher) { + this.publisher = publisher; } - public String getIsbn() { - return isbn; + public Long getId() { + return id; } - public void setIsbn(String isbn) { - this.isbn = isbn; + public void setId(Long id) { + this.id = id; } public String getTitle() { @@ -58,6 +55,14 @@ public void setTitle(String title) { this.title = title; } + public String getIsbn() { + return isbn; + } + + public void setIsbn(String isbn) { + this.isbn = isbn; + } + public Set getAuthors() { return authors; } @@ -66,6 +71,16 @@ public void setAuthors(Set authors) { this.authors = authors; } + @Override + public String toString() { + return "Book{" + + "id=" + id + + ", title='" + title + '\'' + + ", isbn='" + isbn + '\'' + + ", authors=" + authors + + '}'; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -73,20 +88,11 @@ public boolean equals(Object o) { Book book = (Book) o; - if (id != book.id) return false; - if (isbn != null ? !isbn.equals(book.isbn) : book.isbn != null) return false; - if (title != null ? !title.equals(book.title) : book.title != null) return false; - return authors != null ? authors.equals(book.authors) : book.authors == null; + return id != null ? id.equals(book.id) : book.id == null; } - @Override - public String toString() { - return "Book{" + - "id=" + id + - ", isbn='" + isbn + '\'' + - ", title='" + title + '\'' + - ", authors=" + authors + - '}'; + public int hashCode() { + return id != null ? id.hashCode() : 0; } } \ No newline at end of file diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java b/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java index f2d00da223..5bb6ec5811 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Publisher.java @@ -1,10 +1,9 @@ package guru.springframework.spring5webapp.domain; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; +import javax.persistence.*; +import java.util.HashSet; +import java.util.Set; @Entity public class Publisher { @@ -15,48 +14,58 @@ public class Publisher { private String name; private String addressLine1; + private String city; private String state; private String zip; - private String city; + + @OneToMany + @JoinColumn(name = "publisher_id") + private Set books = new HashSet<>(); public Publisher() { } - public Publisher(String name,String addressLine1,String state,String zip,String city) - { - this.name=name; - this.addressLine1=addressLine1; - this.zip=zip; - this.city=city; - this.state=state; + public Set getBooks() { + return books; } - public Long getId() { - return id; + public void setBooks(Set books) { + this.books = books; } - public void setId(Long id) { - this.id = id; + @Override + public String toString() { + return "Publisher{" + + "id=" + id + + ", name='" + name + '\'' + + ", addressLine1='" + addressLine1 + '\'' + + ", city='" + city + '\'' + + ", state='" + state + '\'' + + ", zip='" + zip + '\'' + + '}'; } - public String getAddressLine1() { - return addressLine1; - } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; - public void setAddressLine1(String addressLine1) { - this.addressLine1 = addressLine1; + Publisher publisher = (Publisher) o; + + return id != null ? id.equals(publisher.id) : publisher.id == null; } - public String getState() { - return state; + @Override + public int hashCode() { + return id != null ? id.hashCode() : 0; } - public void setState(String state) { - this.state = state; + public Long getId() { + return id; } - public String getZip() { - return zip; + public void setId(Long id) { + this.id = id; } public String getName() { @@ -67,8 +76,12 @@ public void setName(String name) { this.name = name; } - public void setZip(String zip) { - this.zip = zip; + public String getAddressLine1() { + return addressLine1; + } + + public void setAddressLine1(String addressLine1) { + this.addressLine1 = addressLine1; } public String getCity() { @@ -79,23 +92,19 @@ public void setCity(String city) { this.city = city; } - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + public String getState() { + return state; + } - Publisher publisher = (Publisher) o; + public void setState(String state) { + this.state = state; + } - if (id != null ? !id.equals(publisher.id) : publisher.id != null) return false; - if (addressLine1 != null ? !addressLine1.equals(publisher.addressLine1) : publisher.addressLine1 != null) - return false; - if (state != null ? !state.equals(publisher.state) : publisher.state != null) return false; - if (zip != null ? !zip.equals(publisher.zip) : publisher.zip != null) return false; - return city != null ? city.equals(publisher.city) : publisher.city == null; + public String getZip() { + return zip; } - @Override - public int hashCode() { - return id != null ? id.hashCode() : 0; + public void setZip(String zip) { + this.zip = zip; } -} +} \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e69de29bb2..69b89983cb 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.h2.console.enabled=true \ No newline at end of file From 444f6b7e63c4d8e7362e2dcc73520682a23c2c69 Mon Sep 17 00:00:00 2001 From: Subham Tripathi Date: Thu, 2 Apr 2020 00:07:05 +0530 Subject: [PATCH 3/5] thymeleaf addition --- pom.xml | 9 +++++++ .../controllers/BookController.java | 23 +++++++++++++++++ .../spring5webapp/domain/Author.java | 2 +- .../spring5webapp/domain/Book.java | 2 +- src/main/resources/templates.books/list.html | 25 +++++++++++++++++++ 5 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 src/main/java/guru/springframework/spring5webapp/controllers/BookController.java create mode 100644 src/main/resources/templates.books/list.html diff --git a/pom.xml b/pom.xml index f34c1936df..0cdf23421b 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,15 @@ org.springframework.boot spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-thymeleaf + + + + org.springframework.boot spring-boot-starter-thymeleaf diff --git a/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java b/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java new file mode 100644 index 0000000000..0142c79069 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java @@ -0,0 +1,23 @@ +package guru.springframework.spring5webapp.controllers; + + +import guru.springframework.spring5webapp.repository.BookRepository; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class BookController { + + private BookRepository bookRepository; + + public BookController(BookRepository bookRepository) { + this.bookRepository = bookRepository; + } + + @RequestMapping("/books") + public String getBooks(Model model){ //model will return the result to the View and in view we will decide how to return the data + model.addAttribute("books",bookRepository.findAll()); //model will have an attribute books and it will contain the list of books + return "books/list"; + } +} diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Author.java b/src/main/java/guru/springframework/spring5webapp/domain/Author.java index 26cdc15d34..64d0fcaf3f 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Author.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Author.java @@ -63,7 +63,7 @@ public String toString() { "id=" + id + ", firstName='" + firstName + '\'' + ", lastName='" + lastName + '\'' + - ", books=" + books + + // ", books=" + books + '}'; } diff --git a/src/main/java/guru/springframework/spring5webapp/domain/Book.java b/src/main/java/guru/springframework/spring5webapp/domain/Book.java index 8260ad9448..aad3e40e90 100644 --- a/src/main/java/guru/springframework/spring5webapp/domain/Book.java +++ b/src/main/java/guru/springframework/spring5webapp/domain/Book.java @@ -77,7 +77,7 @@ public String toString() { "id=" + id + ", title='" + title + '\'' + ", isbn='" + isbn + '\'' + - ", authors=" + authors + + // ", authors=" + authors + '}'; } diff --git a/src/main/resources/templates.books/list.html b/src/main/resources/templates.books/list.html new file mode 100644 index 0000000000..05331210d9 --- /dev/null +++ b/src/main/resources/templates.books/list.html @@ -0,0 +1,25 @@ + + + + + Title + + +

Book List

+ + + + + + + + + + + + +
IDTitlePublisher
123 Spring in ActionWrox
+ + + + \ No newline at end of file From 33ea8f2369a12d317a541eb2850ca388d8e09154 Mon Sep 17 00:00:00 2001 From: Subham Tripathi Date: Thu, 2 Apr 2020 00:39:44 +0530 Subject: [PATCH 4/5] refactoring : thymeleaf intro --- .../spring5webapp/controllers/BookController.java | 2 +- .../resources/{templates.books => templates/books}/list.html | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/main/resources/{templates.books => templates/books}/list.html (100%) diff --git a/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java b/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java index 0142c79069..1dfc1600e4 100644 --- a/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java +++ b/src/main/java/guru/springframework/spring5webapp/controllers/BookController.java @@ -15,7 +15,7 @@ public BookController(BookRepository bookRepository) { this.bookRepository = bookRepository; } - @RequestMapping("/books") + @RequestMapping("templates/books") public String getBooks(Model model){ //model will return the result to the View and in view we will decide how to return the data model.addAttribute("books",bookRepository.findAll()); //model will have an attribute books and it will contain the list of books return "books/list"; diff --git a/src/main/resources/templates.books/list.html b/src/main/resources/templates/books/list.html similarity index 100% rename from src/main/resources/templates.books/list.html rename to src/main/resources/templates/books/list.html From 19d8914389e210ba954e8b1078b0de0443dfc67a Mon Sep 17 00:00:00 2001 From: Subham Tripathi Date: Thu, 2 Apr 2020 19:51:04 +0530 Subject: [PATCH 5/5] Thymeleaf for authors added --- .../controllers/AuthorController.java | 24 ++++++++++++++ .../resources/templates/authors/list.html | 31 +++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 src/main/java/guru/springframework/spring5webapp/controllers/AuthorController.java create mode 100644 src/main/resources/templates/authors/list.html diff --git a/src/main/java/guru/springframework/spring5webapp/controllers/AuthorController.java b/src/main/java/guru/springframework/spring5webapp/controllers/AuthorController.java new file mode 100644 index 0000000000..e9161cbde1 --- /dev/null +++ b/src/main/java/guru/springframework/spring5webapp/controllers/AuthorController.java @@ -0,0 +1,24 @@ +package guru.springframework.spring5webapp.controllers; + + +import guru.springframework.spring5webapp.repository.AuthorRepository; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +public class AuthorController { + + private AuthorRepository authorRepository; + + public AuthorController(AuthorRepository authorRepository) { + this.authorRepository = authorRepository; + } + + @RequestMapping("templates/authors") + public String getAuthors(Model model) + { + model.addAttribute("authors",authorRepository.findAll()); //this "authors" key will be referenced in View to access the value of authors + return "authors/list"; + } +} diff --git a/src/main/resources/templates/authors/list.html b/src/main/resources/templates/authors/list.html new file mode 100644 index 0000000000..1dce12675c --- /dev/null +++ b/src/main/resources/templates/authors/list.html @@ -0,0 +1,31 @@ + + + + + Title + + +

Authors List

+ + + + + + + + + + + + + + + + + +
IdFirst NameLast Name
+ + + + + \ No newline at end of file