java jpa如何自定义sql语句

 更新时间:2021年11月29日 16:59:19   作者:java小白-  
这篇文章主要介绍了java jpa如何自定义sql语句方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java jpa自定义sql语句

本篇只是为了再次记录自己又学习了jpa的使用,框架原生的通过解析方法名多适用于单表操作,自定义的sql查询则可以解决所有问题,记录些自定义sql语法的记录,以便后续参照。

1.多表关联查询,含条件

@Query(value = "SELECT b FROM QyVideo a JOIN YjQyXx b ON  a.qyId = b.id AND a.cameraId = ?1 ")

2.清空表

@Transactional
@Modifying
@Query(value = "truncate table yj_qy_xx", nativeQuery = true)

注:update、truncate或delete时必须使用@Modifying和@Transactional对方法进行注解,才能使得ORM知道现在要执行的是写操作。

3.模糊查询

@Query("select p from WhpzxryzsXxPo p where p.ryxm like concat('%',?1,'%') and p.cyyxqq >= ?2")

4.查询结果为VO

含两个实体类

@Query(value = "SELECT new com.kun.aqsczt.vo.FxjzfbVo(u, seventinfo) FROM SSmsInfo u left join SEventInfo seventinfo on u.referId = seventinfo.eventId WHERE (:referType IS NULL OR :referType IS '' OR u.referType = :referType) AND (:isSend IS NULL OR :isSend IS '' OR u.isSend = :isSend) ")

5.使用@Param注解注入参数

分页查询

@Query(value = "SELECT a  FROM CEiWorkaccMaybe a " +
            "WHERE (:psnName IS NULL OR :psnName IS '' OR a.psnName LIKE %:psnName%) " +
            "AND (:commName IS NULL OR :commName IS '' OR a.commName LIKE %:commName%) " +
            "AND (:idCard IS NULL OR :idCard IS '' OR a.idCard LIKE %:idCard%) " +
            "AND (:doctorDateStart IS NULL OR :doctorDateStart IS '' OR a.doctorDate >= :doctorDateStart) " +
            "AND (:doctorDateEnd IS NULL OR :doctorDateEnd IS '' OR a.doctorDate <= :doctorDateEnd) "
    )
Page<CEiWorkaccMaybe> getSuspectedWorkAccidentVerification(
            @Param("psnName") String psnName,
            @Param("commName") String commName,
            @Param("idCard") String idCard,
            @Param("doctorDateStart") String doctorDateStart,
            @Param("doctorDateEnd") String doctorDateEnd,
            Pageable pageable
    );

无非是把日常的sql中的表名换成了对应的实体类名,接收参数适用 ?加上第几个参数的几。当然也可使用@Param注解注入参数,就变成了使用 :参数 名称接收。

jpa自定义sql查询结果

很多时候都会遇到自定义sql,自定义返回字段,而不是pojo类。这个情况要通过接口定义返回。

直接上代码

 @Query(value = "select m.field AS field,COUNT(m.field) AS size from MigrationObject m where m.xmlName = ?1 and m.groupName = ?2 group by m.field")
    List<WorkCenter> getKey(String xmlName, String groupName);

对于这种情况,只返回了两个字段,就需要定义一个接口来接收(注意AS别名的配置)

public interface WorkCenter { 
    String getField();
    String getSize();
}

最后跑一下demo代码

   List<WorkCenter> list = migrationObjectRepository.getKey("EN_Work centerResource.xml","Key");
        for (WorkCenter workCenter:list){
            System.out.println(workCenter.getField());
            System.out.println(workCenter.getSize());
        }

ARBPL
5
SPRAS
2
CANUM
2
ENDDA
1
WERKS
5

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 图文详解MyEclipse更换背景主题的方法

    图文详解MyEclipse更换背景主题的方法

    今天小编就为大家分享一篇关于MyEclipse更换背景主题的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 详解Java ReentrantLock可重入,可打断,锁超时的实现原理

    详解Java ReentrantLock可重入,可打断,锁超时的实现原理

    前面讲解了ReentrantLock加锁和解锁的原理实现,但是没有阐述它的可重入、可打断以及超时获取锁失败的原理,本文就重点讲解这三种情况,需要的可以了解一下
    2022-10-10
  • 详解spring security四种实现方式

    详解spring security四种实现方式

    这篇文章主要介绍了详解spring security四种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Java的方法和this关键字如何理解与应用

    Java的方法和this关键字如何理解与应用

    Java语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号{}当中,并且起一个名字。使用代码的时候,直接找到名字调用即可
    2021-10-10
  • Java 判断两个字符串是否由相同的字符组成的实例

    Java 判断两个字符串是否由相同的字符组成的实例

    今天小编就为大家分享一篇Java 判断两个字符串是否由相同的字符组成的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • java实现简单的学生信息管理系统代码实例

    java实现简单的学生信息管理系统代码实例

    这篇文章主要介绍了java实现简单的学生信息管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • spring整合cxf框架实例

    spring整合cxf框架实例

    下面小编就为大家带来一篇spring整合cxf框架实例。小编觉得挺不错的。现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • SpringBoot实现图片防盗链功能

    SpringBoot实现图片防盗链功能

    出于安全考虑,我们需要后端返回的图片只允许在某个网站内展示,不想被爬虫拿到图片地址后被下载,或者,不想浏览器直接访问图片链接,所以本文将给大家介绍SpringBoot实现图片防盗链功能,需要的朋友可以参考下
    2024-04-04
  • Spring Boot中使用Spring-Retry重试框架的实现

    Spring Boot中使用Spring-Retry重试框架的实现

    本文主要介绍了Spring Boot中使用Spring-Retry重试框架的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Java前后端时间格式的转化方式

    Java前后端时间格式的转化方式

    这篇文章主要介绍了Java前后端时间格式的转化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论