Bài 04: Kết nối Spring với cơ sở dữ liệu MySQL
Spring hỗ trợ kết nối đa dạng các cơ sở dữ liệu SQL và NoSQL
JDK: 1.8 hoặc cao hơn
Gradle: 4+
MySQL: 5.6 hoặc cao hơn. Xem hướng dẫn cài đặt MySQL tại đây. Tạo một cơ sở dữ liệu rỗng có tên db_example
Knowledge: Xem bài MVC tại đây
Requirements
Thời lượng: 15 phútEditor hoặc IDE: Sublime hoặc tuỳ thíchJDK: 1.8 hoặc cao hơn
Gradle: 4+
MySQL: 5.6 hoặc cao hơn. Xem hướng dẫn cài đặt MySQL tại đây. Tạo một cơ sở dữ liệu rỗng có tên db_example
Knowledge: Xem bài MVC tại đây
Xây dựng
Truy cập https://start.spring.io tạo project với các thông số
- Generate a Gradle Project with Java and Spring Boot 2.0.1
- Group com.hocspringcoban
- Artifact post04_mysql
- Dependencies Web, JPA, MySQL
Thư mục resources chứa các tài nguyên cho project bao gồm
- Thư mục static chứa các tài nguyên tĩnh như js, css
- Thư mục template chứa các view
- Tập tin application.properties chứa config cho project Spring
Xây dựng tập tin application.properties
spring.jpa.hibernate.ddl-auto=create spring.datasource.url=jdbc:mysql://localhost:3306/db_example spring.datasource.username=root spring.datasource.password=password
Ghi chú
- spring.jpa.hibernate.ddl-auto=create ra lệnh cho spring tạo các bảng khi khởi chạy
- spring.datasource.url chỉ thị địa chỉ kết nối
- spring.datasource.username chỉ thị username của server
- spring.datasource.password chỉ thị password của server
- Thay username và password tương ứng
Xây dựng src/main/java/com.hocspringcoban.post04_mysql/User.java
package com.hocspringcoban.post04_mysql; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class User { private @Id @GeneratedValue Integer id; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
Ghi chú
- @Entity ra lệnh cho Hibernate tạo bảng sau đây trong cơ sở dữ liệu (db_example). Về Hibernate và JPA sẽ có bài viết nói sau
- @Id @GeneratedValue chỉ thị trường sau đây sẽ là khoá chính và tự khởi tạo giá trị
Xây dựng src/main/java/com.hocspringcoban.post04_mysql/UserRepository.java
package com.hocspringcoban.post04_mysql; import org.springframework.data.repository.CrudRepository; public interface UserRepository extends CrudRepository<User, Long> { }
Ghi chú
- CrudRepository tự cung cấp các lệnh Create, Read, Update và Delete
Xây dựng src/main/java/com.hocspringcoban.post04_mysql/UserController.java
package com.hocspringcoban.post04_mysql; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("/user") public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/create") public @ResponseBody User createUser(@RequestParam String username, @RequestParam String password) { User user = new User(); user.setUsername(username); user.setPassword(password); userRepository.save(user); return user; } @GetMapping("/index") public @ResponseBody Iterable<User> index() { return userRepository.findAll(); } }
Ghi chú
- @Controller ghi chú class này là một Controller
- @RequestMapping("/user") chỉ thị tất cả request vào tiền tố /user sẽ được controller này xử lý
- @Autowired sẽ tự tìm class có tên UserRepository, khởi tạo nó và gán cho biến userRepository
- @GetMapping("/create") chỉ thị tất cả GET vào tiền tố /user/create sẽ được function này xử lý
Kiểm thử
Tại thư mục post04_mysql, chạy lệnh gradle bootRun để run
Truy cập http://localhost:8080/user/create?username=hocspringcoban&password=springboot để tạo một user
Truy cập http://localhost:8080/user/index để xem thành quả
Note: Sau lần chạy đầu tiên, config lại tệp application.properties ở dòng đầu tiên như sau
spring.jpa.hibernate.ddl-auto=none
Việc này ngăn chặn hibernate tạo lại các bảng trong cơ sở dữ liệu
Nhận xét
Đăng nhận xét