【SpringBoot】SpringBoot + MyBatis 連線 MySQL 並完成簡單查詢的流程

VLyb_SkyWalker發表於2020-12-21

本文將一步一步實現從初始化 SpringBoot ,到使用 MyBatis 完成對 MySQL 的資料查詢。

前提:

  • MySQL資料庫名:ST
  • 課程表名:C
  • 表結構:
    在這裡插入圖片描述

1、初始化 SpringBoot 專案

在IDEA中新建一個專案,並使用 Spring Initializer 進行初始化:
初始化SpringBoot
專案名為 studb:
在這裡插入圖片描述

2、選擇依賴

選擇以下依賴:
Web -> Spring Web
Relational Database -> MyBatis Framework 和 MySQL Driver
在這裡插入圖片描述
在這裡插入圖片描述

3、填寫專案配置

/src/main/resources/application.yml中填寫如下配置:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1/ST?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC&useSSL=true
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

  application:
    name: studb

server:
  port: 8080

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.studb.entity

此處假定資料庫名為ST

4、建立 Entity 層

建立 /src/main/java/com/example/studb/entity/Course.java,定義一個ORM(Object Relation Mapping)中的“O”,即業務實體在記憶體中所表現出來的物件:

package com.example.studb.entity;

public class Course {
    private String cno;
    private String cname;
    private String cpno;
    private int ccredit;
	
	// Getter and Setter
    public String getCno() {
        return cno;
    }

    public void setCno(String cno) {
        this.cno = cno;
    }

    public String getCname() {
        return cname;
    }

    public void setCname(String cname) {
        this.cname = cname;
    }

    public String getCpno() {
        return cpno;
    }

    public void setCpno(String cpno) {
        this.cpno = cpno;
    }

    public int getCcredit() {
        return ccredit;
    }

    public void setCcredit(int ccredit) {
        this.ccredit = ccredit;
    }
}

5、建立 DAO 層

資料訪問物件(Data Access Objects,DAO)提供對物件的增加、刪除、修改和查詢的方法,以及排序和分頁方法。

建立檔案/src/main/java/com/example/studb/dao/CourseMapper.java,定義資料操作類:

package com.example.studb.dao;

import com.example.studb.entity.Course;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface CourseMapper {

    List<Course> queryAll();

    boolean insertRecord(Course course);
}

6、建立 MyBatis 對映檔案

本文思路採用的是將SQL語句分離到MyBatis對映檔案中,以解耦Mapper類,故需要建立/src/main/java/resources/mapper/CourseMapper.xml,實現POJO類到資料庫表的對映:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

<mapper namespace="com.example.studb.dao.CourseMapper">
    <select id="queryAll" resultType="com.example.studb.entity.Course">
        SELECT *
        FROM st.c
    </select>

    <insert id="insertRecord" parameterType="com.example.studb.entity.Course">
        INSERT INTO st.c
        VALUES (
                #{cno, jdbcType=VARCHAR},
                #{cname, jdbcType=VARCHAR},
                #{cpno, jdbcType=VARCHAR},
                #{ccredit, jdbcType=INTEGER}
               )
    </insert>
</mapper>

7、建立 Controller 層

建立/src/main/java/com/example/studb/controller/CourseController.java,在其中完成對請求的處理:

package com.example.studb.controller;

import com.example.studb.dao.CourseMapper;
import com.example.studb.entity.Course;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/course")
public class CourseController {

    @Autowired
    private CourseMapper courseMapper;

    @RequestMapping("/query")
    public List<Course> queryAll() {
        return courseMapper.queryAll();
    }
}

測試

執行SpringBoot,在瀏覽器中輸入http://localhost:8080/course/query即可看到成功將資料庫中的課程資料全部讀出。

相關文章