以下是 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 功能以及其他配置功能。