springboot~jpa个性化数据操作接口[通俗易懂]

springboot~jpa个性化数据操作接口[通俗易懂]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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107387.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月20日 上午11:20
下一篇 2022年4月20日 上午11:40


相关推荐

  • 尚硅谷2026年AI大模型智能体线上速成班教程资料

    尚硅谷2026年AI大模型智能体线上速成班教程资料

    2026年3月15日
    2
  • Delphi 语言「建议收藏」

    Delphi 语言「建议收藏」自1995年Borland公司发布Delphi1.0以来,Delphi受到很多开发者的亲睐,到1999年发布Delphi5,Delphi以其开发快捷、控件丰富、易于上手等优势吸引了众多的开发者,用户

    2022年8月2日
    7
  • leetcode Reverse Nodes in k-Group

    leetcode Reverse Nodes in k-Group

    2022年1月5日
    40
  • STM32 BootLoader升级固件

    STM32 BootLoader升级固件BootLoader 关于 Bootloader 从书上的文字描述 很难理解这个名词是什么 有什么用 这次用到了 算是有了更进一步的认识 一 知识点 1 BootLoader 就是单片机启动时候运行的一段小程序 这段程序负责单片机固件的更新 也就是单片机选择性的自己给自己下程序 可以更新 也可以不更新 更新的话 BootLoader 更新完程序后 跳转到新程序运行 不更新的话 BootLoader 直接跳转到

    2026年3月18日
    2
  • linux下的删除文件命令,Linux下删除文件命令「建议收藏」

    linux下的删除文件命令,Linux下删除文件命令「建议收藏」在linux中删除文件与文件夹我们可以直接使用rm就可以删除了,彻底删除文件或文件夹我们可以使用shred命令来完成,接下来是小编为大家收集的Linux下删除文件命令,希望能帮到大家。Linux下删除文件命令linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm-rf命令即可。直接rm就可以了,不过要加两个参数-rf即:rm-rf目录名字…

    2022年7月26日
    8
  • ideaj 2021 激活码_在线激活

    (ideaj 2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~3S9X…

    2022年3月30日
    96

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号