您的位置:首页 > 编程语言 > Java开发

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

2017-05-09 08:43 1126 查看
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外键字段对应类的属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: