注释来源: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