0


Mybatis实现分页查询

一. 简单分页查询——limit

使用select查询时,如果结果集数据量较大,一个页面难以处理,就会采用分页查询。

分页查询,就是从结果集中拿出指定的第n页到第m页的数据来显示。

// limit分页公式 
// currentPage:当前页 
// pageSize:每页记录数
limit (currentPage-1) * pageSize,pageSize
// SQL语句
select * from student limit(currentPage-1)*pageSize,pageSize;

1. 基于注解的简单分页查询

【Mapper接口】

@select("select * from student limit #{pageBegin},#{pageSize}")
List<Student> findByPage(@Param("pageBegin") Integer PageBegin,@Param("PageSize")Integer PageSize);

【Controller类·】

@GetMapping("/findByPage")
public List<Student> findByPage(Integer page,Integer pageSize){
    Integer pageBegin = (page-1) * pageSize;
    return StudentMapper.findByPage(pageBegin,pageSize);
}

二.基于mapper.xml的复杂分页

  1. 【定义Page类——封装分页结果】
/**
 * 分页结果封装对象
 */
@AllArgsConstructor
@NoArgsConstructor
@Data
public class PageResult implements Serializable{
    private Long total;//总记录数
    private List rows;//当前页结果
}

2.【定义PageResult类——封装查询条件】

 封装查询条件
 请求参数包括页码、每页显示记录数、查询条件。
 请求参数的json格式为:{currentPage:1,pageSize:10,queryString:''apesource''}
// 分页请求。
@AllArgsConstructor
@NoArgsConstructor
@Data
public class QueryPageBean implements Serializable{
    private Integer currentPage;//当前页码
    private Integer pageSize;//每页记录数
    private String queryString;//查询条件

    public QueryPageBean(Integer currentPage, Integer pageSize) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
    }
}

3.【Dao层】

/*** 持久层Dao接口 */
@Mapper
public interface CheckGroupDao {
    public Page<CheckGroup> selectByCondition(String queryString);
}

4.【xxxMapper.xml映射文件】

<!--动态查询:分页查询-->
    <select id="selectByCondition" parameterType="string" resultType="com.apesource.graduation_project.pojo.CheckGroup">
        select * from t_checkgroup
        <if test="value != null and value.length > 0">
            where code = #{value} or name = #{value} or helpCode = #{value}
        </if>
    </select>

5.【Service层】

@Override
    public PageResult pageQuery(Integer currentPage, Integer pageSize, String queryString)                     {
        PageHelper.startPage(currentPage, pageSize);
        Page<CheckGroup> page = checkGroupDao.selectByCondition(queryString);
        return new PageResult(page.getTotal(), page.getResult());
    }
  1. 【Controller层】
 //分页查询
    @PostMapping("/findPage")
    public PageResult findPage(@RequestBody QueryPageBean queryPageBean) {
        try {
            PageResult pageResult = checkGroupService.pageQuery(queryPageBean.getCurrentPage(),queryPageBean.getPageSize(),queryPageBean.getQueryString());
            return pageResult;
        } catch (Exception e) {
            return null;
        }
    }
标签: mybatis java mysql

本文转载自: https://blog.csdn.net/weixin_45939128/article/details/127898701
版权归原作者 章鱼小丸子duduu 所有, 如有侵权,请联系我们删除。

“Mybatis实现分页查询”的评论:

还没有评论