对于 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);
这里注意query
是org.springframework.data.relational.core.query.Query
的静态方法
【讨论】:
以上是关于对于 r2bc 中的 where 子句,我们是不是可以简写方式来计算 db 中存在的行数的主要内容,如果未能解决你的问题,请参考以下文章
ORA-01839“日期对于指定的月份无效”对于 where 子句中的 to_date
使用 DB2 SQL,对于不属于我的 where 子句的条件,如何避免返回不是最新的行?