springboot分页pageable实现简单实用

方便后期使用分页记录一下
springboot项目+mybatis实现
1.导入java包 pom.xml

<!--集成分页-->
   <dependency>
		   <groupId>com.github.pagehelper</groupId>
	       <artifactId>pagehelper-spring-boot-starter</artifactId>
	       <version>1.4.1</version>
   </dependency>
   <dependency>
       <groupId>org.springframework.data</groupId>
       <artifactId>spring-data-commons</artifactId>
       <version>2.2.5.RELEASE</version>
   </dependency>

2.PateUtil工具类

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;


import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;


/**
 * @author yu
 * @version 1.0
 * @date 2022/4/11 18:47
 */
public class PateUtil {

    public static final String  TOTAL = "total";

    public static final String DATA = "data";

    public static final String PAGE_SIZE ="pageSize";

    public static final String TOTAL_PAGE = "totalPage";

    public static final String CURR_PAGE = "currPage";

    public static PateUtil qryPage(Pageable pageable){
        PateUtil pu = new PateUtil();
        PageHelper.startPage(pageable.getPageNumber(), pageable.getPageSize());
        String orderBy = getOrderBy(pageable.getSort());
        if(orderBy != null && !"".equals(orderBy)){
            PageHelper.orderBy(orderBy);
        }
        return pu;
    }

    private static String getOrderBy(Sort sort) {
        Iterator<Sort.Order> iterator = sort.iterator();
        StringBuffer sb = new StringBuffer();
        while (iterator.hasNext()){
            Sort.Order order = iterator.next();
            String s = SQLFilter.sqlInject(order.getProperty());
            sb.append(s);
            sb.append(order.getDirection().isAscending()?"ASC":"DESC");
            sb.append(",");
        }
        if(sb.toString() != null && !"".equals(sb.toString())){
            return sb.toString().substring(0,sb.toString().lastIndexOf(","));
        }
        return null;
    }

    public Map qryPageData(List list){
        PageInfo page = new PageInfo(list);
        Map map = new HashMap();
        map.put(TOTAL,page.getTotal());
        map.put(DATA,page.getList());
        map.put(PAGE_SIZE,page.getPageSize());
        map.put(TOTAL_PAGE,page.getPages());
        map.put(CURR_PAGE,page.getPrePage()+1);
        return map;
    }
}

3.SQLFilter sql关键字处理工具类

public class SQLFilter {
    public static String sqlInject(String str){
        if(!StringUtils.isEmpty(str)){
            return null;
        }
//        去掉 ' | " ; \字符
        str = str.replace("'","");
        str = str.replace("\"","");
        str = str.replace(";","");
        str = str.replace("\\","");

//        转换成小写
        str = str.toLowerCase();

        // 非法字符
        String[] keywords = {"master","truncate","insert","select","delete","update","alter","drop"};

//        判断是否包含非法字符
        for (String keyword : keywords) {
            if(str.indexOf(keyword) != -1){
                return null;
            }
        }
        return str;
     }
}

4.PageDto分页实体类

@Data
public class PageDto{

    @ApiParam(value = "页码")
    protected Integer page = 1;
    @ApiParam(value = "每页数量")
    protected Integer size = 50;


    public Pageable pageable(){
        return PageRequest.of(page,size);
    }
}

5.使用工具分页

 @Override
    public JsonResult selectTagList(CommonPage dto) {
        JsonResult jsonResult = new JsonResult();
        Map maps =  PateUtil.qryPage(dto.pageable()).qryPageData(getImageList.selectTagList());
        }
// getImageList.selectTagList() 查询的sql 正常的写法,后面是业务逻辑就省略了
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值