Spring Data JPA 调用原生(Native) SQL 查询

本文介绍了如何在Spring Boot中利用Spring Data JPA进行原生SQL查询,探讨了Native SQL的使用场景及其可能带来的移植性问题。同时,文章详细讲解了Transformer在将查询结果转换为非JPA实体或Map时的角色,包括Hibernate提供的默认转换器和自定义转换器的实现方法。最后,作者强调了Native SQL在统计和复杂关联查询中的实用性。
摘要由CSDN通过智能技术生成

本文使用了 SpringBoot 中的 spring-boot-starter-data-jpa 模块来加入 JPA 功能,单独使用 Spring Data JPA 可能有差异,JDK 版本为 8

介绍

Spring Data JPA 是 Spring Data 项目众多子项目中的一个,是对 Java JPA 规范扩展,本身使用了 Hibernate 的 JPA 实现,并提供了更丰富的 API 及查询功能,最常用的方式有:

  • JPA api,通过如 findById、 save、 findAll 等 API 进行查询
  • @Query 查询,通过在 interface 方法申明注解实现查询
  • Specification 查询,及 Criteria 查询
  • JPQL 动态查询,手动构造 JPQL 语句进行查询
  • Native SQL 动态查询,手动构造原生 SQL 语句进行查询

Native SQL

Native SQL 功能可以直接调用数据库原生的 SQL 进行查询,注意如果使用了数据库特定的语法和函数,那么程序就会失去移植性,一个最简单的 Native SQL例子:

    @PersistenceContext
    EntityManager entityManager;

    public List findByNativeSQL() {
   
        String sql = "select * from user";
        Query query = entityManager.createNativeQuery(sql);
        List list = query.getResultList();
        return list;
    }

增加查询参数后:

    String sql = "select * from user where name like :name";
    Query query = entityManager.createNativeQuery(sql);
    query.setParameter("name", "%诱%");

    List list = query
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值