spring data jpa 会用的 原生sql 查询方式

目录

 

(1)按某个字段统计数据

(2)几个表组建视图查询


(1)按某个字段统计数据

                  这里是根据detectSn进行统计,并且过滤掉重复数据(DISTINCT),不需要过滤去掉DISTINCT就可以了。后面跟查询条件。

                  传的值在上面获取需要用 :value  参数需要价格@Param(“value”)

    @Query(value = "select count(DISTINCT detectSn) from tbl_zjpt_vehicleInfo where ifExistAj = :ifExistAj", nativeQuery = true)
    Integer queryByIfExistAj(@Param("ifExistAj")String ifExistAj);

(2)几个表组建视图查询

       首先需要new com.dcsoft.vo.OutViewVehicleInfo  结果info用来存放返回数据。as后面跟与info相同的字段名。 info里面一定要有构造方法。参数为所有的字段。给别名C  和  p ,用c. 和 p. 表示哪个字段需要取哪个数据表里的数据。

            后面跟where条件。参数与上面的方式一样,就不多说了。

      需要传一个entity  把主查询表entity传上吧

public interface OVVRepository extends JpaRepository<Entity, String>, JpaSpecificationExecutor<Entity>,PagingAndSortingRepository<Entity,String>

     page<info> page 参数是info  对应的上面的info 而不是 entity

    @Query(value = "select new com.vo.OutViewVehicleInfo(c.drId as drId ,c.vehicleNo as vehicleNo," +
            "c.insertTime as insertTime," +
            "c.plateColorCode as plateColorCode,c.detectSn as detectSn,c.detectType as detectType," +
            "c.detectDate as detectDate,p.detectResult as detectResult) " +
            "FROM OutDetectRecordEntity c , OutDetectReportEntity p WHERE c.drId = p.drId and c.vehicleNo like :vehicleNo ")
    Page<OutViewVehicleInfo> queryAllByVehicleNo(@Param("vehicleNo") String vehicleNo,Pageable pageable);

         下面这段代码 是对应的  page  参数 为  页码  每页数据个数  排序方式。

PageRequest pageRequest = new PageRequest(vehicleQueryParam.getPageNum() - 1,
                vehicleQueryParam.getPageSize(), new Sort(new Order(Direction.DESC, "insertTime")));
        Page<OutViewVehicleInfo> page = null;

 碰到其他的再更新吧...

有nativeQuery = true 和 没有的区别:

有nativeQuery = true时,是可以执行原生sql语句,所谓原生sql,也就是说这段sql拷贝到数据库中,然后把参数值给一下就能运行了,比如:

@Query(value = "select * from product_rel where audit_id=?1 and process_object=0 ",nativeQuery = true)
List<ProductRel> findAllByProductAuditId(Integer id);
 

 

猜你喜欢

转载自blog.csdn.net/qq_32786139/article/details/87685559