对于 r2bc 中的 where 子句,我们是不是可以简写方式来计算 db 中存在的行数

Posted

技术标签:

【中文标题】对于 r2bc 中的 where 子句,我们是不是可以简写方式来计算 db 中存在的行数【英文标题】:do we a shorthand to get a count of number of rows are present in db with respect to a where clause in r2bc对于 r2bc 中的 where 子句,我们是否可以简写方式来计算 db 中存在的行数 【发布时间】:2020-10-27 16:59:44 【问题描述】:

“是否存在数据库中没有 .of 行对 where 条件的简写” 如果我们有一个标准定义,需要数据库中存在的行数。 是 r2dbc 中的任何功能吗?

【问题讨论】:

既然是关于执行 SQL,那么执行SELECT COUNT(*) FROM YOUR_TABLE WHERE <YOUR-CONDITION> 有什么问题呢?为什么这里会有所不同? 建立的条件是动态的,它取决于填充在我的标准定义对象中的字段 所以?是什么阻止您执行动态查询?如果可以执行查询,也可以执行计数查询。 我们如何从 CriteriaObject 创建查询,方法 execute() 需要一个字符串 就像我们在 r2dbc 中有 select()、insert() 方法一样,我们也有计数方法 【参考方案1】:

你可以有这样的东西:

@Repository
public class MyCustomRepositoryImpl 

  private final R2dbcEntityTemplate r2dbcEntityTemplate;

  @Autowired
  public MyCustomRepositoryImpl(DatabaseClient databaseClient) 
    this.r2dbcEntityTemplate = new R2dbcEntityTemplate(databaseClient);
  

  public Mono<Long> getCountOfAllRows() 
    return r2dbcEntityTemplate.count(query(Criteria.empty()),MyEntity.class);
  

  public Mono<Long> getCountOfRowsForACondition(String myVal) 
    return r2dbcEntityTemplate.select(query(Criteria.where("mycolumn").is(myVal)),MyEntity.class);
  


这里注意queryorg.springframework.data.relational.core.query.Query的静态方法

【讨论】:

以上是关于对于 r2bc 中的 where 子句,我们是不是可以简写方式来计算 db 中存在的行数的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01839“日期对于指定的月份无效”对于 where 子句中的 to_date

使用 DB2 SQL,对于不属于我的 where 子句的条件,如何避免返回不是最新的行?

调用视图的查询中的 where 子句是不是会影响视图本身的过滤器?

在oracle中where 子句和having子句中的区别

mysql语句where条件中的是啥意思

MYSQL SELECT:如何获取一个额外的列,指示是不是满足 WHERE 子句中的第一个或第二个条件?