阿里云表格存储OtsQueryWrapper
最近项目因为数据量太大接入阿里云表格存储,粗略了看了下ots的java开发sdk,结果发现执行一个简单的多条件查询过于麻烦
下面是一段ots提供的sdk查询代码
/*** 通过BoolQuery进行And条件查询。* @param client*/
public static void andQuery(SyncClient client){/*** 查询条件一:RangeQuery,Col_Long的列值大于3。*/RangeQuery rangeQuery = new RangeQuery();rangeQuery.setFieldName("Col_Long");rangeQuery.greaterThan(ColumnValue.fromLong(3));/*** 查询条件二:MatchQuery,Col_Keyword的列值要匹配"hangzhou"。*/MatchQuery matchQuery = new MatchQuery();matchQuery.setFieldName("Col_Keyword");matchQuery.setText("hangzhou");SearchQuery searchQuery = new SearchQuery();{/*** 构造一个BoolQuery,设置查询条件为必须同时满足"查询条件一"和"查询条件二"。*/BoolQuery boolQuery = new BoolQuery();boolQuery.setMustQueries(Arrays.asList(rangeQuery, matchQuery));searchQuery.setQuery(boolQuery);//searchQuery.setGetTotalCount(true);//设置返回匹配的总行数。SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);//通过设置columnsToGet参数可以指定返回的列或返回所有列,如果不设置此参数,则默认只返回主键列。//SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();//columnsToGet.setReturnAll(true); //设置为返回所有列。//columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); //设置为返回指定列。//searchRequest.setColumnsToGet(columnsToGet);SearchResponse resp = client.search(searchRequest);//System.out.println("TotalCount: " + resp.getTotalCount()); //打印匹配到的总行数,非返回行数。System.out.println("Row: " + resp.getRows());}
}
没办法,作为一名忠实的mybatis-plus的粉丝,不得不借鉴一下mybatis-plus的某些特性,做了一个OtsQueryWrapper。
下面是一段经过封装后的ots查询代码
OtsQueryWrapper<UserInfo> wrapper = new OtsQueryWrapper<>();
wrapper.eq(UserInfo::getUserName,"张三");
wrapper.like(UserInfo::getPhone,"123940313");OtsQuery query = new OtsQuery();
query.setPageSize(10);
List<UserInfo> userInfos = OtsClient.queryPage(wrapper, "user_info", "user_info_index", "id", query,UserInfo.class, "");
是不是感觉又回到了mybatis-plus的世界哈哈
代码地址:ots-boot-starter: 阿里云OTS表格存储多元索引查询组件,可以像mybatis-plus一样做到轻松的wrapper封装查询