[Spring boot + spring data] Viết một ứng dụng nhỏ sử dụng spring boot + spring data jdbc
White

xoandaica viết ngày 08/02/2019

Bài viết này sẽ hướng dẫn các bạn từng bước xây dựng một ứng dụng java sử dụng spring boot kết hợp với spring data jdbc để lưu trữ và nhận dữ liệu trong cơ sở dữ liệu quan hệ.

A. Đầu ra

Một ứng dụng nhỏ lưu trữ và truy xuất dữ liệu Account trong cơ sở dữ liệu

B. Đầu vào

  • Jdk 1.8
  • Maven 3.2+
  • IDE tùy ý (MÌnh dùng netbean, các bạn có thể import luôn cái file pom vào cũng được) ### C. Các bước thực hiện 1. Cấu trúc thư mục

2. File pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
        <relativePath/>
        <!-- lookup parent from repository -->
    </parent>
    <groupId>com.vnpt.ssdc.springdata</groupId>
    <artifactId>spring_jdbc_repository</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring_jdbc_repository</name>
    <description>Demo project for Spring JDBC with Repository</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>2.1.4.RELEASE</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jdbc</artifactId>
            <version>1.0.4.RELEASE</version>
            <type>jar</type>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3. Xây dựng đối tượng Account

public class Account {

    @Id
    private Long id;
    private String userName;
    private String password;

    public Account() {
    }

    public Account(String userName, String password) {
        this.userName = userName;
        this.password = password;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    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;
    }

}

Lưu ý, để có thể sử dụng được spring data jdbc, entity của chúng ta phải có một trường được map với annotation ID nhằm định dạnh một đối tượng, ở đây ta sẽ dùng trường Id.

Một lưu ý nữa cho quy tắc đặt tên các trường. Spring sẽ tự đống scan object để tìm ra tên cột tương ứng với trường đó. Ví dụ:
Account có một trường là username thì cột tương ứng trong cơ sở dữ liệu của trường này là USERNAME.
Nếu ta đặt tên trường là userName tức là sử dụng theo kiểu camelCase thì tên cột tương ứng trong cơ sở dữ liệu của trường này là USER_NAME.

4. AccountRepository

public interface AccountRepository extends CrudRepository<Account, Long> {

}

Nhìn rất đơn giản đúng không ạ. Spring cung cấp sẵn các interface Repository chứa các chức năng nhất định
Ví dụ:

  • CrudRepository chứa sẵn các function CRUD thao tác trên object entity.
  • PagingAndSortingRepository extends từ CrudRepository nhưng thêm tính năng phân trang

Ở đât chúng sẽ dùng luôn CrudRepository để sử dụng lại hàm save và hàm findAll đã được viết sẵn.

5. Account controller

Để đơn giản, minh xây dựng một lớp account controller tự thực hiện các thao tác insert dữ liệu, fetch dữ liệu hiển thị ra màn hình console thay cho việc sử dụng giao diện web

    @Autowired
    AccountDaoManager accountService;

    public void run() {
        Account acc = new Account("soithattha", "123456");
        accountService.addAccount(acc);
        logger.info("Add account " + new Gson().toJson(acc));

        acc = new Account("hungdd", "123456");
        accountService.addAccount(acc);
        logger.info("Add account " + new Gson().toJson(acc));

        logger.info("fetchAll:");
        List<Account> accounts = accountService.fetchAll();
        accounts.forEach(s -> System.out.println(new Gson().toJson(s)));

    }

6. App Runner

AppRunner là một đống tượng cài đặt interface CommandLineRunner của springboot, tác dụng duy nhất của nó ở đây là sẽ class này sẽ được run sau khi ứng dụng kết thúc việc khởi tạo các bean.

    @Autowired
    private AccountController controller;

    @Override
    public void run(String... args) throws Exception {
        controller.run();
    }

7. Demo

8. Full source

https://bit.ly/2MW3TEr

Ps: Bác nào thắc mắc gì cứ comment ở dưới nhé, rất sẵn lòng giải đáp

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

xoandaica

14 bài viết.
10 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
4 0
Bài viết này sẽ hướng dẫn các bạn từng bước xây dựng một ứng dụng java sử dụng spring boot kết hợp với spring data jdbc để lưu trữ và nhận dữ liệu ...
xoandaica viết hơn 1 năm trước
4 0
White
3 0
1. Các cách để xây dựng rest api trong spring Để xây dựng rest api trong spring có thể sử dụng nhiều cách. Phổ biến nhất là 3 cách dưới đây 1. S...
xoandaica viết hơn 1 năm trước
3 0
White
2 0
1. Single Thread 1. Làm một việc tại một thời điểm Không giống như đa số các ngôn ngữ lập trình khác, javascript đơn giản là đơn luồng. Điều này ...
xoandaica viết hơn 1 năm trước
2 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
14 bài viết.
10 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!