【问题标题】:Searching for data from database does not search the term in java?从数据库中搜索数据不搜索java中的术语?
【发布时间】:2019-06-13 17:12:08
【问题描述】:

所以,我的问题是我有一个正在创建的 api,我正在从数据库中获取数据。因此,当我执行 GET localhost:8080/myapp/jobs?autocomplete=0120 时(其中 0120 是显示该数据的作业代码的完整值,它确实显示了该数据)。但是,当我执行localhost:8080/myapp/jobs?autocomplete=012 时,它不会显示012 在json 中显示的数据。谁能帮我用下面的代码解决这个问题。谢谢!

  @RequestMapping(value = "/jobs")
    public List<AutoComplete> getSalary( @PathVariable("autocomplete") String autocomplete, @RequestParam(value = "jobClassCd", defaultValue = "1502") String jobClassCd) {

        return autoCompleteService.retrieveSalary(jobClassCd);
    }

【问题讨论】:

  • 012 和 0120 是否相似?
  • 是的。但是,你明白我想要完成什么,对吧?
  • 我认为您希望 012 获得与 0120 相同的结果。我说的对吗?
  • 是的。但是,即使我搜索 012,也要尝试查找从 012 开始的值以列出它们。就像前端的自动完成搜索输入一样。
  • 为什么不尝试更改查询并使用 Like 查询。

标签: java request-mapping http-request-parameters


【解决方案1】:

我认为您最好的选择是编写一个类似的查询

select * from AutoComplete where jobClassCd like 012%

如下更改您的存储库方法。

@Repository 
public interface AutoCompleteRepository extends CrudRepository<AutoComplete, String> { 

    @Query("select e from AutoComplete e where jobClassCd like ':jobClassCd%'") 
    List<AutoComplete> findByJobClassCd(@Param("jobClassCd") String jobClassCd); 


    @Query("select e from AutoComplete e") 
    public Stream<AutoComplete> streamAll(); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2016-03-22
    • 2019-01-08
    • 2012-11-29
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多