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

代码匠心發表於2024-04-04

在Spring Boot應用開發中,MyBatis-Plus是一個強大且易於使用的MyBatis增強工具,它提供了很多實用的功能,如程式碼生成器、條件構造器、分頁外掛等,極大地簡化了MyBatis的使用和配置。本篇文章將指導大家如何在Spring Boot專案中整合MyBatis-Plus。

一、專案準備

首先,確保你已經安裝了Java開發環境(JDK)和Maven或Gradle等構建工具。接下來,建立一個新的Spring Boot專案。你可以使用Spring Initializrhttps://start.spring.io來快速生成專案結構,選擇你需要的依賴項,比如Spring Web、MySQL Driver等。

二、新增MyBatis-Plus依賴

在Gradle專案中整合MyBatis-Plus,你需要在專案的build.gradle檔案中新增MyBatis-Plus的依賴。以下是新增MyBatis-Plus依賴的示例:

    dependencies {
        implementation 'org.springframework.boot:spring-boot-starter-web'
        compileOnly 'org.projectlombok:lombok'
        annotationProcessor 'org.projectlombok:lombok'
        runtimeOnly 'mysql:mysql-connector-java:8.0.17'
        // MyBatis-Plus 依賴
        implementation 'com.baomidou:mybatis-plus-spring-boot3-starter:3.5.6'
        // 如果需要分頁外掛,可以新增以下依賴
        implementation 'com.baomidou:mybatis-plus-extension:3.5.6'
    }

三、配置資料來源

在application.properties或application.yml檔案中,配置你的資料庫連線資訊。以下是application.yml的示例:

# datasource
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true  
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

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

這裡的your_database、your_username和your_password需要替換為你的資料庫名稱、使用者名稱和密碼。mapper-locations指定了MyBatis對映檔案的位置,type-aliases-package指定了實體類所在的包。

四、建立實體類

建立與資料庫表對應的實體類,並放在type-aliases-package指定的包下。

package cn.daimajiangxin.springboot.learning.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;

@TableName(value ="user")
@Data
public class User implements Serializable {
    /**
     * 學生ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 姓名
     */
    private String name;

    /**
     * 郵箱
     */
    private String email;

    /**
     * 年齡
     */
    private Integer age;

    /**
     * 備註
     */
    private String remark;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}

五、建立Mapper介面

建立對應的Mapper介面,通常放在與實體類相同的包下,並繼承BaseMapper 介面。例如:

package cn.daimajiangxin.springboot.learning.mapper;

import cn.daimajiangxin.springboot.learning.model.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {

}

六、建立Mapper XML檔案

在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>

七、建立Service 介面

在service目錄下服務類介面UserService

package cn.daimajiangxin.springboot.learning.service;

import cn.daimajiangxin.springboot.learning.model.User;
import com.baomidou.mybatisplus.extension.service.IService;

public interface UserService extends IService<User> {

}

八、建立Service實現類

在service目錄下建立一個impl目錄,並建立UserService實現類UserServiceImpl

package cn.daimajiangxin.springboot.learning.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.daimajiangxin.springboot.learning.model.User;
import cn.daimajiangxin.springboot.learning.service.UserService;
import cn.daimajiangxin.springboot.learning.mapper.UserMapper;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>implements UserService{

}

九、建立Controller

控制層注入 UserService,並使用IService的list和save 方法。

package cn.daimajiangxin.springboot.learning.controller;

import cn.daimajiangxin.springboot.learning.model.User;
import cn.daimajiangxin.springboot.learning.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {
    private final UserService userService;

    @Autowired
    public UserController(UserService userService) {
        this.userService = userService;
    }
    @GetMapping("/users")
    public List<User> getAllUsers() {
        return userService.list();
    }
    @PostMapping("/user")
    public String add() {
        User user=new User();
        user.setName("test");
        user.setAge(18);
        user.setEmail("test@163.com");
        userService.save(user);
        return "儲存成功";
    }

}

十、測試

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

總結

在本篇文章中,我們詳細介紹瞭如何在Spring Boot專案中整合MyBatis-Plus,並使用XML檔案定義Mapper介面的實現。首先,我們新增了MyBatis-Plus的依賴,並配置了資料來源。接著,我們建立了實體類,並使用了MyBatis-Plus的註解來指定實體類與資料庫表的對映關係。然後,我們建立了Mapper介面,並繼承了BaseMapper以使用MyBatis-Plus提供的CRUD方法。為了更靈活地控制SQL語句的編寫,我們還編寫了Mapper的XML檔案,並在其中定義了自定義的SQL語句。最後,在Service層或Controller層中,我們透過注入Mapper介面來使用這些功能。

透過整合MyBatis-Plus並使用XML實現Mapper,我們可以在Spring Boot專案中高效地進行資料庫操作,同時保持程式碼的清晰和可維護性。MyBatis-Plus的增強功能和XML的靈活性相結合,使得資料訪問層的開發變得更加簡單和高效。


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

相關文章