1. 创建 Spring Boot 项目
你可以使用 Spring Initializr(https://start.spring.io/ )来创建一个基本的 Spring Boot 项目,添加以下依赖:
- Spring Web
- Spring Data JPA(这里只是占位,实际使用 MyBatis-Plus)
- MyBatis Framework
- MySQL Driver
2. 添加 MyBatis-Plus 依赖
在pom.xml
文件中添加 MyBatis-Plus 的依赖:
xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
3. 配置数据库连接
在application.properties
或application.yml
中配置数据库连接信息:
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
4. 创建实体类
创建一个User
实体类,对应数据库中的用户表:
java
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("user")
public class User {
@TableId
private Long id;
private String username;
private String email;
}
5. 创建 Mapper 接口
创建一个UserMapper
接口,继承BaseMapper
:
java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
6. 创建 Service 接口和实现类
创建UserService
接口和UserServiceImpl
实现类:
java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import java.util.List;
public interface UserService {
// 添加用户
boolean saveUser(User user);
// 删除用户
boolean deleteUser(Long id);
// 修改用户
boolean updateUser(User user);
// 查询所有用户
List<User> getAllUsers();
// 多条件分页查询
IPage<User> getUserPage(Page<User> page, String username, String email);
}
java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public boolean saveUser(User user) {
return userMapper.insert(user) > 0;
}
@Override
public boolean deleteUser(Long id) {
return userMapper.deleteById(id) > 0;
}
@Override
public boolean updateUser(User user) {
return userMapper.updateById(user) > 0;
}
@Override
public List<User> getAllUsers() {
return userMapper.selectList(null);
}
@Override
public IPage<User> getUserPage(Page<User> page, String username, String email) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
if (username != null && !username.isEmpty()) {
queryWrapper.like("username", username);
}
if (email != null && !email.isEmpty()) {
queryWrapper.like("email", email);
}
return userMapper.selectPage(page, queryWrapper);
}
}
7. 开启分页插件
创建一个配置类,开启 MyBatis-Plus 的分页插件:
java
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
8. 创建 Controller
创建一个UserController
来处理 HTTP 请求:
java
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.User;
import com.example.demo.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 {
@Autowired
private UserService userService;
// 添加用户
@PostMapping
public boolean saveUser(@RequestBody User user) {
return userService.saveUser(user);
}
// 删除用户
@DeleteMapping("/{id}")
public boolean deleteUser(@PathVariable Long id) {
return userService.deleteUser(id);
}
// 修改用户
@PutMapping
public boolean updateUser(@RequestBody User user) {
return userService.updateUser(user);
}
// 查询所有用户
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
// 多条件分页查询
@GetMapping("/page")
public IPage<User> getUserPage(@RequestParam(defaultValue = "1") Integer current,
@RequestParam(defaultValue = "10") Integer size,
@RequestParam(required = false) String username,
@RequestParam(required = false) String email) {
Page<User> page = new Page<>(current, size);
return userService.getUserPage(page, username, email);
}
}
9. 测试接口
你可以使用 Postman 或其他工具来测试上述接口:
- 添加用户:发送 POST 请求到
http://localhost:8080/users
,请求体为 JSON 格式的用户信息。 - 删除用户:发送 DELETE 请求到
http://localhost:8080/users/{id}
,其中{id}
为要删除的用户 ID。 - 修改用户:发送 PUT 请求到
http://localhost:8080/users
,请求体为 JSON 格式的用户信息。 - 查询所有用户:发送 GET 请求到
http://localhost:8080/users
。 - 多条件分页查询:发送 GET 请求到
http://localhost:8080/users/page?current=1&size=10&username=xxx&email=xxx
。
通过以上步骤,你就可以使用 Spring Boot 整合 MyBatis-Plus 实现用户的添加、删除、修改、查询以及多条件分页查询功能。
分享
详细介绍在Spring Boot中整合MyBatis-Plus的步骤
给出Spring Boot整合MyBatis-Plus实现用户多条件分页查询的代码示例
MyBatis-Plus有哪些常用的注解和功能?