java jpa如何自定义sql语句

目录
  • java jpa自定义sql语句
    • 1.多表关联查询,含条件
    • 2.清空表
    • 3.模糊查询
    • 4.查询结果为VO
    • 5.使用@Param注解注入参数
  • jpa自定义sql查询结果
    • 直接上代码
    • 最后跑一下demo代码

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

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

(0)

相关推荐

  • SpringBoot Jpa 自定义查询实现代码详解

    这篇文章主要介绍了SpringBoot Jpa 自定义查询实现代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 持久层Domain public interface BaomingDao extends JpaRepository<BaomingBean,Integer> { @Query(value = "select distinct t.actid from BaomingBean t where t.belongs=?

  • JPA自定义对象接收查询结果集操作

    最近使用JPA的时候,碰到需要自定义查询结果集的场景,网上搜了一下,都是需要自定义方法写一大串代码实现的,太繁琐了,有那时间还不如用mybaits. 用JPA就是要尽量通过声明接口解决持久层问题,要不然鬼用.逼得没办法去了官网看看文档,再没有就放弃了,没时间看源码.最终找到我想要的结果了. 例如,传统的JPA接口实现如下所示: class Person { @Id UUID id; String firstname, lastname; Address address; static class

  • spring data jpa 查询自定义字段,转换为自定义实体方式

    目标:查询数据库中的字段,然后转换成 JSON 格式的数据,返回前台. 环境:idea 2016.3.4, jdk 1.8, mysql 5.6, spring-boot 1.5.2 背景:首先建立 entity 映射数据库(非专业 java 不知道这怎么说) @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long

  • java jpa如何自定义sql语句

    目录 java jpa自定义sql语句 1.多表关联查询,含条件 2.清空表 3.模糊查询 4.查询结果为VO 5.使用@Param注解注入参数 jpa自定义sql查询结果 直接上代码 最后跑一下demo代码 java jpa自定义sql语句 本篇只是为了再次记录自己又学习了jpa的使用,框架原生的通过解析方法名多适用于单表操作,自定义的sql查询则可以解决所有问题,记录些自定义sql语法的记录,以便后续参照. 1.多表关联查询,含条件 @Query(value = "SELECT b FROM

  • java jpa如何自定义sql语句

    目录 java jpa自定义sql语句 1.多表关联查询,含条件 2.清空表 3.模糊查询 4.查询结果为VO 5.使用@Param注解注入参数 jpa自定义sql查询结果 直接上代码 最后跑一下demo代码 java jpa自定义sql语句 本篇只是为了再次记录自己又学习了jpa的使用,框架原生的通过解析方法名多适用于单表操作,自定义的sql查询则可以解决所有问题,记录些自定义sql语法的记录,以便后续参照. 1.多表关联查询,含条件 @Query(value = "SELECT b FROM

  • MyBatisPlus 自定义sql语句的实现

    一.引言 Good Good Study,Day Day Up MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧. 二.配置 自定义的sql当然是写在XML文件中的啦,那么首先来定义xml文件的位置,在yml配置文件如下 mybatis-plus: # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml # 如果是放在resource目录 classpath:

  • MyBatis-Plus 自定义sql语句的实现

    一.引言 Good Good Study,Day Day Up,童鞋点个关注,不迷路,么么哒--- MP自带的条件构造器虽然很强大,有时候也避免不了写稍微复杂一点业务的sql,那么那么今天说说MP怎么自定义sql语句吧. 二.配置 自定义的sql当然是写在XML文件中的啦,那么首先来定义xml文件的位置,在yml配置文件如下 mybatis-plus: # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml # 如果是放在res

  • spring boot之使用spring data jpa的自定义sql方式

    目录 spring data jpa介绍 自定义SQL查询 jpa两种自定义SQL的方式 1. 原生SQL 2. 实体类SQL spring data jpa介绍 PA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据.他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面.值得注意的是,JPA是在充分吸收

  • Django框架orM与自定义SQL语句混合事务控制操作

    本文实例讲述了Django框架orM与自定义SQL语句混合事务控制操作.分享给大家供大家参考,具体如下: 用单纯的ORM 或者单纯的自定义SQL语句,都比较好控制事务.在前面的一篇文章中已经讲过Django事务小结 ,但里面没有提到在同一个方法里面既有ORM 又有 自定义SQL 语句的情况. 如果是单纯的ORM ,可以这样做,假设已经定义好model, User,Category. from django.db import transaction ... @commit_on_success

  • java跟踪执行的sql语句示例分享

    代码: 复制代码 代码如下: package com.lwj.test.proxy; import java.lang.reflect.InvocationHandler;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import java.sql.Connection;import java.sql.SQLExce

  • 10种Java开发者编写SQL语句时常见错误

    Java开发者对于面向对象编程思维与命令行编程思维的协调程度,取决于他们如下几种能力的水平: 技巧(任何人都可以编写命令行形式的代码) 教条(有的人使用"模式 - 模式"的方式,即模式无处不在,并以名字作为标识) 情绪状况(在初期,真正面向对象形式的代码比起命令式代码会更加难懂.) 但是,当Java开发人员编写SQL语句时,一切都变得不同了.SQL是一种说明式语言,与面向对象思想和命令式思想无关.在SQL语言中,查询非常容易表达.但它也不是那么容易以最佳或最正确地方式编写出来.开发人员

  • java执行SQL语句实现查询的通用方法详解

    完成SQL查询 并将查询结果放入Vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static <T> Vector<T> executeQuery(Class<T> clazz, String sql, Object... args) { Connection conn = null; PreparedStatement preparedstatement = null; ResultSet rs = null; Vector<

  • mybatis-plus实现自定义SQL、多表查询与多表分页查询语句实例

    目录 前言 1.自定义SQL 2.多表查询 3.多表分页查询 4.多表分页条件查询 总结 前言 本文介绍了在mybatis-plus中如何实现:自定义SQL语句,多表查询语句,多表分页查询语句 在说怎么实现之前我们要先明白一个概念,就是mybatis-plus是在mybatis的基础上进行增强,并不做改变,所以mybatis的操作在mybatis-plus中也是一样可以使用的,咱们直接上代码 1.自定义SQL 在mapper中自定义一个方法即可 @Repository public interf

随机推荐