1. scan掃描
get:查詢一條結(jié)果
scan可以查詢多條
Scan scan=new Scan(Bytes.toBytes("row1"));
ResultScanner rs=table.getScanner(scan);
for(Result r : rs)
String name=Bytes.toString(r.getValue(Bytes.toBytes("myself"),Bytes.toBytes("name")));
System.out.println(name);
rs.close();
注意:scan和get的結(jié)果獲取本質(zhì)上一樣淀散,Table通過(guò)傳入scan之后返回的結(jié)果掃描器ResultScanner沒(méi)有真正去查詢結(jié)果贷痪,打開(kāi)掃描器幔妨,遍歷它术唬,才真正的去查詢數(shù)據(jù)
2. 過(guò)濾器
過(guò)濾器是在Get或者Scan的時(shí)候過(guò)濾結(jié)果用的吹散, 可以把它看成SQL中的Where語(yǔ)句。
2.1 單過(guò)濾器用法簡(jiǎn)介
Filter filter=new xxxFilter(...);
scan.setFilter(filter);
例如:值過(guò)濾器
Filter filter=new ValueFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("Wang"));
2.2 過(guò)濾器列表
Scan只有setFilter而沒(méi)有addFilter方法蓉媳,可是在實(shí)際工作中我們肯定是需要同時(shí)使用多個(gè)過(guò)濾器的譬挚,此時(shí)可以使用過(guò)濾器列表( FilterList)。
List<Filter> filters=new ArrayList<Filter>();
Filter nameFilter=new SingleColumnValueFilter(Bytes.toBytes("mycf"),Bytes.toBytes("name"),CompareOp.EQUAL,new SubstringComparator("Wang"));;
filters.add(nameFilter);
Filter pageFilter=new PageFilter(2L);
filters.add(pageFilter);
FilterList filterList = new FilterList(filters);
scan.setFilter(filterList);
ResultScanner rs=table.getScanner(scan);
for(Result r : rs)
String name=Bytes.toString(r.getValue(Bytes.toBytes("myself"),Bytes.toBytes("name")));
System.out.println(name);
rs.close();