hbase数据java后端分页查询

hbase springboot starter参考 https://github.com/SpringForAll/spring-boot-starter-hbase


public PageQueryResult<LoginLog> queryUserLoginLogList(PageQueryParam pageQueryParam,
			LoginLogRequest loginLogRequest) {
        FilterList filterList=new FilterList();
        Filter pageFilter = new PageFilter(1000);//最多1000条
        filterList.addFilter(pageFilter);
       
        String reverseUserId=StringUtils.reverse(loginLogRequest.getUserId()+"");
        Scan scan=new Scan();
        if(StringUtils.isNotEmpty(loginLogRequest.getQueryStartTime())){
        	 Date startDate=DateUtil.parse(loginLogRequest.getQueryStartTime(), "yyyy-MM-dd HH:mm:ss");
             Date endDate=DateUtil.parse(loginLogRequest.getQueryEndTime(), "yyyy-MM-dd HH:mm:ss");
             scan=new Scan().withStartRow(Bytes.toBytes(reverseUserId+"_"+(Long.MAX_VALUE-endDate.getTime())))
             		.withStopRow(Bytes.toBytes(reverseUserId+"_"+(Long.MAX_VALUE-startDate.getTime())));
        }else{
        	Filter prefixFilter = new PrefixFilter(Bytes.toBytes(reverseUserId));
            filterList.addFilter(prefixFilter);
        }
        scan.setFilter(filterList);

        List<LoginLog> loginLogList=hbaseTemplate.find(UserLoginHandle.LOGINLOG_TABLE_NAME, scan, new RowMapper<LoginLog>() {

			[@Override](https://my.oschina.net/u/1162528)
			public LoginLog mapRow(Result result, int rowNum) throws Exception {
				List<Cell> resultList=result.getColumnCells(Bytes.toBytes(UserLoginHandle.FAMILY_NAME), Bytes.toBytes(UserLoginHandle.COLUMN_NAME));
				if(CollectionUtils.isEmpty(resultList)){
					return null;
				}
				LoginLog loginLog=JSON.parseObject(Bytes.toString(CellUtil.cloneValue(resultList.get(0))), LoginLog.class);
				return loginLog;
			}
		});
        
        if(CollectionUtils.isEmpty(loginLogList)){
            return new PageQueryResult<LoginLog>(pageQueryParam.getPageIndex(), pageQueryParam.getPageSize(), loginLogList, 0);
        }
        
        int fromIndex=(pageQueryParam.getPageIndex()-1)*pageQueryParam.getPageSize();
        if(fromIndex>loginLogList.size()){
            return new PageQueryResult<LoginLog>(pageQueryParam.getPageIndex(), pageQueryParam.getPageSize(), loginLogList, 0);
        }
        int toIndex=fromIndex+pageQueryParam.getPageSize();
        if(toIndex>loginLogList.size()){
            toIndex=loginLogList.size();
        }
        
        return new PageQueryResult<LoginLog>(pageQueryParam.getPageIndex(), pageQueryParam.getPageSize(), loginLogList.subList(fromIndex, toIndex), loginLogList.size());
	}

转载于:https://my.oschina.net/zhaoyi1/blog/3021616

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值