Spring data jpa HQL @Query 自定义查询及更新删除 及 sql写法

时间:2024-02-16 12:57:24

spring 版本为4.1.3.RELEASE


一、常用 查询方法

@Query("select name from Reservation where beautyType = :beautyType AND time BETWEEN :startDate AND :endDate")

public List<Reservation> findReservations(@Param("startDate")Date startDate,@Param("endDate")Date endDate ,@Param("beautyType")String beautyType);

1、Reservation 为 java中对应的实体类,不是数据库表名。

2、 select 后面 不能跟* 号,应为实体类中属性。

写了个测试类在 主方法(main)中,去测试dao层方法。一直报UncaughtExceptionHandler (暂时不知道原因)


二、更新及删除

/**
 * 更新是否可用标记
* @param id
 * @param status
*/
@Modifying
@Query("update Corporation set usable = :usable where id = :id")
public void updateUsableFlag(@Param("id")Long id, @Param("usable")Boolean usable);


/**
 * 删除
 * @param id
 * @param status
*/
@Modifying
@Query("delete from Corporation where id in (:ids)")
public void delete(@Param("ids")Long[] ids);


 更新删除要有事务管理有问题请参考


三、排序问题

/**

*查询排序

*查询 字段usable为true按照sortNo字段排序ASC为顺序

*备注:字段sortNo与asc中无at,看到一篇博客中也有at被误导,可能是版本不同导致。

**/

findByUsableTrueOrderBySortNoAsc();


四、HQL与sql原生语句


没有将查询数据转为类而是Object[]的原因是  hql语句问题。两个写法

一、HQL写法

@Query(value="from LogToIndex group by elkIndex")


二、sql语法,加上nativeQuery=true

@Query(value="select *  from log_index_data group by elkIndex",nativeQuery=true)


五、根据类中外键字段查询

dao.findByCorpCode_codeOrderByOrderBy(corpCode);

CorpCode:对应为类中的外键字段。

_code: 中的code为corpCode外键字段对应类的属性。