使用spring data jpa从db过滤和检索数据

时间:2019-05-01 16:54:57

标签: java reactjs spring-boot spring-data-jpa

我将reactjs用作前端,并将spring boot用作后端。我正在使用Spring Data JPA。

这是我的两难选择。我知道编写逻辑的方式效率很低,并且想知道和理解解决此问题的更好方法。

让我们说数据库中有成千上万条记录,我需要不断地,即时地(如果可能)检索它们

我在UI中有2个字段。一个是String,另一个是Integer。

名称(字符串)SomeKindOfId(整数) ------------- -------------------

仅在“名称”字段和/或“ SomeKindOfId”字段中输入3个字符后,我才需要过滤记录。

我如何有效地做到这一点?

当前,我有

  

findAllByNameAndSomeKindOfId(“%” +名称+“%”,“%” + 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);

我使用强制转换的原因是因为我在数据库中有一些int值

1 个答案:

答案 0 :(得分:1)

进行有效数据库查询的最佳方法是根据要搜索的值创建索引。

您可以创建索引“ name”和“ someKindOfId”,并且将立即搜索这些值,因为就像在书本中一样,如果您逐页搜索章节,则花费的时间将比您转到索引并搜索它。

例如Postgresql:

https://www.postgresql.org/docs/9.1/sql-createindex.html

  

CREATE INDEX在指定表的指定列上构造一个索引。索引主要用于增强数据库性能