当前位置: 首页 > 网络应用技术

[Springdata&JPA从入口到熟练程度] 02-springdata- @q @modifying

时间:2023-03-06 11:30:07 网络应用技术

  注释来源:SpringData教程(Springdata Classic,Spring数据迅速启动)

  可以宣布此查询以摆脱存储库方法中的名称查询之类的约束,并在相应的接口方法中直接声明查询。结构更清晰。这是弹簧数据的特定实现。

  测试方法

  人格阶级类

  测试课

  日志信息

  结论:使用注释可以自定义JPQL语句以实现更灵活的查询

  索引参数索引参数如下所示。索引值从1开始。查询中的“?x”的数量必须与该方法定义的参数数保持一致,并且顺序必须一致

  命名参数命名参数(建议使用此方法):可以定义参数名称,分配时使用它,而不是订购

  测试方法1

  人格阶级类

  测试课

  日志信息

  测试方法2

  人格阶级类

  测试课

  日志信息

  如果其中有关键字,则需要在前面或后面添加背面的参数,因此在传递值时无法添加它:

  正确而模糊

  左边

  完全模糊

  测试方法1

  人格阶级类

  测试课

  日志信息

  测试方法2

  人格阶级类

  测试课

  日志信息

  您也可以使用以下方式指定本地查询,例如:

  测试方法

  人格阶级类

  测试课

  日志信息

  与这两个一起,它可以定义个性化更新操作。例如,只有当它涉及一些字段更新时最常用的一种。示例如下:

  注意:

  测试方法1

  没有评论会发生什么?

  人格阶级类

  测试课

  日志信息

  错误被丢弃了例外,提示查询不支持DML更新操作

  测试方法2

  如果您只添加注释会发生什么?

  人格统计课程:唯一的区别是添加注释

  日志信息

  错误抛出异常,表明更新或删除操作必须具有事务

  弹簧数据提供了默认交易处理方法,即所有查询均声明为读取的交易

  对于自定义方法,如果您需要更改弹簧数据提供的默认方法

  执行多个存储库操作时,还应在同一交易中处理它们,并遵循分层体系结构的思想。这部分是一个业务逻辑层。因此,您需要在服务层上实现调用多个存储库,并在相应的方法上声明交易

  测试方法3

  添加注释

  人服务课

  测试课

  日志信息

  数据表jpa_persons数据

  综上所述:

  1.您可以通过自定义jpql.note完成更新并删除操作:jpql不支持插入的使用

  2.在注释中写下JPQL语句,但必须修改。要告知SpringData,这是一个更新或删除操作

  3.需要使用更新或删除操作。目前,需要定义服务层。服务器层方法上的ADD交易操作

  4.默认情况下,springdata的每种方法都有交易,但这是一个仅读取的事务。他们无法完成修改操作!

  本节主要是掌握和两个注释:

  附加地图,仅供参考

  原始:https://juejin.cn/post/7101675736704450568