springbootmybatis puls 分页查询功能实现代码
时间: 2024-05-10 20:16:06 浏览: 126
springboot整合MyBatisplus,实现分页查询、根据表自动生成代码、生成库里所有表对应的代码等功能
下面是使用 Spring Boot 和 MyBatis-Plus 实现分页查询的示例代码:
1. 添加依赖
在 pom.xml 文件中添加 MyBatis-Plus 和 MySQL 的依赖:
```xml
<dependencies>
<!-- MyBatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MySQL驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
```
2. 配置数据源和 MyBatis-Plus
在 application.properties 文件中添加数据源和 MyBatis-Plus 的配置:
```properties
# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# MyBatis-Plus配置
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.global-config.id-type=auto
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
mybatis-plus.global-config.db-config.insert-strategy=not_null
mybatis-plus.global-config.db-config.update-strategy=not_null
mybatis-plus.global-config.db-config.select-strategy=not_null
```
3. 创建实体类和 Mapper 接口
创建一个名为 `User` 的实体类,并添加注解 `@TableName` 指定对应的数据库表名:
```java
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("user")
public class User {
@TableId(type=IdType.AUTO)
private Long id;
private String name;
private Integer age;
// 省略 getter 和 setter 方法
}
```
创建名为 `UserMapper` 的 Mapper 接口,继承 MyBatis-Plus 的 `BaseMapper` 接口,并添加注解 `@Mapper`:
```java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
```
4. 实现分页查询
在需要实现分页查询的服务类中注入 `UserMapper`,并在方法中使用 `Page` 类和 `QueryWrapper` 类实现分页查询:
```java
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
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 List<User> getUserList(Integer pageNum, Integer pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
QueryWrapper<User> wrapper = new QueryWrapper<>();
// 查询条件,可根据需要添加
wrapper.eq("age", 18);
return userMapper.selectPage(page, wrapper).getRecords();
}
}
```
其中,`Page` 类表示分页参数,`QueryWrapper` 类表示查询条件,`selectPage` 方法实现分页查询。
5. 测试
在测试类中注入 `UserService`,并调用 `getUserList` 方法进行分页查询:
```java
import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
public class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testGetUserList() {
List<User> userList = userService.getUserList(1, 10);
System.out.println(userList);
}
}
```
运行测试类,即可看到分页查询的结果。
阅读全文