【问题标题】:Spring search function returning full list when nothing is searched当没有搜索任何内容时,Spring搜索功能返回完整列表
【发布时间】:2020-06-27 16:51:47
【问题描述】:

在我的 spring 应用程序中,我添加了一个搜索功能,用户可以在其中搜索数据库中的名称,它可以工作,除非我搜索名称或类似名称,但是当我不输入任何内容并搜索时,它应该只返回完整的名称列表。

如果列表为null,我将列表设置为返回null,我的逻辑有什么缺陷?

从测试和使用 findbyname SQL 我认为这是我的 SQL 状态中的一个缺陷

使用的控制器方法是

@RequestMapping("search")
public ModelAndView SearchBeers(@RequestParam("searchTerm") String searchTerm) {

    return new ModelAndView("/Searchbeers", "beerList", service.Search(searchTerm));

}

调用的服务方法是

 public List<Beers> Search(String searchTerm) {
    EntityManager em = DBUtil.getEMF().createEntityManager();
    List<Beers> list = null;

    try {
        list = em.createNamedQuery("Beers.findByLikeName", Beers.class)
                .setParameter("name", searchTerm)
                .getResultList();
        if (list == null || list.isEmpty()) {
            list = null;
        }

    } finally {
        em.close();
    }
    return list;
}

而使用的SQL语句是

@NamedQuery(name = "Beers.findByLikeName", query = "SELECT b FROM Beers b WHERE b.name LIKE CONCAT('%',:name,'%')")

显示列表时的 JSP 是

   <c:forEach items="${beerList}" var="beer"> 
            <tr>
                <td>${beer.id}</td>
                <td>${beer.name}</td>
                <td>${beer.abv}</td>


                <td>
                    <form action="/Assignment3/beer/viewBeer">
                        <input type="hidden" name="id" value="${beer.id}"/>
                        <input type="submit" value="<spring:message code="label.viewDetails"/>"/>
                    </form>
                </td>

            </tr>
        </c:forEach>

【问题讨论】:

    标签: java sql spring jsp


    【解决方案1】:

    你有很多方法可以解决这个问题,但问题是,当字符串为空时,你的查询是:

    SELECT b from Beers b Where b.name LIKE '%%'
    

    所以,当有一个空字符串时,你需要做另一个标志,因为 ... LIKE '%%' 找到每个名字。

    PD:返回 null 不是一个好习惯,最好是一个空列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多