分页条件查询

def list        
@post_pages, @posts = paginate :posts, :per_page => 5 ,:condition => ["title like ?","%#{keyword}%"]) ,:order=>'id DESC'
end
PageHelper 是一个简单的分页插件,可用于实现分页条件查询,底层基于 MyBatis 的拦截器实现。以下是使用 PageHelper 实现分页条件查询的具体步骤和示例代码: ### 1. 添加依赖 在项目的 `pom.xml` 中添加 PageHelper 的依赖: ```xml <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> </dependency> ``` ### 2. 在 Mapper 接口中声明方法 在 `EmployeeMapper` 中声明 `pageQuery` 方法,接收条件查询的 DTO 对象: ```java import com.sky.dto.EmployeePageQueryDTO; import com.sky.entity.Employee; import com.github.pagehelper.Page; public interface EmployeeMapper { Page<Employee> pageQuery(EmployeePageQueryDTO employeePageQueryDTO); } ``` ### 3. 在 Mapper XML 文件中编写动态 SQL 在 `EmployeeMapper.xml` 中编写动态 SQL,根据条件动态拼接查询语句: ```xml <select id="pageQuery" resultType="com.sky.entity.Employee"> select * from employee <where> <if test="name!=null and name!=''"> and name like concat('%',#{name},'%') </if> </where> order by create_time desc </select> ``` ### 4. 在业务类中使用 PageHelper 进行分页查询 在业务类中使用 `PageHelper.startPage` 方法设置分页参数,然后调用 Mapper 方法进行查询,最后使用 `PageInfo` 封装查询结果: ```java import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sky.dto.EmployeePageQueryDTO; import com.sky.entity.Employee; import com.sky.mapper.EmployeeMapper; import com.sky.result.PageResult; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class EmployeeServiceImpl implements EmployeeService { @Autowired private EmployeeMapper employeeMapper; /** * 分页查询 * @param currentPage 当前页 * @param pageSize 每页显示多少条 * @param employeePageQueryDTO 条件查询对象 * @return */ @Override public PageResult<Employee> findByPage(int currentPage, int pageSize, EmployeePageQueryDTO employeePageQueryDTO) { // 设置分页参数 PageHelper.startPage(currentPage, pageSize); // 调用 Mapper 方法进行查询 List<Employee> employeeList = employeeMapper.pageQuery(employeePageQueryDTO); // 使用 PageInfo 封装查询结果 PageInfo<Employee> employeePageInfo = new PageInfo<>(employeeList); // 返回分页结果 return new PageResult<>(employeePageInfo.getTotal(), employeePageInfo.getList()); } } ``` ### 原理说明 `com.github.pagehelper.dialect.AbstractDialect#processParameterObject` 方法会从 `ThreadLocal` 里面取出之前放入的分页参数(通过 `com.github.pagehelper.BasePageHelper#startPage(int, int)` 放入分页参数),从而实现分页查询 [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值