從零開始學Spring Boot系列-集成MyBatis-Plus
在Spring Boot應用開發(fā)中,MyBatis-Plus是一個強大且易于使用的MyBatis增強工具,它提供了很多實用的功能,如代碼生成器、條件構造器、分頁插件等,極大地簡化了MyBatis的使用和配置。本篇文章將指導大家如何在Spring Boot項目中集成MyBatis-Plus。
一、項目準備
首先,確保你已經(jīng)安裝了Java開發(fā)環(huán)境(JDK)和Maven或Gradle等構建工具。接下來,創(chuàng)建一個新的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'
}
三、配置數(shù)據(jù)源
在application.properties或application.yml文件中,配置你的數(shù)據(jù)庫連接信息。以下是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需要替換為你的數(shù)據(jù)庫名稱、用戶名和密碼。mapper-locations指定了MyBatis映射文件的位置,type-aliases-package指定了實體類所在的包。
四、創(chuàng)建實體類
創(chuàng)建與數(shù)據(jù)庫表對應的實體類,并放在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;
}
五、創(chuàng)建Mapper接口
創(chuàng)建對應的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> {
}
六、創(chuàng)建Mapper XML文件
在resources的mapper目錄下創(chuàng)建對應的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>
七、創(chuàng)建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> {
}
八、創(chuàng)建Service實現(xiàn)類
在service目錄下創(chuàng)建一個impl目錄,并創(chuàng)建UserService實現(xiàn)類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{
}
九、創(chuàng)建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應用程序,并通過調(diào)用UserService的list方法來測試MyBatis-plus的集成效果。你可以通過編寫單元測試或使用Postman或apipost等工具來發(fā)送HTTP請求,訪問來http://localhost:8080/users查看所有用戶的列表。

總結
在本篇文章中,我們詳細介紹了如何在Spring Boot項目中集成MyBatis-Plus,并使用XML文件定義Mapper接口的實現(xiàn)。首先,我們添加了MyBatis-Plus的依賴,并配置了數(shù)據(jù)源。接著,我們創(chuàng)建了實體類,并使用了MyBatis-Plus的注解來指定實體類與數(shù)據(jù)庫表的映射關系。然后,我們創(chuàng)建了Mapper接口,并繼承了BaseMapper以使用MyBatis-Plus提供的CRUD方法。為了更靈活地控制SQL語句的編寫,我們還編寫了Mapper的XML文件,并在其中定義了自定義的SQL語句。最后,在Service層或Controller層中,我們通過注入Mapper接口來使用這些功能。
通過集成MyBatis-Plus并使用XML實現(xiàn)Mapper,我們可以在Spring Boot項目中高效地進行數(shù)據(jù)庫操作,同時保持代碼的清晰和可維護性。MyBatis-Plus的增強功能和XML的靈活性相結合,使得數(shù)據(jù)訪問層的開發(fā)變得更加簡單和高效。
我是代碼匠心,和我一起學習更多精彩知識!!!掃描二維碼!關注我,實時獲取推送。

源文來自:https://daimajiangxin.cn

MyBatis-Plus是一個強大且易于使用的MyBatis增強工具,它提供了很多實用的功能,如代碼生成器、條件構造器、分頁插件等,極大地簡化了MyBatis的使用和配置。
浙公網(wǎng)安備 33010602011771號