jap把不少数据库访问都封装了,而且提交了默认的一切数据方法签名的约定,你们按着约定走,能够不写SQL语句,而若是比较复杂的状况,也须要写SQL,这里咱们介绍一下查询和修改的实例方法,有一点要注意,==仓储的写操做是没有返回值==的。java
/** * 产品个性化接口. */ @Repository public interface ProductDetailRepository extends CrudRepository<ProductDetail, Integer>, PagingAndSortingRepository<ProductDetail, Integer> { @Query("select p from ProductDetail p where UPPER(p.productName) like UPPER(?1)") List search(String term); @Transactional @Modifying @Query("UPDATE ProductDetail p SET p.shortDescription = ?2 WHERE p.productId = ?1") void updateDescrption(int id, String description); }
@RestController @RequestMapping("/products") public class ProductDetailController { private final ProductDetailRepository repository; private final ObjectMapper objectMapper; @Autowired public ProductDetailController(ProductDetailRepository repository, ObjectMapper objectMapper) { this.repository = repository; this.objectMapper = objectMapper; } @PutMapping("{id}") public HttpEntity search(@PathVariable int id, @RequestParam("q") String des) { repository.updateDescrption(id, des); return new ResponseEntity<>(HttpStatus.ACCEPTED); } }
org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations