MyBatis的分页查询封装

MyBatis的分页查询封装

分页查询封装工具类

public class PageBean<T> {
    
    

    private int totalCount;//总记录数
    private int totalPage;//总页数
    private int pageNo;//当前页码
    private int pageSize;//每页显示的条数
    private List<T> list;//每页显示的数据集合

    public int getTotalCount() {
    
    
        return totalCount;
    }

    public void setTotalCount(int totalCount) {
    
    
        this.totalCount = totalCount;
    }

    public int getTotalPage() {
    
    
        return totalPage;
    }

    public void setTotalPage(int totalPage) {
    
    
        this.totalPage = totalPage;
    }

    public int getPageNo() {
    
    
        return pageNo;
    }

    public void setPageNo(int pageNo) {
    
    
        this.pageNo = pageNo;
    }

    public int getPageSize() {
    
    
        return pageSize;
    }

    public void setPageSize(int pageSize) {
    
    
        this.pageSize = pageSize;
    }

    public List<T> getList() {
    
    
        return list;
    }

    public void setList(List<T> list) {
    
    
        this.list = list;
    }

    public PageBean() {
    
    
    }

    public PageBean(int totalCount, List<T> list) {
    
    
        this.totalCount = totalCount;
        this.list = list;
    }

}

查询sql语句

<select id="findEvents" resultType="com.hikvision.ctm05tips.dto.EventsDto">
        select * from events
        <where>
            <if test="eventsDto.eventType!=null and eventsDto.eventType!=''">
                event_type=#{
    
    eventsDto.eventType}
            </if>
            <if test="eventsDto.occurTime!=null and eventsDto.occurTime!=''">
                and occur_time=#{
    
    eventsDto.occurTime}
            </if>
            <if test="eventsDto.startTime!=null and eventsDto.startTime!=''">
                and start_time=#{
    
    eventsDto.startTime}
            </if>
            <if test="eventsDto.endTime!=null and eventsDto.endTime!=''">
                and end_time=#{
    
    eventsDto.endTime}
            </if>
        </where>
        offset (#{
    
    pageNo}-1) * #{
    
    pageSize}
        limit #{
    
    pageSize}
    </select>

Service

public BaseResponse<PageBean<Events>> findEvents(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize,@Param("eventsDto") EventsDto eventsDto);

ServiceImpl

@Override
    public BaseResponse<PageBean<Events>> findEvents(@Param("pageNo") int pageNo, @Param("pageSize") int pageSize, @Param("eventsDto") EventsDto eventsDto) {
    
    
        BaseResponse<PageBean<Events>> response = new BaseResponse<>();
        //创建pageBean对象
        PageBean<Events> pageBean = new PageBean<Events>();
        //设置参数
        pageBean.setPageNo(pageNo);
        pageBean.setPageSize(pageSize);
        //调用dao查询总记录数
        int totalCount = eventsMapper.findCount(eventsDto);
        pageBean.setTotalCount(totalCount);
        //调用dao查询List集合
        int start = (pageNo - 1) * pageSize;
        List<Events> lists = eventsMapper.findEvents(pageNo, pageSize, eventsDto);
        pageBean.setList(lists);
        //计算总页码
        int totalPage = (totalCount % pageSize) == 0 ? totalCount / pageSize : (totalCount / pageSize + 1);
        pageBean.setTotalPage(totalPage);
        if(CollectionUtils.isNotEmpty(lists)){
    
    
            response.setMsg("按照按照事件类型、发生时间、开始时间、结束时间查询事件成功");
            response.setData(pageBean);
            return response;
        }
        response.setCode(ErrorCodeEnum.FIND_EVENT_ERROR.getCode());
        response.setMsg(ErrorCodeEnum.FIND_EVENT_ERROR.getMsg());
        return response;
    }

Controller

@GetMapping("/findEvents")
    public BaseResponse<PageBean<Events>> findEvents(int pageNo, int pageSize, EventsDto eventsDto){
    
    
        BaseResponse<PageBean<Events>> response = eventsService.findEvents(pageNo, pageSize, eventsDto);
        return response;
    }

猜你喜欢

转载自blog.csdn.net/qq_38530648/article/details/114023959