Spring Data Jpa之@Query注解


1.1   HQL查询

  1.1.1 普通查询

    @Query(“ select t.name,t.age from ArchWorkPlan t where t.id >?1 ”)

    List<ArchWorkPlan> queryData(int id)

  1.1.2 模糊查询

    @Query(“ select t from ArchWorkPlan t where t.name like %:name% ”)

    List<ArchWorkPlan> queryData(@Param(“name”)String name)

      --HQL查询对查询出的出参个数没有要求

1.2   SQL查询

  1.2.1 普通查询

    @Query(value=“ select * from arch_work_plan t where t.id>?1 “,nativeQuery=true)

    List<ArchWorkPlan> queryData(int id)

  1.2.2 模糊查询

    @Query(value=“select * from arch_work_plan t where t.name like %?1% “,nativeQuery=true)

    List<ArchWorkPlan> queryData(String name)

      --模糊查询中的%不需要加单引号,加上会报错

      --SQL查询必须要查询出表中的所有字段,否则报“列名无效”

1.3   命名参数和索引参数

  1.3.1 命名参数

    @Query(“ select t from ArchWorkPlan t where t.id >:id ”)

    List<ArchWorkPlan> queryData(@Param(“id”)int id)

      --使用@param注解需要导包,导org.springframework.data.repository.query.Param

  1.3.2 索引参数

    @Query(“ select t from ArchWorkPlan t where t.id >?1 and t.name=?2”)

    List<ArchWorkPlan> queryData(int id,String name )

      --不管是命名参数还是索引参数,在解析参数的时候都会给参数自动加上单引号,所以在传递动态表名或视图名时不要采用@Query方法,建议使用实体管理器的方式

1.4   分页查询

  1.4.1 dao层

    @Query(value=" select * from arch_work_plan where name=:name order by ?#{#pageable} ",countQuery=" select count(*) from arch_work_plan where name=:name ",nativeQuery=true)

    Page<ArchWorkPlan> queryPage(@Param("name") String name , Pageable pageable);

  1.4.2 service层

    Pageable pageable = new PageRequest(pageNumber, pageSize,Sort.Direction.ASC,"id"); //按照id字段降序排列

1.5   多表查询

  1.5.1 采用遍历Map形式取值

    dao层:

      @Query(“ select t1.name,t2.age from a t1,b t2 where t1.sys_id =t2.sys_id ”)

      List<Object> queryData()

    service层:

      List<Object> output = testDao.queryData();

      List out = new ArrayList();

      for (int i=0;i<output.size();i++) {

                Object[] rowArray = (Object[]) output.get(i);

                Map<String, Object> mapArr = new HashMap<String, Object>();

                mapArr.put("name", rowArray[0]);

                mapArr.put("age", rowArray[1]);       

                out.add(mapArr);                                              

      }


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM