一、 Jpa接口自定义sql注解@Query

@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,代码中具体区别是nativeQuery 属性是否为true,我们一般使用的都是原生SQL的语言,需要加nativeQuery = true

  1. 不带参数的sql
    @Query(value = "select count(1) code,hdt.type data from history_design_theme hdt where 1=1 GROUP BY hdt.type",nativeQuery = true)List<DataCodeDTO> findHistoryType();
  1. 一般带参数简单例子
 @Query(value = "select * from history where hdt.type=?1 ",nativeQuery = true)List<HistoryDesignTheme> findAllData(String type);
  1. 带参@Param注解注入参数
@Query(value = "select * from sys_role sr where sr.role_id in(:idList) and sr.state=:state ",nativeQuery = true)List<SysRole> findAllByRoleIdInAndState(@Param(value = "idList") List<Long> idList, @Param(value = "state") Long state);
  1. @Modifying注解

    @Query注解只有对数据查询的操作,如果你需要进行对数据的修改那就必须使用@Modifying注解。
    JPA 在 EntityManager 中缓存了 find 生成的对象,而@Query 跟 find 和 save 系列方法是两套不同的体系,@Query 引起的数据库变更 EntityManager 并不能发现,更进一步说,使用其它工具或者其它框架修改数据库中的数据,也不能及时反应到 JPA 的 find 系列方法上来。
    解决方法就是:一是避免使用@Query并显示清理EntityManager中的缓存,二是Spring Data JPA 提供了另外一种方式则是 @Modifying(clearAutomatically = true),@Modifying 的 clearAutomatically 属性为 true 时,执行完 modifying query 之后就会清理缓存。
    自动清理之后还会带来一个新的问题,clear 操作清理的缓存中,还包括提交后未 flush 的数据,例如调用 save 而不是 saveAndFlush 就有可能不会立即将修改内容更新到数据库中,在 save 之后 flush 之前调用 @Modifying(clearAutomatically = true) 修饰的方法就有可能导致修改丢失。如果再要解决这个问题,还可以再加上另外一个属性 @Modifying(clearAutomatically = true, flushAutomatically = true),@Modifying 的 flushAutomatically 属性为 true 时,执行 modifying query 之前会先调用 flush 操作,从而避免数据丢失问题。

Jpa数据操作以及@Query和@Modifying注解使用相关推荐

  1. SpringData @Query和@Modifying注解原理解析

    @Query注解查询适用于所查询的数据无法通过关键字查询得到结果的查询.这种查询可以摆脱像关键字查询那样的约束,将查询直接在相应的接口方法中声明,结构更为清晰,这是Spring Data的特有实现. ...

  2. mysql jpa 批注 视图_通过JPA注解映射视图的实体类 jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句...

    参考: https://blog.csdn.net/qq465235530/article/details/68064074 https://www.cnblogs.com/zj0208/p/6008 ...

  3. JPA:@Modifying注解(UPDATE或者DELETE)

    通过 @Modifying 注解可以完成修改(UPDATE或者DELETE)操作(注意:不支持新增) SpringDataJpa--JpaRepository增删改查(请参考):http://blog ...

  4. @Query注解及@Modifying注解

    @Query注解查询适用于所查询的数据无法通过关键字查询得到结果的查询.这种查询可以摆脱像关键字查询那样的约束,将查询直接在相应的接口方法中声明,结构更为清晰,这是Spring Data的特有实现. ...

  5. springData中的@Query注解及@Modifying注解

    @Query注解 @Query注解查询适用于所查询的数据无法通过关键字查询得到结果的查询.这种查询可以摆脱像关键字查询那样的约束,将查询直接在相应的接口方法中声明,结构更为清晰,这是Spring Da ...

  6. JPA @Modifying注解 jpql语句更新以及删除

    JPA @Modifying注解解释 这个注解在JPA中经常出现,是为了通知jpa,这是一个update或者delete操作,在更新或者删除操作时,此注解必须加,否则就会抛出异常,注:jpa不支持in ...

  7. @Query与@Modifying执行更新操作

    @Query与@Modifying执行更新操作 @Query 与 @ Modifying 这 两 个 annotation 一起声明,可定义个性化更新操作,例如只涉及某些字段更新时最为常用,示例如下: ...

  8. JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询

    JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPOL进行查询 创梦技术交流平台:资源下载,技术交流,网络赚钱: 交流qq群:1群:248318056 2群:251572072 技 ...

  9. Spring Boot + JPA +MySQL 数据操作及示例环境搭建(自动建表)

    JPA 是Java官方提供的数据持久的统一API , 是一个接口标准,并没有具体实现. JPA的实现常见的有: Hibernate TopLink (Eclipse Link) Spring Boot ...

最新文章

  1. 【Go】Go基础(六):数组、切片slice、映射map
  2. cmd查看python安装路径-从cmd如何查找python的安装路径?
  3. Win7下使用U盘安装linux Ubuntu16.04双系统图文教程
  4. 合成孔径雷达算法与实现_[SAR笔记0]合成孔径雷达成像算法与实现
  5. KubeSphere配置集(ConfigMap)的使用
  6. 【服务器】【私有云】宝塔安装KodExplorer
  7. 论文阅读笔记(五)——FD-MOBILENET
  8. Precision、Recall、F计算:举例
  9. java 修饰词_Java线程和Java修饰词
  10. Android系统架构
  11. 2015计算机二级office真题,2015年计算机二级office题库及答案
  12. Winform2、(C#) 设置编译后.exe执行文件的图标
  13. 在C++程序中使用系统热键(附代码)
  14. 自学Python第二十天- MongoDB 库
  15. 安卓ios和java如何选_在android和iOS之间选择novi编程
  16. Python爬取《明日之子》(腾讯视频)评论和弹幕,看看大家都在吐槽什么
  17. 后端返回一个下载Excel表格的url,要PC浏览器打开下载,前端代码设计
  18. WiFi未来趋势如何?如何搭上物联网这条大船?
  19. 有些段子,外行人根本看不懂,只有程序员看了会狂笑不止
  20. 发展型机器人:由人类婴儿启发的机器人. 2.3 类人婴儿机器人

热门文章

  1. java bytebuffer 读写_java io byteBuffer
  2. react项目报出警告Warning: Cannot update during an existing state transition (such as within `render`).
  3. Wireshark 解密 RDP 流量
  4. hdu6740 MUV LUV EXTRA
  5. 新冠肺炎疫情引发空前应用需求,Dynatrace助企业轻松应对
  6. 机器人公敌过获奖没有_我机器人(机械公敌2)什么时候上映
  7. Centos7 静默安装 Oracle RAC 11gR2
  8. android密码sha256解密,使用password_hash和SHA256加密和解密
  9. 计算机在英语课中的应用 博客,英语课堂教学的信息技术运用与反思
  10. 使用vite打包时候遇到的坑