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外键字段对应类的属性。