【发布时间】:2019-05-01 16:54:57
【问题描述】:
我使用 reactjs 作为前端,使用 spring boot 作为后端。我正在使用弹簧数据 jpa。
这是我的困境.. 我知道我编写逻辑的方式效率低下,并且想知道和理解解决问题的更好方法。
假设数据库中有数千条记录,我需要不断地立即检索它们(如果可能的话)
我在 UI 中有 2 个字段。一个是String,一个是Integer。
名称(字符串)SomeKindOfId(整数) ------------- --------------------
只有在名称字段和/或 SomeKindOfId 字段中输入 3 个字符后,我才必须过滤记录。
我怎样才能有效地做到这一点?
目前,我有
findAllByNameAndSomeKindOfId("%"+name+"%","%"+String.valueOf(SomeKindOfId)+"%")
服务中
存储库类中类似的东西
Query("Select u from SomeTable u where u.name = :name and CAST(u.someKindOfId As string) like :someKindOfId")
List<CdoDimStPortfolio> findAllByEntityStatusAndDealName(@Param("name") String name,
@Param("someKindOfId") String someKindOfId);
我使用强制转换的原因是因为我在数据库中有 someKindOfId 作为 int
【问题讨论】:
-
这对我来说很好(除了
= :name应该是like :name)。如果这还不够高效,并且您的 DBA 无法优化查询,那么您将需要使用关系数据库以外的其他东西,该数据库专为快速搜索而设计。 -
谢谢@JBNizet。但是,[like :name] 会给我错误。
标签: java reactjs spring-boot spring-data-jpa