使用JPA自定义SQL查询结果

 更新时间:2021年11月22日 08:41:25   作者:coderping  
这篇文章主要介绍了使用JPA自定义SQL查询结果,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

JPA的SQL查询

一 点睛

JAP通过SQL查询一般有两种方法:通过NamedQuery查询和使用@Query查询。

二 JPA的NamedQuery查询

1 说明

Spring Data JPA支持用JPA的NameQuery来定义查询方法,即一个名称映射一个查询语句。

2 定义

@Entity 
@NamedQuery(name = "Person.withNameAndAddressNamedQuery",
query = "select p from Person p where p.name=?1 and address=?2")
public class Person {
    ......
}

3 使用方法

public interface PersonRepo extends JpaRepository<Person,Long>{
    //使用的是NameQuery里定义的查询语句,而不是根据方法名称来查询
    Person withNameAndAddressNamedQuery(String name,String address);
}

三 使用@Query查询

1 使用参数索引

public interface PersonRepo extends JpaRepository<Person,Long>{
    @Query("select p from Person p where p.address= ?1")
    List<Person> findByAddress(String address);
}

2 使用命名参数

public interface PersonRepo extends JpaRepository<Person,Long>{
    @Query("select p from Person p where p.name= :name and p.address= :address")
    Person withNameAndAddressQuery(@Param("name")String name,@Param("address")String address);
}

3 更新查询

public interface PersonRepo extends JpaRepository<Person,Long>{
    @Modifying
    @Transactional
    @Query("update Person p set p.name=?1")
    int setName(String name);//表示更新语句影响的行数
}

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

相关文章

  • SpringCloud的Gateway网关详解

    SpringCloud的Gateway网关详解

    这篇文章主要介绍了SpringCloud的Gateway网关详解,Gateway 是 Spring Cloud 官方推出的一个基于 Spring 5、Spring Boot 2 和 Project Reactor 的 API 网关实现,本文将介绍 Spring Cloud Gateway 的基本概念、核心组件以及如何配置和使用它,需要的朋友可以参考下
    2023-09-09
  • java类的组成结构详解

    java类的组成结构详解

    大家好,本篇文章主要讲的是java类的组成结构详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • java中的按位与(&)用法说明

    java中的按位与(&)用法说明

    这篇文章主要介绍了java中的按位与(&)用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java中对于并发问题的处理思路分享

    Java中对于并发问题的处理思路分享

    并发粗暴的解释就是一段代码,在同一时间段内,被多个线程同时处理的情况就是并发现象。这篇文章和大家分享了一些对于并发问题的处理思路,需要的可以参考一下
    2023-02-02
  • Mybatis 多对一查询的实现方法

    Mybatis 多对一查询的实现方法

    这篇文章主要介绍了Mybatis 多对一查询,本文通过场景分析示例代码相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • java自定义jar包让jmeter使用的方法

    java自定义jar包让jmeter使用的方法

    在本篇文章里小编给大家整理了一篇关于java自定义jar包让jmeter使用的方法以及实例代码,需要的朋友们参考下。
    2019-10-10
  • Spring通过工具类实现获取容器中的Bean

    Spring通过工具类实现获取容器中的Bean

    在实际开发中,我们往往要用到Spring容器为我们提供的诸多资源,例如想要获取到容器中的配置、获取到容器中的Bean等等。本文为大家详细讲讲工具类如何获取到Spring容器中的Bean,需要的可以参考一下
    2022-06-06
  • Java Swing的层次结构深入理解

    Java Swing的层次结构深入理解

    这篇文章主要介绍了Java Swing的层次结构深入理解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • 将Java的List结构通过GSON库转换为JSON的方法示例

    将Java的List结构通过GSON库转换为JSON的方法示例

    GONS是Google在GitHub上开源的Java类库,提供各种Java对象和JSON格式对象之间的转换功能,将Java的List结构通过GSON库转换为JSON的方法示例
    2016-06-06
  • Java 多线程并发ReentrantLock

    Java 多线程并发ReentrantLock

    这篇文章主要介绍了Java 多线程并发ReentrantLock,Java 提供了 ReentrantLock 可重入锁来提供更丰富的能力和灵活性,感兴趣的小伙伴可以参考一下
    2022-06-06

最新评论