代码模拟多条件动态SQL查询及代码实现手动分页

对List容器进行代码模拟动态sql查询效果(控制器层)

		List<DeviceInfoDto> listNew=new ArrayList<>();
		boolean flag = false;
		for (DeviceInfoDto deviceInfoDto : deviceInfoDtoList) {
		if (StringUtils.isEmpty(deviceName) || deviceInfoDto.getDeviceName().contains(deviceName)) {
			if (StringUtils.isEmpty(ip) ||deviceInfoDto.getInterfaceItem().get(0).getIp()
				.contains(ip)) {
				listNew.add(deviceInfoDto);
				flag = true;
				total=listNew.size();
			}
		}}
		if (!flag) {
			return Wrapper.newInstance().success(null, 0);
		}

注意

  1. flag作为开关标志参数,当发生变化时说明对象满足条件。
  2. 灵活选用String的API方法实现效果,类似contains()、equals()等。

对List容器实现代码分页效果

1.核心配置工具类Paging.java


//手动分页类
public class Paging {
    private Integer totalNum;//总条数
    private Integer totalPage;//总页数
    private Integer pageSize;//每页条数
    private Integer pageIndex;//当前页码
    private Integer queryIndex;//当前页从第几条开始查

    public static Paging pagination(Integer totalNum,Integer pageSize,Integer pageIndex){
        Paging page = new Paging();
        page.setTotalNum(totalNum);
        Integer totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : totalNum / pageSize + 1;
        page.setTotalPage(totalPage);
        page.setPageIndex(pageIndex + 1);
        page.setPageSize(pageSize);
        page.setQueryIndex(pageSize * pageIndex);
        return page;
    }

    public Integer getTotalNum() {
        return totalNum;
    }

    public void setTotalNum(Integer totalNum) {
        this.totalNum = totalNum;
    }

    public Integer getTotalPage() {
        return totalPage;
    }

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

    public Integer getPageSize() {
        return pageSize;
    }

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

    public Integer getPageIndex() {
        return pageIndex;
    }

    public void setPageIndex(Integer pageIndex) {
        this.pageIndex = pageIndex;
    }

    public Integer getQueryIndex() {
        return queryIndex;
    }

    public void setQueryIndex(Integer queryIndex) {
        this.queryIndex = queryIndex;
    }
}

2.调用代码部分

		//手动分页
		Paging paging = Paging.pagination(listNew.size(),pageSize,pageIndex-1);
		int fromIndex = paging.getQueryIndex();
		int toIndex = 0;
		if (fromIndex + paging.getPageSize() >= listNew.size()){
			toIndex = listNew.size();
		}else {
			toIndex = fromIndex +  paging.getPageSize();
		}
		if (fromIndex > toIndex){
			listNew= Collections.EMPTY_LIST;
		}
		listNew=listNew.subList(fromIndex,toIndex);

注意

  1. pageSize代表页码容量。
  2. pageIndex代表当前页码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值