Spring Cloud 按约定查询方法
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”短语。
Like
或NotLike
命名约定:
List<Trade> findBySymbolLike(String symbolFragment);
参数symbolFragment
可以包含用于字符串匹配的通配符
,例如_
和%
。
Contains
和NotContains
命名约定:
List<Trade> findBySymbolContains(String symbolFragment);
参数symbolFragment
是一个正则表达式,将对其进行检查。
还支持删除查询。例如,诸如deleteByAction
或removeByAction
之类的查询方法会删除findByAction
找到的实体。删除操作发生在单个事务中。
删除查询可以具有以下返回类型:*整数类型,它是删除的实体数*删除的实体的集合* void
更多建议: