從零開始學Spring Boot系列-整合mybatis

代码匠心發表於2024-03-10

在Spring Boot的應用開發中,MyBatis是一個非常流行的持久層框架,它支援定製化SQL、儲存過程以及高階對映。在本篇文章中,我們將學習如何在Spring Boot專案中整合MyBatis,以便透過MyBatis進行資料庫操作。

新增MyBatis依賴

首先,我們需要在專案中新增MyBatis的依賴。在Spring Boot中,我們通常會使用Gradle或Maven作為構建工具來管理專案依賴。這裡,我們將以Gradle為例,展示如何新增MyBatis的依賴。

開啟專案的build.gradle檔案,我們需要新增MyBatis Spring Boot Starter的依賴項。這個依賴項會幫助我們更容易地將MyBatis整合到Spring Boot應用中。

plugins {
 id 'java'
 id 'org.springframework.boot' version '3.2.3'
 id 'io.spring.dependency-management' version '1.1.4'
}

group = 'cn.daimajiangxin'
version = '0.0.1-SNAPSHOT'

java {
 sourceCompatibility = '17'
 targetCompatibility = '17'
}

 repositories {
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}

dependencies {
 implementation 'org.springframework.boot:spring-boot-starter-web'
 compileOnly 'org.projectlombok:lombok'
 annotationProcessor 'org.projectlombok:lombok'
 implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
 runtimeOnly 'mysql:mysql-connector-java:8.0.17'
 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
}

在上面的build.gradle檔案中,我們新增了以下依賴項:

  • spring-boot-starter-web:Spring Boot Web Starter,它包含了構建Web應用所需的基本依賴。
  • mybatis-spring-boot-starter:MyBatis Spring Boot Starter,它提供了MyBatis和Spring Boot整合的簡化配置。
  • mysql-connector-java:MySQL資料庫驅動,用於連線MySQL資料庫。

配置資料來源和MyBatis

配置好依賴後,你可以透過Gradle的命令列工具來同步專案依賴,或者在IDE中自動同步。一旦依賴同步完成,你就可以開始編寫Mapper介面和XML對映檔案,並使用MyBatis來運算元據庫了。

請確保你的application.properties或application.yml檔案中已經配置了正確的資料庫連線資訊,例如:

# datasource 配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/你的資料庫名?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
spring.datasource.username=你的資料庫使用者名稱
spring.datasource.password=你的資料庫密碼
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
spring.jpa.show-sql=true

# MyBatis 配置
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=cn.daimajiangxin.springboot.learning.model

建立實體

參考上一篇文章,從零開始學Spring Boot系列-整合MySQL中建立的User類。

建立Mapper介面和XML檔案

在專案的src/main/java目錄下,建立mapper 的一個package ,再建立Mapper介面。例如,建立一個UserMapper.java介面:

package cn.daimajiangxin.springboot.learning.mapper;

import cn.daimajiangxin.springboot.learning.model.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    List<User> findAllUsers();
}

同時,在src/main/resources/mapper/目錄下建立對應的XML對映檔案,如UserMapper.xml:

<?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="cn.daimajiangxin.springboot.learning.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="cn.daimajiangxin.springboot.learning.model.User">
            <id property="id" column="id" jdbcType="BIGINT"/>
            <result property="name" column="name" jdbcType="VARCHAR"/>
            <result property="email" column="email" jdbcType="VARCHAR"/>
            <result property="age" column="age" jdbcType="INTEGER"/>
            <result property="remark" column="remark" jdbcType="VARCHAR"/>
    </resultMap>

    <sql id="Base_Column_List">
        id,name,email,
        age,remark
    </sql>
  
    <select id="findAllUsers"  resultMap="BaseResultMap">
     select
       <include refid="Base_Column_List"></include>
     from user
    </select>
</mapper>

使用Mapper

在你的Service類中,可以透過注入Mapper介面來使用MyBatis的功能。例如,在UserService.java中:

package cn.daimajiangxin.springboot.learning.service;

import cn.daimajiangxin.springboot.learning.mapper.UserMapper;
import cn.daimajiangxin.springboot.learning.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    private final UserMapper userMapper;

    @Autowired
    public UserService(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    public List<User> getAllUsers() {
        return userMapper.findAllUsers();
    }

    // 新增其他業務邏輯方法...
}

建立Controller

參考上一篇文章,從零開始學Spring Boot系列-整合MySQL中建立的UserController 類。

測試整合效果

執行你的Spring Boot應用程式,並透過呼叫UserService的findAllUsers方法來測試MyBatis的整合效果。你可以透過編寫單元測試或使用Postman或apipost等工具來傳送HTTP請求,訪問來http://localhost:8080/users檢視所有使用者的列表。
20240310022735

總結

透過以上步驟,我們成功地在Spring Boot專案中整合了MyBatis,並透過編寫Mapper介面和XML對映檔案,實現了資料庫的操作。這只是整合MyBatis的基礎示例,你可以進一步探索MyBatis的高階特性,如動態SQL、結果對映等,以滿足更復雜的業務需求。同時,結合Spring Boot的其他功能,你可以構建出功能強大且易於維護的應用程式。


我是程式碼匠心,和我一起學習更多精彩知識!!!掃描二維碼!關注我,實時獲取推送。
公眾號
源文來自:https://daimajiangxin.cn

相關文章