不使用PageInfo可以吗
时间: 2024-01-19 12:02:11 浏览: 55
当然可以不使用 PageInfo,但是这样会比较麻烦。如果不使用 PageInfo,您需要自行计算出分页查询的结果和分页信息,并将它们封装成一个自定义的类或者 Map 对象返回,以提供给调用方。
在自定义分页信息类时,通常需要包括以下属性:
- 查询结果列表:即满足查询条件的记录列表。
- 总记录数:满足查询条件的记录总数。
- 当前页码:当前查询的页码。
- 每页记录数:每页显示的记录数。
- 总页数:总页数,即满足查询条件的记录总数除以每页记录数的结果。
- 前一页:当前页的前一页页码。
- 后一页:当前页的后一页页码。
- 是否有前一页:判断当前页是否有前一页。
- 是否有后一页:判断当前页是否有后一页。
这些属性的计算方法和 PageInfo 中类似,但是需要自己实现。总的来说,使用 PageInfo 能够更加方便地获取分页查询相关的信息,而且可以减少代码量,尤其是在查询结果需要进行排序等复杂操作时,使用 PageInfo 可以更加方便地实现。
相关问题
PageInfo如何使用
使用PageInfo进行分页查询一般需要以下步骤:
1. 在Mapper接口中定义分页查询方法,方法参数为PageInfo类型对象和查询条件对象(例如实体类对象);
```java
public interface UserMapper {
List<User> selectUsers(PageInfo pageInfo, UserCondition condition);
}
```
2. 在Mapper映射文件中编写SQL语句,使用LIMIT关键字实现分页查询,并使用COUNT(*)语句查询总记录数;
```xml
<select id="selectUsers" resultType="com.example.User">
SELECT * FROM user
<where>
<if test="condition.name != null">
AND name = #{condition.name}
</if>
<!-- 其他查询条件 -->
</where>
ORDER BY create_time DESC
LIMIT #{pageInfo.offset}, #{pageInfo.pageSize}
</select>
<select id="selectUserCount" resultType="java.lang.Integer">
SELECT COUNT(*) FROM user
<where>
<if test="condition.name != null">
AND name = #{condition.name}
</if>
<!-- 其他查询条件 -->
</where>
</select>
```
3. 在Service层调用Mapper接口中的方法,传入PageInfo对象和查询条件对象,获取分页结果集;
```java
public class UserService {
@Autowired
private UserMapper userMapper;
public PageInfo<User> getUsers(int pageNum, int pageSize, UserCondition condition) {
PageInfo<User> pageInfo = new PageInfo<>(pageNum, pageSize);
List<User> userList = userMapper.selectUsers(pageInfo, condition);
pageInfo.setList(userList);
int total = userMapper.selectUserCount(condition);
pageInfo.setTotal(total);
return pageInfo;
}
}
```
4. 在Controller中接收请求参数,调用Service层方法进行分页查询,并将分页结果集传递给View层进行展示。
```java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/list")
public PageInfo<User> getUsers(@RequestParam(required = false, defaultValue = "1") int pageNum,
@RequestParam(required = false, defaultValue = "10") int pageSize,
UserCondition condition) {
return userService.getUsers(pageNum, pageSize, condition);
}
}
```
以上就是使用PageInfo进行分页查询的基本步骤,具体实现可以根据实际情况进行调整和优化。
使用pageinfo加mybatis
在MyBatis中使用`PageInfo`来实现分页查询通常涉及到以下几个步骤:
1. **引入依赖**:首先,你需要引入`PageHelper`的依赖,它是一个流行的MyBatis分页插件,可以让你在Mapper接口中轻松地设置分页查询。
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>版本号</version>
</dependency>
```
2. **配置插件**:在Spring Boot配置文件或MyBatis的配置中,添加PageHelper的配置信息,如开启、设置方言等。
```yaml
mybatis:
mapper-locations: classpath*:mapper/*.xml
plugins:
enabled:
- com.github.pagehelper.PageInterceptor
properties:
helperDialect: mysql
reasonable: true #合理分页
supportMethodsArguments: false #忽略方法参数
params: {pageSize: #{pageSize}, pageNum: #{pageNum}}
```
3. **Mapper接口**:在Mapper接口中,使用`Page<T>`作为泛型类型,其中T是你期望返回的对象类型。例如:
```java
public interface UserMapper {
@Select("SELECT * FROM user")
Page<User> findAll(@Param("params") PageHelper.PageInfo params);
}
```
4. **调用分页方法**:在服务层或业务逻辑中,传入`PageHelper`的实例和当前页码、每页大小等参数:
```java
PageHelper.startPage(pageNum, pageSize); // 初始化分页
List<User> users = userMapper.findAll(params); // 调用Mapper方法获取数据
int total = userMapper.count(); // 获取总记录数
```
阅读全文