Spring Boot REST API with CrudRepository: Product CRUD and Query Methods
ProductDAO Interfacepublic interface ProductDAO extends CrudRepository<Product, Long> { public List<Product> findAll(); public List<Product> findByCategory(String category); public List<Product> findByCategoryAndUnits(String category, Integer units); @Query("Select p from Product p where p.category = :pcategory and p.units >= :punits") public List<Product> queryCatandUnits(@Param("pcategory") String category, @Param("punits") Integer units); } MyController Class@Controller public class MyController { @Autowired ProductDAO daoPr; CRUD Operations@RequestMapping(method = RequestMethod.POST, value="/products") public @ResponseBody Product saveProduct(@RequestBody Product pProduct) { return daoPr.save(pProduct); } @RequestMapping(method = RequestMethod.GET, value="/products") public @ResponseBody List<Product> getProducts() { return daoPr.findAll(); | } @RequestMapping(method = RequestMethod.DELETE, value="/products/{id}") public @ResponseBody void deleteProduct(@PathVariable Long id) { daoPr.delete(id); } @RequestMapping(method = RequestMethod.PUT, value="/products/{id}") public @ResponseBody Product updateProduct(@PathVariable Long id, @RequestBody Product pProduct) { Product product = daoPr.findOne(id); product.setName(pProduct.getName()); product.setCategory(pProduct.getCategory()); product.setUnits(pProduct.getUnits()); return daoPr.save(product); } Category Queries@RequestMapping(method = RequestMethod.GET, value="/categories/{cat}") public @ResponseBody List<Product> getByCategory(@PathVariable String cat) { return daoPr.findByCategory(cat); } |
@RequestMapping(method = RequestMethod.GET, value="/categories/{cat}/{units}") public @ResponseBody List<Product> getByCategoryAndUnits(@PathVariable String cat, @PathVariable Integer units) { return daoPr.findByCategoryAndUnits(cat, units); } /* @RequestMapping(method = RequestMethod.GET, value="/categorunit/{cat}") public @ResponseBody List<Product> getByCategoryAndUnits(@PathVariable String cat, @RequestParam(value="units", required=false) Integer units) { if (units != null) { return daoPr.findByCategory(cat); } else { return daoPr.queryCatandUnits(cat, units); } } */ |