From d941e3e09a56eaf5b0b4b3a98647c21d89530653 Mon Sep 17 00:00:00 2001 From: M2kishore <kishoremeenakshi2001@gmail.com> Date: Sun, 27 Dec 2020 13:20:23 +0530 Subject: [PATCH] added database connectivity MySQL --- .../java/com/example/bookmanagement/Book.java | 46 +++++++++--- .../bookmanagement/BookController.java | 73 ++++++++++--------- .../bookmanagement/BookRepository.java | 6 +- .../bookmanagement/SimpleController.java | 32 +++++++- src/main/resources/application.properties | 14 +++- src/main/resources/database.sql | 13 ++++ src/main/resources/templates/index.html | 7 +- .../SpringBootBootstrapLiveTest.java | 26 +++++++ 8 files changed, 159 insertions(+), 58 deletions(-) create mode 100644 src/main/resources/database.sql create mode 100644 src/test/java/com/example/bookmanagement/SpringBootBootstrapLiveTest.java diff --git a/src/main/java/com/example/bookmanagement/Book.java b/src/main/java/com/example/bookmanagement/Book.java index ce0dd85..d058d60 100644 --- a/src/main/java/com/example/bookmanagement/Book.java +++ b/src/main/java/com/example/bookmanagement/Book.java @@ -2,20 +2,48 @@ package com.example.bookmanagement; import javax.persistence.Column; import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Table; @Entity +@Table public class Book { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private long id; +@Id +private Long id; +@Column +private String book_name; +@Column +private String author_name; - @Column(nullable = false, unique = true) - private String title; +public Book(){ } - @Column(nullable = false) - private String author; +public Book(Long id, String book_name, String author_name, String isbn) { +this.id=id; +this.book_name=book_name; +this.author_name=author_name; +} + +public Long getId() { +return id; +} + +public void setId(Long id) { +this.id = id; +} + +public String getBook_name() { +return book_name; +} + +public void setBook_name(String book_name) { +this.book_name = book_name; +} + +public String getAuthor_name() { +return author_name; +} +public void setAuthor_name(String author_name) { +this.author_name = author_name; } +} \ No newline at end of file diff --git a/src/main/java/com/example/bookmanagement/BookController.java b/src/main/java/com/example/bookmanagement/BookController.java index 20939db..7462f0a 100644 --- a/src/main/java/com/example/bookmanagement/BookController.java +++ b/src/main/java/com/example/bookmanagement/BookController.java @@ -1,6 +1,7 @@ package com.example.bookmanagement; import java.util.List; +import java.util.Optional; import com.example.bookmanagement.error.BookIdMismatchException; import com.example.bookmanagement.error.BookNotFoundException; @@ -17,48 +18,48 @@ import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.RestController; @RestController -@RequestMapping("/api/books") public class BookController { - @Autowired - private BookRepository bookRepository; +@Autowired +BookRepository bookRepository; - @GetMapping - public Iterable<Book> findAll() { - return bookRepository.findAll(); - } +@GetMapping("/getAllBooks") +public List<Book> getAllBooks() +{ +return bookRepository.findAll(); +} - @GetMapping("/title/{bookTitle}") - public List findByTitle(@PathVariable String bookTitle) { - return bookRepository.findByTitle(bookTitle); - } +@GetMapping("/getBookById/{id}") +public Optional<Book> getBookById(@PathVariable Long id) +{ + System.out.println(bookRepository.findById(id)); +return bookRepository.findById(id); +} - @GetMapping("/{id}") - public Book findOne(@PathVariable Long id) { - return bookRepository.findById(id) - .orElseThrow(BookNotFoundException::new); - } +@PostMapping("/addBook") +public Book addBook(@RequestBody Book book) +{ +return bookRepository.save(book); +} - @PostMapping - @ResponseStatus(HttpStatus.CREATED) - public Book create(@RequestBody Book book) { - return bookRepository.save(book); - } +@PutMapping("/updateBook/{id}") +public Book updateBook(@PathVariable Long id, @RequestBody Book bookDetails) +{ +Optional<Book> book = bookRepository.findById(id); +Book book_new=book.get(); +book_new.setAuthor_name(bookDetails.getAuthor_name()); +book_new.setBook_name(bookDetails.getBook_name()); +book_new.setIsbn(bookDetails.getIsbn()); +return bookRepository.save(book_new); - @DeleteMapping("/{id}") - public void delete(@PathVariable Long id) { - bookRepository.findById(id) - .orElseThrow(BookNotFoundException::new); - bookRepository.deleteById(id); - } +} - @PutMapping("/{id}") - public Book updateBook(@RequestBody Book book, @PathVariable Long id) { - if (book.getId() != id) { - throw new BookIdMismatchException(); - } - bookRepository.findById(id) - .orElseThrow(BookNotFoundException::new); - return bookRepository.save(book); - } +@DeleteMapping("/deleteBook/{id}") +public void deleteBook(@PathVariable Long id) +{ +Optional<Book> book=bookRepository.findById(id); +Book book_new=book.get(); +bookRepository.delete(book_new); } + +} \ No newline at end of file diff --git a/src/main/java/com/example/bookmanagement/BookRepository.java b/src/main/java/com/example/bookmanagement/BookRepository.java index fb72f6c..b320361 100644 --- a/src/main/java/com/example/bookmanagement/BookRepository.java +++ b/src/main/java/com/example/bookmanagement/BookRepository.java @@ -1,8 +1,6 @@ package com.example.bookmanagement; +import org.springframework.data.jpa.repository.JpaRepository; -import java.util.List; +public interface BookRepository extends JpaRepository<Book, Long>{ -import org.springframework.data.repository.CrudRepository; -public interface BookRepository extends CrudRepository<Book, Long> { - List<Book> findByTitle(String title); } \ No newline at end of file diff --git a/src/main/java/com/example/bookmanagement/SimpleController.java b/src/main/java/com/example/bookmanagement/SimpleController.java index 90a1f48..8ea0a41 100644 --- a/src/main/java/com/example/bookmanagement/SimpleController.java +++ b/src/main/java/com/example/bookmanagement/SimpleController.java @@ -2,18 +2,46 @@ package com.example.bookmanagement; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; @Controller public class SimpleController { @Value("${spring.application.name}") String appName; - @GetMapping("/") + /*@GetMapping("/") public String homePage(Model model) { System.out.println("qwerty"); model.addAttribute("appName", appName); return "index"; + }*/ + @GetMapping("/") + public String root() { + return "index"; } + + /*@GetMapping("/user") + public String userIndex() { + return "user/index"; + }*/ + + @GetMapping("/login") + public String login() { + return "login"; + } + + @PostMapping("/") + public String checkCredentials() { + if(){ + return "Book"; + }else{ + return "loginError"; + } + } + + /*@GetMapping("/access-denied") + public String accessDenied() { + return "/error/access-denied"; + }*/ } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fc80b54..33d8826 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -6,7 +6,13 @@ spring.thymeleaf.suffix=.html spring.application.name=Bootstrap Spring Boot -spring.datasource.driver-class-name=org.h2.Driver -spring.datasource.url=jdbc:h2:mem:bootapp;DB_CLOSE_DELAY=-1 -spring.datasource.username=sa -spring.datasource.password= \ No newline at end of file + +## Spring DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties) +spring.datasource.url = jdbc:mysql://localhost:3306/library +spring.datasource.username =root +spring.datasource.password =root +## Hibernate Properties +# The SQL dialect makes Hibernate generate better SQL for the chosen database +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect +# Hibernate ddl auto (create, create-drop, validate, update) +spring.jpa.hibernate.ddl-auto = update \ No newline at end of file diff --git a/src/main/resources/database.sql b/src/main/resources/database.sql new file mode 100644 index 0000000..850223c --- /dev/null +++ b/src/main/resources/database.sql @@ -0,0 +1,13 @@ +DROP TABLE IF EXISTS billionaires; + +CREATE TABLE billionaires ( + id INT AUTO_INCREMENT PRIMARY KEY, + first_name VARCHAR(250) NOT NULL, + last_name VARCHAR(250) NOT NULL, + career VARCHAR(250) DEFAULT NULL +); + +INSERT INTO billionaires (first_name, last_name, career) VALUES + ('Aliko', 'Dangote', 'Billionaire Industrialist'), + ('Bill', 'Gates', 'Billionaire Tech Entrepreneur'), + ('Folrunsho', 'Alakija', 'Billionaire Oil Magnate'); \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 4c289ef..a1d5307 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -7,10 +7,11 @@ </head> <body> <div layout:fragment="content" th:remove="tag"> - <h1>Hello Spring Security</h1> - <p>This is an unsecured page, but you can access the secured pages after authenticating.</p> + <h1>Click the link below to login</h1> + <p></p> + <br> <ul> - <li>Go to the <a href="/" th:href="@{/}">secured pages</a></li> + <li><a href="/login" th:href="@{/login}">link</a></li> </ul> </div> </body> diff --git a/src/test/java/com/example/bookmanagement/SpringBootBootstrapLiveTest.java b/src/test/java/com/example/bookmanagement/SpringBootBootstrapLiveTest.java new file mode 100644 index 0000000..107c311 --- /dev/null +++ b/src/test/java/com/example/bookmanagement/SpringBootBootstrapLiveTest.java @@ -0,0 +1,26 @@ +package com.example.bookmanagement; + +import javax.ws.rs.core.Response; + +import org.apache.tomcat.util.http.parser.MediaType; + +public class SpringBootBootstrapLiveTest { + + private static final String API_ROOT + = "http://localhost:8085/api/books"; + + private Book createRandomBook() { + Book book = new Book(); + book.setTitle(randomAlphabetic(10)); + book.setAuthor(randomAlphabetic(15)); + return book; + } + + private String createBookAsUri(Book book) { + Response response = RestAssured.given() + .contentType(MediaType.APPLICATION_JSON_VALUE) + .body(book) + .post(API_ROOT); + return API_ROOT + "/" + ((Object) response).jsonPath().get("id"); + } +} -- GitLab