以下是 Spring Boot 集成 MyBatis-Plus 的詳細步驟:
創建 Spring Boot 項目
可使用 Spring Initializr 快速創建項目,添加相關依賴。
引入依賴
在項目 pom.xml
文件中添加以下依賴:
<!-- MyBatis-Plus 啟動依賴 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.6.5</version>
</dependency>
<!-- 數據庫驅動依賴,以 MySQL 為例 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>
配置數據源及 MyBatis-Plus
在 application.yml
或 application.properties
文件中進行配置。
application.yml 示例:
spring:datasource:url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTCusername: rootpassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.yourproject.entityconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
application.properties 示例:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.example.yourproject.entity
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
創建實體類
創建一個 Java 實體類,用于映射數據庫表。例如,創建一個 User
實體類:
package com.example.yourproject.entity;import com.baomidou.mybatisplus.annotation.TableName;@TableName("user") // 指定對應的數據庫表名
public class User {private Long id;private String name;private Integer age;private String email;// Getters 和 Setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}
創建 Mapper 接口
創建一個 Mapper 接口,繼承 BaseMapper
。BaseMapper
是 MyBatis-Plus 提供的基礎接口,包含了常用的 CRUD 方法。例如,創建一個 UserMapper
接口:
package com.example.yourproject.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.yourproject.entity.User;public interface UserMapper extends BaseMapper<User> {// 可以在這里定義自定義的 SQL 方法
}
創建 Mapper XML 文件(可選)
如果需要自定義 SQL 語句,可以在 src/main/resources/mapper
目錄下創建對應的 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="com.example.yourproject.mapper.UserMapper"><!-- 自定義 SQL 語句 -->
</mapper>
創建 Service 層
創建 Service 接口及其實現類。例如,創建 UserService
接口和 UserServiceImpl
實現類:
package com.example.yourproject.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.example.yourproject.entity.User;public interface UserService extends IService<User> {// 可以在這里定義自定義的業務方法
}
package com.example.yourproject.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.yourproject.entity.User;
import com.example.yourproject.mapper.UserMapper;
import com.example.yourproject.service.UserService;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 如果需要,可以重寫或實現自定義方法
}
創建 Controller 層
創建一個 Controller 層,用于處理客戶端請求。例如,創建一個 UserController
:
package com.example.yourproject.controller;import com.example.yourproject.entity.User;
import com.example.yourproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMappingpublic List<User> getAllUsers() {return userService.list();}@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {return userService.getById(id);}@PostMappingpublic boolean saveUser(@RequestBody User user) {return userService.save(user);}@PutMappingpublic boolean updateUser(@RequestBody User user) {return userService.updateById(user);}@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Long id) {return userService.removeById(id);}
}
配置 MyBatis-Plus 掃描
在 Spring Boot 主應用類上添加 @MapperScan
注解,掃描 Mapper 接口所在的包:
package com.example.yourproject;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.example.yourproject.mapper")
public class YourProjectApplication {public static void main(String[] args) {SpringApplication.run(YourProjectApplication.class, args);}
}
配置分頁插件(可選)
在 application.yml
或 application.properties
文件中配置分頁插件:
application.yml 示例:
mybatis-plus:plugins:pagination:enabled: true
application.properties 示例:
mybatis-plus.plugins.pagination.enabled=true
然后在 Service 中使用分頁功能:
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;public Page<User> getUsersByPage(int current, int size) {Page<User> page = new Page<>(current, size);return userMapper.selectPage(page, null);
}
測試
可以使用 Spring Boot 的測試框架來測試各個接口。例如:
package com.example.yourproject;import com.example.yourproject.entity.User;
import com.example.yourproject.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;@SpringBootTest
public class YourProjectTests {@Autowiredprivate UserService userService;@Testpublic void testFindAll() {assertTrue(userService.list().size() >= 0);}@Testpublic void testFindById() {User user = new User();user.setName("testuser");user.setAge(20);user.setEmail("test@example.com");userService.save(user);assertNotNull(userService.getById(user.getId()));}@Testpublic void testSave() {User user = new User();user.setName("newuser");user.setAge(25);user.setEmail("new@example.com");assertTrue(userService.save(user));}@Testpublic void testUpdate() {User user = new User();user.setName("updateuser");user.setAge(30);user.setEmail("update@example.com");userService.save(user);user.setAge(35);assertTrue(userService.updateById(user));}@Testpublic void testDelete() {User user = new User();user.setName("deleteuser");user.setAge(28);user.setEmail("delete@example.com");userService.save(user);assertTrue(userService.removeById(user.getId()));}
}
運行 Spring Boot 項目,訪問對應的接口即可測試 MyBatis-Plus 的 CRUD 功能以及其他配置功能。