Lập trình Spring Boot: Xây dựng Dự án BookStore bằng Spring JDBC, Thymeleaf

Trong bài viết này, Stanford - Dạy kinh nghiệm lập trình sẽ giúp bạn xây dựng dự án quản lý sách sử dụng spring jdbc, thymeleaf trong lập trình Spring Boot bằng công cụ Intellij IDEA.

Spring Boot là gì?

  • Spring Boot là một module của Spring Framework, cung cấp tính năng RAD (Rapid Application Development) – Phát triển ứng dụng nhanh.
  • Spring Boot được dùng để tạo các ứng dụng độc lập dựa trên Spring.
  • Spring Boot không yêu cầu cấu hình XML
  • Nó là một chuẩn cho cấu hình thiết kế phần mềm, tăng cao năng suất cho developer.

Spring Data JDBC là gì ?

  • Spring Data JDBC là một thành viên mới được thêm vào trong Spring Data. Nó là sự kết hợp các thành phần của Spring Data JPA (Java Persistence API) và Spring JDBC.
  • Spring JDBC cung cấp cho chúng ta một framework để thực thi các câu lệnh SQL. Nó xử lý việc kết nối với cơ sở dữ liệu và giúp chúng ta thực thi các câu lệnh SQL bằng cách sử dụng JdbcTemplate. Nhờ vậy mà nó rất là linh hoạt vì chúng ta hoàn toàn có quyền được kiểm soát việc các câu lệnh SQL được thực thi.

Trong bài viết này, Stanford sẽ hướng dẫn các bạn học lập trình java web sử dụng spring data jdbc để làm việc với cơ sở dữ liệu mysql, thymeleaf để tạo giao diện trình bày thông tin trong dự án Spring Boot. Các bạn có thể thực hiện theo từng bước theo các bài viết hướng dẫn dưới đây. Nếu có gì khó khăn hãy liên hệ với Stanford để được hỗ trợ nhé.

Thiết kế cơ sở dữ liệu và tạo bảng trong MySQL

Trước khi tạo dự án lập trình java web bằng Spring Boot các bạn tạo cơ sở dữ liệu với các bảng gồm các thuộc tính như sau:


Tạo dự án Spring Boot trên Intellij IDEA

Tiếp theo là bạn cần tạo một dự án lập trình spring boot và sử dụng maven để quản lý thư viện phụ thuộc trên công cụ lập trình Intellij IDEA theo trình tự các bước sau:

- Bước 1: Mở Intellij IDEA sau đó nhấn chọn menu File => New => Project. Chọn mục Spring Boot sau đó thực hiện đặt tên cho dự án lập trình web và các thông tin như hình dưới:


- Bước 2: Nhấn nút Next để tiếp tục quá trình tạo dự án. Sau đó trên giao diện hiển thị, các bạn học lập trình java web tích chọn các mục sau: Spring Boot DevTools, Spring Web, Thymeleaf, Spring Data JDBC, MySQL Server như hình minh họa sau đây:


Chú ý: Bạn cần thực hiện tích chọn các mục đầy đủ để đảm bảo không bị lỗi do thiếu thư viện khi chạy dự án Spring Boot.

Bạn có thể xem lại các thư viện quan trọng trong tập tin pom.xml trong dự án này như sau:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

Sau khi tạo dự án thành công, các bạn thực hiện tạo các package cho dự án theo cấu trúc như tham khảo ở dưới:


Xây dựng các lớp xử lý dữ liệu với MySQL bằng Spring Data JDBC

Trước khi vào thực hiện tạo các lớp để xử lý dữ liệu với MySQL, đầu tiên bạn cần khai báo thông tin kết nối đến cơ sở dữ liệu làm việc trong tập tin application.properties như sau:

# ===============================
# DATABASE
# ===============================
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/je082401dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=Stanford
logging.level.root=INFO
server.port=8087
Chú ý: Các thông tin kết nối đến cơ sở dữ liệu MySQL bạn cần thay thành các thông tin trên máy cài mysql mà các bạn cần làm việc

 

Tiếp theo là chúng ta sẽ cần tạo các lớp bao gồm các thuộc tính tương ứng với bảng trong cơ sở dữ liệu MySQL như sau:

- Lớp Sach: Mô tả các thuộc tính về sách tương ứng với các cột trong bảng Sach của MySQL

package vn.com.stanford.stanford_workingjdbcspringboot.entities;
 
import java.util.Date;
 
public class Sach {
    private String maSach;
    private String tenSach;
    private String moTa;
    private String anhSach;
    private String tacGia;
    private double giaSach;
    private Date ngayTao;
    private Date ngayCapNhat;
 
    private Date ngayDuyet;
    private boolean daDuyet;
    private String maChuDe;
 
    public String getMaSach() {
        return maSach;
    }
 
    public void setMaSach(String maSach) {
        this.maSach = maSach;
    }
 
    public String getTenSach() {
        return tenSach;
    }
 
    public void setTenSach(String tenSach) {
        this.tenSach = tenSach;
    }
 
    public String getMoTa() {
        return moTa;
    }
 
    public void setMoTa(String moTa) {
        this.moTa = moTa;
    }
 
