如何在Spring Boot中从实体中输入关键字搜索产品?



我正在使用Spring Boot作为后端开发电子商务web应用程序。在索引页上有一个搜索框。从那里,当用户访问我的应用程序并试图通过在搜索框中输入任何关键字来搜索某些产品时。因此,如果输入的关键字与实体匹配,则显示匹配的关键字结果列表,如果不匹配,则显示任何错误消息。因此,从输入的关键字中有类别,标签,子类别,产品实体应该匹配并返回JSON响应到前端。

下面是我的控制器返回输入关键字响应:

public ResponseEntity<?> searchbykeyword(HttpServletRequest request, @RequestParam("keyword") String keyword) {
logger.info("Global search function is calling !!!");
CustomResponse = ResponseFactory.getResponse(request);
try {
List<Product> text = null;
List<Category> category = null;
List<Tag> tag = null;
List<Subcategory> subcategory = null;
if(keyword != null) {
System.out.println("Entered keyword is : || "+keyword);
category = categoryDao.findByNameContains(keyword);

tag = tagDao.findByNameContains(keyword);

subcategory = subcategoryDao.findByNameContains(keyword);

text = productdao.findByPrductnameContainsOrDescriptivenameContainsOrFlavorContainsOrCategoryOrTagOrSubcategory(keyword, keyword, keyword, category, tag, subcategory);
}
if (text != null) {
CustomResponse.setResponse(text);
CustomResponse.setStatus(CustomStatus.OK);
CustomResponse.setStatusCode(CustomStatus.OK_CODE);
CustomResponse.setResponseMessage(CustomStatus.SuccessMsg);
}
} catch (Exception e) {
e.printStackTrace();
CustomResponse.setResponse(null);
CustomResponse.setStatus(CustomStatus.Error);
CustomResponse.setStatusCode(CustomStatus.Error_CODE);
CustomResponse.setResponseMessage(CustomStatus.ErrorMsg);
}
return new ResponseEntity<ResponseDao>(CustomResponse, HttpStatus.OK);
}

上面的代码没有按预期工作。我也想弄清楚,但没有成功。如果你有任何想法或建议,那将对我很有帮助。

我修改了下面的代码:

@RequestMapping(value = AkApiUrl.searchbykeyword, method = { RequestMethod.POST, RequestMethod.GET }, produces = { MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<?> searchbykeyword(HttpServletRequest request, HttpSession session, @RequestParam("keyword") String keyword) {
logger.info("Global search function is calling !!!");
CustomResponse = ResponseFactory.getResponse(request);

try {
List<MappedCity> product = null;
List<Product> text = null;
List<Category> category = null;
List<Tag> tag = null;
List<Subcategory> subcategory = null;
if(keyword != null) {
category = categoryDao.findByNameContainingIgnoreCase(keyword);
tag = tagDao.findByNameContainingIgnoreCase(keyword);
subcategory = subcategoryDao.findByNameContainingIgnoreCase(keyword);
text = productdao.findByPrductnameContainsIgnoreCaseOrDescriptivenameContainsIgnoreCaseOrFlavorContainsIgnoreCaseOrCategoryInOrTagInOrSubcategoryIn(keyword, keyword, keyword,category,tag,subcategory);
product = mappedcitydao.findTop5ByProductInAndStatusOrderByCreateddatetimeDesc(text, 1);
}
if (product != null) {
CustomResponse.setResponse(product);
CustomResponse.setStatus(CustomStatus.OK);
CustomResponse.setStatusCode(CustomStatus.OK_CODE);
CustomResponse.setResponseMessage(CustomStatus.SuccessMsg);
}
} catch (Exception e) {
e.printStackTrace();
CustomResponse.setResponse(null);
CustomResponse.setStatus(CustomStatus.Error);
CustomResponse.setStatusCode(CustomStatus.Error_CODE);
CustomResponse.setResponseMessage(CustomStatus.ErrorMsg);
}
return new ResponseEntity<ResponseDao>(CustomResponse, HttpStatus.OK);
}

最新更新