Spring Cloud 按约定查询方法

2024-01-11 15:06 更新
public interface TradeRepository extends SpannerRepository<Trade, String[]> {
    List<Trade> findByAction(String action);

	int countByAction(String action);

	// Named methods are powerful, but can get unwieldy
	List<Trade> findTop3DistinctByActionAndSymbolIgnoreCaseOrTraderIdOrderBySymbolDesc(
  			String action, String symbol, String traderId);
}

在上面的示例中,使用Spring Data查询创建命名约定 ,根据方法的名称在TradeRepository中生成查询方法

List<Trade> findByAction(String action)将转换为SELECT * FROM trades WHERE action = ?

函数List<Trade> findTop3DistinctByActionAndSymbolIgnoreCaseOrTraderIdOrderBySymbolDesc(String action, String symbol, String traderId);将被翻译为以下SQL查询的等效项:

SELECT DISTINCT * FROM trades
WHERE ACTION = ? AND LOWER(SYMBOL) = LOWER(?) AND TRADER_ID = ?
ORDER BY SYMBOL DESC
LIMIT 3

支持以下过滤器选项:

  • 平等
  • 大于或等于
  • 比...更棒
  • 小于或等于
  • 少于
  • 一片空白
  • 不为空
  • 是真的
  • 是假的
  • 像弦一样
  • 不像字符串
  • 包含一个字符串
  • 不包含字符串

请注意,短语SymbolIgnoreCase被翻译为LOWER(SYMBOL) = LOWER(?),表示不区分大小写。IgnoreCase短语只能附加到与STRING或BYTES类型的列相对应的字段中。 不支持在方法名称末尾附加的Spring Data“ AllIgnoreCase”短语。

LikeNotLike命名约定:

List<Trade> findBySymbolLike(String symbolFragment);

参数symbolFragment可以包含用于字符串匹配的通配符 ,例如_%

ContainsNotContains命名约定:

List<Trade> findBySymbolContains(String symbolFragment);

参数symbolFragment是一个正则表达式,将对其进行检查。

还支持删除查询。例如,诸如deleteByActionremoveByAction之类的查询方法会删除findByAction找到的实体。删除操作发生在单个事务中。

删除查询可以具有以下返回类型:*整数类型,它是删除的实体数*删除的实体的集合* void

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号