    public String getAnhSach() {
        return anhSach;
    }
 
    public void setAnhSach(String anhSach) {
        this.anhSach = anhSach;
    }
 
    public String getTacGia() {
        return tacGia;
    }
 
    public void setTacGia(String tacGia) {
        this.tacGia = tacGia;
    }
 
    public double getGiaSach() {
        return giaSach;
    }
 
    public void setGiaSach(double giaSach) {
        this.giaSach = giaSach;
    }
 
    public Date getNgayTao() {
        return ngayTao;
    }
 
    public void setNgayTao(Date ngayTao) {
        this.ngayTao = ngayTao;
    }
 
    public Date getNgayCapNhat() {
        return ngayCapNhat;
    }
 
    public void setNgayCapNhat(Date ngayCapNhat) {
        this.ngayCapNhat = ngayCapNhat;
    }
 
 
    public Date getNgayDuyet() {
        return ngayDuyet;
    }
 
    public void setNgayDuyet(Date ngayDuyet) {
        this.ngayDuyet = ngayDuyet;
    }
 
    public boolean isDaDuyet() {
        return daDuyet;
    }
 
    public void setDaDuyet(boolean daDuyet) {
        this.daDuyet = daDuyet;
    }
 
    public String getMaChuDe() {
        return maChuDe;
    }
 
    public void setMaChuDe(String maChuDe) {
        this.maChuDe = maChuDe;
    }
}

- Lớp ChuDe: Mô tả các thuộc tính về chủ đề tương ứng với các cột trong bảng ChuDe của MySQL

package vn.com.stanford.stanford_workingjdbcspringboot.entities;
 
public class ChuDe {
    private String maChuDe;
    private String tenChuDe;
 
    public String getTenChuDe() {
        return tenChuDe;
    }
 
    public void setTenChuDe(String tenChuDe) {
        this.tenChuDe = tenChuDe;
    }
 
    public String getMaChuDe() {
        return maChuDe;
    }
 
    public void setMaChuDe(String maChuDe) {
        this.maChuDe = maChuDe;
    }
}
Xây dưng các lớp để ánh xạ lấy dữ liệu cho các thuộc tính trong các lớp từ các cột dữ liệu trong bảng của cơ sở dữ liệu MySQL như sau:

- Lớp ChuDeMapper: Lớp để lấy thông tin cho các thuộc tính đối tượng của lớp ChuDe

package vn.com.stanford.stanford_workingjdbcspringboot.entities;
import org.springframework.jdbc.core.RowMapper;
 
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class ChuDeMapper implements RowMapper<ChuDe> {
    @Override
    public ChuDe mapRow(ResultSet rs, int rowNum) throws SQLException {
 
        ChuDe chuDe = new ChuDe();
 
        chuDe.setMaChuDe(rs.getString("MaChuDe"));
 
        chuDe.setTenChuDe(rs.getString("TenChuDe"));
 
        return chuDe;
 
    }
}

- Lớp SachMapper: Lớp để lấy thông tin cho các thuộc tính đối tượng của lớp ChuDe

package vn.com.stanford.stanford_workingjdbcspringboot.entities;
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class SachMapper  implements RowMapper<Sach> {
    @Override
    public Sach mapRow(ResultSet rs, int rowNum) throws SQLException {
 
        Sach objSach = new Sach();
 
        objSach.setMaSach(rs.getString("MaSach"));
 
        objSach.setTenSach(rs.getString("TenSach"));
 
        objSach.setMoTa(rs.getString("MoTa"));
 
        objSach.setTacGia(rs.getString("TacGia"));
 
        objSach.setAnhSach(rs.getString("AnhSach"));
 
        objSach.setGiaSach(rs.getInt("GiaSach"));
 
        objSach.setNgayTao(rs.getDate("NgayTao"));
 
        objSach.setNgayCapNhat(rs.getDate("NgayCapNhat"));
 
        objSach.setMaChuDe(rs.getString("MaChuDe"));
 
        return objSach;
    }
}
Như vậy ở bài này Stanford - Dạy kinh nghiệm lập trình đã hướng dẫn chi tiết việc tạo cơ sở dữ liệu, tạo dự án lập trình spring boot và xây dựng các lớp tương ứng với các bảng, lớp mapper để lấy dữ liệu trong MySQL bằng Spring Data JDBC. Ở bài tiếp theo Stanford sẽ tiếp tục hướng dẫn các bạn tạo lớp xử lý dữ liệu trong package model của dự án Spring Boot này.

Bên cạnh đó nếu bạn đang muốn được đào tạo bài bản từ cơ bản đến nâng cao có thể tham gia ngay khóa học lập trình java fullstack cùng chuyên gia giàu kinh nghiệm Stanford tại đây: http://bit.ly/2SLPYFF và nhận ưu đãi hấp dẫn của Stanford trong thời gian này. Bạn có thể gọi theo hotline: 0963 723 236 - 0866 586 366 để được gọi lại tư vấn trực tiếp nhé.

=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 - 0866 586 366
Website: https://stanford.com.vn
Facebook: http://bit.ly/2FN0TYb
Youtube: http://bit.ly/2TkKT7I

Tags: spring boot, spring data jdbc, học spring boot