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


相关推荐

  • idea 2021.12激活-激活码分享

    (idea 2021.12激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    105
  • html发布页,发布页入口.html

    html发布页,发布页入口.html发布页入口$axure.utils.getTransparentGifPath=function(){return’resources/images/transparent.gif’;};$axure.utils.getOtherPath=function(){return’resources/Other.html’;};$axure.utils.getReloadPat…

    2022年5月26日
    121
  • idea打包jar文件_idea如何打包jar外部包

    idea打包jar文件_idea如何打包jar外部包文章目录项目打包-贪吃蛇为例一.打包为jar1.打开结构2.添加结构3.选择4.设置参数5.添加依赖6.设置完成点击apply后,点击ok7.回到代码页面点击build8.选择建立9.目录会生成所需的包文件10.在文件夹里打开11.在cmd里运行jar即可运行12.在输入java-jarsnake.jar即可运行项目打包-贪吃蛇为例一.打包为jar1.打开结构2.添加结构3.选择因为有好多项目,所以这里需要建立空,如果只有一个目的项目,可以选择根据这个依赖,选择下面一项。4.

    2026年4月17日
    7
  • linux移植ntpdate「建议收藏」

    linux移植ntpdate「建议收藏」今天想让板子在开机的时候自动去同步网络上的时间,网上查了一下,需要使用到ntpdate命令。但是我使用的文件系统(busybox制作的文件系统)没有该命令,所以移植了一下。由于移植ntpdate需要用到openssl的头文件和库,所以也移植了openssl。PC系统:UbuntuUbuntu12.04.4LTS1.创建工作目录1mkdirc

    2026年3月8日
    3
  • BHO开发list

    BHO开发listC 写的一个 skeleten https github com adatta02 ie extension skeleten 这篇文章不错 http www codeproject com Articles 19971 How to attach to Browser Helper Object BHO with C

    2026年3月18日
    2
  • Windows Server 2012修改光驱盘符

    Windows Server 2012修改光驱盘符WindowsServer2012修改光驱盘符,可通过下面的步骤完成:windows+R,输入diskmgmt.msc这时可以看到我们熟悉的磁盘管理界面:右击盘符,选择“更改驱动器号和路径”或“ChangeDriveLetterandPaths”。修改盘符: 转载于:https://blog.51cto.com/sincano/1880125…

    2022年5月26日
    54

发表回复

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

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