Spring Boot REST API with CrudRepository: Product CRUD and Query Methods

Technology2.65 KB

ProductDAO Interface

public 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);

}

}

*/

Download

PDF Word HTML