【问题标题】:GenericDao on Datastax java driver 4Datastax java驱动程序4上的GenericDao
【发布时间】:2020-05-06 00:26:43
【问题描述】:

v4 java 驱动程序是否可以使用以下 GenericDao 方法?怎么样?

public static <T> List<?> retrieve(Class<?> clazz, BoundStatement boundStatement) throws Exception {

        List<?> tList = new ArrayList<>();
        Result<?> result = null;
        MappingManager manager = null;

        Session session = CassandraUtil.getSession();

        ResultSet resultSet = session.execute(boundStatement);

        int totRows = resultSet.getAvailableWithoutFetching();

        if (totRows > 0) {

            manager = new MappingManager(session);
            Mapper<?> m = manager.mapper(clazz);
            result = (Result<?>) m.map(resultSet);
            tList = result.all();
        }

        return tList;
    }

这种方法通过在整个应用程序中使用 GenericDao 提供了巨大的生产力。

我正在评估迁移到 Java 驱动程序 V4 的更改,但我碰壁了,因为似乎不可能对 Java 驱动程序 V4 做同样的事情。

谢谢

IPVP

【问题讨论】:

    标签: java cassandra datastax-java-driver


    【解决方案1】:

    您可以使用@GetEntity annotation on DAORow 对象转换为您的POJO。您还可以将ResultSet 转换为 POJO、POJO 的可迭代等 - 取决于函数的返回值。以下是文档中的示例:

    @Dao
    public interface ProductDao {
      @GetEntity
      Product asProduct(Row row);
    
      @GetEntity
      PagingIterable<Product> asProducts(ResultSet resultSet);
    
      // ...
    }
    

    有关详细信息,请参阅文档。

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 2016-11-29
      • 1970-01-01
      • 2018-02-15
      • 2017-07-13
      • 2014-05-04
      • 2014-04-24
      • 1970-01-01
      • 2016-06-30
      相关资源
      最近更新 更多