You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataStax Java Driver 4.14中为DAO/Mapper全局设置一致性级别

在DataStax Java Driver 4.14中全局设置DAO/Mapper的一致性级别

在4.14版本中,你可以通过以下两种方式实现全局设置,避免在每个DAO方法中重复指定一致性级别:

1. 为整个Mapper设置全局默认属性

通过MapperBuilder的withDefaultStatementAttributes方法,可为该Mapper生成的所有DAO统一配置默认的Statement属性(包括一致性级别)。

修改后的Mapper创建代码:

// 初始化Mapper时配置全局默认一致性级别
AppTrackingMapper mapper = new AppTrackingMapperBuilder(session)
    .withDefaultStatementAttributes(builder -> 
        builder.setConsistencyLevel(DefaultConsistencyLevel.valueOf(consistencyLevel))
    )
    .build();

简化DAO方法:

无需再在DAO方法中传入Function<BoundStatementBuilder, BoundStatementBuilder>参数:

@Select
PagingIterable<AppTrackingEvent> findBySessionId(final UUID sessionId);

Repository层调用简化:

public List<AppTrackingEvent> getBySessionId(final UUID sessionId) {
    return this.mapper.getAppTrackingDao().findBySessionId(sessionId).all();
}

2. 为单个DAO独立设置默认属性

如果仅需为某个特定DAO配置全局一致性级别,而非整个Mapper,可直接使用DaoBuilder创建DAO实例并设置默认属性:

// 单独为AppTrackingDao配置默认一致性级别
AppTrackingDao appTrackingDao = new AppTrackingDaoBuilder(session)
    .withDefaultStatementAttributes(builder -> 
        builder.setConsistencyLevel(DefaultConsistencyLevel.valueOf(consistencyLevel))
    )
    .build();

这种方式下,该DAO的所有方法都会自动应用指定的一致性级别,无需在调用时重复设置。

说明

这两种方式替代了旧版本中Mapper.Option.consistencyLevel()的用法,是4.x版本中标准化的全局属性配置方案,完全适配4.14版本的API。

内容的提问来源于stack exchange,提问作者Vladimir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:20:04