Spring认证中国教育管理中心-Apache Cassandra 的 Spring 数据教程五

9.11.准备好的报表

可以将多次执行的 CQL 语句准备好并存储在一个PreparedStatement对象中,以提高查询性能。驱动程序和 Cassandra 都维护着PreparedStatement查询到其元数据的映射。您可以通过以下抽象使用准备好的语句:

  • CqlTemplate 通过API的选择
  • CassandraTemplate 通过启用准备好的语句
  • Cassandra 存储库,因为它们建立在 CassandraTemplate

9.11.1.使用CqlTemplate

的CqlTemplate类(及其异步和反应性变体)提供的各种方法接受静态CQL,Statement对象和PreparedStatementCreator。接受没有附加参数的静态 CQL 的方法通常按原样运行 CQL 语句,无需进一步处理。接受静态 CQL 与参数数组(例如execute(String cql, Object… args)和queryForRows(String cql, Object…​ args))组合的方法使用准备好的语句。在内部,这些方法创建一个PreparedStatementCreator和PreparedStatementBinder对象来准备语句,然后将值绑定到语句以运行它。Spring Data Cassandra 通常对准备好的语句使用基于索引的参数绑定。

从 Cassandra 驱动程序版本 4 开始,准备好的语句缓存在驱动程序级别,从而无需跟踪应用程序中的准备好的语句。

以下示例显示如何使用参数化的预准备语句发出查询:

String lastName = cqlTemplate.queryForObject(
    "SELECT last_name FROM t_actor WHERE id = ?",
    String.class, 1212L);

如果您需要对语句准备和参数绑定进行更多控制(例如,使用命名绑定参数),您可以通过使用PreparedStatementCreator和PreparedStatementBinder参数调用查询方法来完全控制准备好的语句创建和参数绑定:

List<String> lastNames = cqlTemplate.query(
    session -> session.prepare("SELECT last_name FROM t_actor WHERE id = ?"),
    ps -> ps.bind(1212L),
    (row, rowNum) -> row.getString(0));

Spring Data Cassandra 在cql包中附带了支持该模式的类:

  • SimplePreparedStatementCreator - 创建准备好的语句的实用程序类。
  • ArgumentPreparedStatementBinder - 将参数绑定到准备好的语句的实用程序类。

9.11.2.使用CassandraTemplate

该CassandraTemplate班是建立在顶部CqlTemplate,以提供更高的抽象水平。可以CassandraTemplate通过调用setUsePreparedStatements(false)相应的setUseP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技能咖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值