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());
}