• springboot~jpa个性化数据操作接口


    jap是个全能仓储

    jap把很多数据库访问都封装了,并且提交了默认的一切数据方法签名的约定,大家按着约定走,可以不写SQL语句,而如果比较复杂的情况,也需要写SQL,这里我们介绍一下查询和修改的实例方法,有一点要注意,仓储的写操作是没有返回值的。

    • 商品仓储个性接口
    /**
     * 产品个性化接口.
     */
    @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);
    }
    
    • controller中可以直接调用它,当前IOC这块于spring框架为我们实现了,直接使用注解即可
    @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);
    
      }
    }
    
    • 对于使用@Query实现写操作时,需要注释以下几点
    1. 方法返回值必须是void
    2. 必须添加 @Transactional和@Modifying注解
    3. SQL代码里表名和字段名都是 java里的实体名,而不是数据库的
    • 如果不遵循约定,它将出现下面的异常!
      org.hibernate.hql.internal.QueryExecutionRequestException: Not supported for DML operations
  • 相关阅读:
    JAVA规范
    JMS开发指南
    JMS异步消息机制
    大型系统中使用JMS优化技巧–Sun OpenMQ
    02.MyBatis配置文件详解
    elasticsearch.yml配置文件
    04.ActiveMQ与Spring JMS整合
    01.MyBatis入门
    03.JMS深入
    02.JMS基础
  • 原文地址:https://www.cnblogs.com/lori/p/9402808.html
Copyright © 2020-2023  润新知