在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檢視所有使用者的列表。
總結
在本篇文章中,我們詳細介紹瞭如何在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