我有REST API工作,但我需要一种方法来返回某个类别中的所有产品。现在我通过传递类别ID并使用非常通用查询来使用 findSearchResultsByCategoryAndQuery 来获取该类别中的几乎所有产品。我真正需要的是一个名为findAllProductsForCategory的方法,它返回该类别中的所有产品。
我是Broadleaf和REST API的新手,有人可以指导我如何扩展CatalogEndpoint以获得我需要的功能。
答案 0 :(得分:1)
虽然broadleaf提供了SQL注入保护(ExploitProtectionServiceImpl),但我建议您使用ProductDao。
@Resource("blProductDao")
private ProductDao productDao;
@RequestMapping(value = "search/products-by-category/{categoryId}") //GET is by default
public List<Product> findSearchResultsByCategory(HttpServletRequest request, @PathVariable("categoryId") Long categoryId {
return productDao.readProductsByCategory(categoryId);
}
SELECT categoryProduct.product_id
FROM BLC_CATEGORY_PRODUCT_XREF categoryProduct
WHERE categoryProduct.category_id = :categoryId
ORDER BY COALESCE (categoryProduct.display_order,999999)
public class MyProductDaoImpl extends ProductDaoImpl implements MyProductDao {
public static final String QUERY = "SELECT categoryProduct.product_id " +
"FROM BLC_CATEGORY_PRODUCT_XREF categoryProduct " +
"WHERE categoryProduct.category_id = :categoryId";
@Override
public List<Product> meFindingProductsByCategory(String categoryId) {
Query query = em.createQuery(QUERY);
query.setParameter("categoryId", categoryId);
return query.getResultList();
}
}