首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Cassandra java client 查询结果集封装

cassandra 简述

Apache Cassandra 是一种分布式非关系型数据库,具有高性能、可扩展、无中心化等特征。

一种column-based数据库。

Cassandra所支持的基本数据模型。这些基本数据模型有:Column,Super Column,Column Family以及Keyspace。

依赖

Java 查询

使用java 的客户端查询 cassandra 时,返回值结构解析比较麻烦,故此封装了一个工具。

根据返回值信息中的列的信息,生成列与类型的关系。queryColumns()

根据传入的Java Bean 返回 数据集。

/**

* 获取结果集

* @param session session

* @param bindStatement 查询的语句

* @param clazz 返回类型

* @return list

*/

public static List covertResult(Session session, BoundStatement bindStatement,

Class clazz) {

List result = new ArrayList();

ResultSet execute = session.execute(bindStatement);

Map columns = queryColumns(execute);

log.info("查询结果的列信息--->{}", columns);

for (Row row : execute) {

JSONObject json = new JSONObject();

columns.forEach((k, v) -> {

log.info("------------>{}", k);

if (columns.get(k).contains("timestamp")) {

if (row.getObject(k) != null) {

json.put(k, ((Date) row.getObject(k)).getTime());

}

} else {

json.put(k, row.getObject(k));

}

});

log.info("---------------->{}", json.toJSONString());

result.add(json);

}

return result.stream().map(m -> JSON.toJavaObject(m, clazz)).collect(Collectors.toList());

}

/**

* 查询数据表字段名(key:字段名,value:字段类型名)

* @param rs ResultSet

* @return map

*/

public static Map queryColumns(ResultSet rs) {

try {

ColumnDefinitions rscd = rs.getColumnDefinitions();

int count = rscd.size();

HashMap reflect = Maps.newHashMap();

for (int i = 0; i < count; i++) {

String column = rscd.getName(i);

String type = rscd.getType(i).getName().name().toLowerCase();

reflect.put(column, type);

}

return reflect;

} catch (Exception e) {

log.error("获取 column 信息失败");

}

return Maps.newHashMap();

}

总结

如果感觉文章有帮助,请关注下吆。有问题可以留言。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200612A0CH2G00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券