1. 程式人生 > >jpa一些查詢方法

jpa一些查詢方法

1.普通查詢,根據欄位查詢結果集
/**
 * 根據訂單序列號查詢訂單
 *
 * @param serialNumber 序列號
 * @return 訂單
 */
Orders findBySerialNumber(String serialNumber);

2.帶引數hql語句查詢
/**
 * 根據 publicOpenid 查詢 serialNumber集合
* @param publicOpenid* 
@return*/
@Query("select o.serialNumber  from Orders o where o.publicOpenid = ?1 order by o.createTime desc "
)
List<String> findSerialNumberByPublicOpenId(String publicOpenid);
3.聚合函式
/**
 *查詢駕照某一時間段的扣分總數
 * @param date1 開始日期
 * @param date2 截止日期
 * @return 扣分總數 */
@Query("select sum(dockPoints) from Orders o where o.createTime between ?1 and ?2  and o.number=?3 and o.type=?4")
Integer findDockPointsByTime(Date date1,Date date2,String number,String type);
4.原生sql查詢部分欄位
/**
 *駕照某一時間段處理的車輛資訊
 *
 * @param date1 開始時間
 * @param date2 結束時間
 * @param number 證件編號
 * @param type 證件型別
 * @return  處理過的車輛資訊 */
@Query(value="select distinct(o.plate_number),(o.plate_number_type) from winstar_orders o where o.create_time between ?1 and ?2  and o.number=?3 and o.type=?4"
, nativeQuery = true)
List<Object[]> findPlateNumberAndPlateNumberTypeByCertificate(Date date1, Date date2, String number, String type);
------------------------------3.用的是hql Orders是訂單實體,dockPoints是實體屬性    4.用的是原生sql winstar_orders 是表名稱,plate_number_type是表的欄位名--------------
5.引數是集合的

/**
 * 根據機構id(in)、狀態、報案時間(between)查詢事故列表  (現場報案的)
 *
 * @param organizationIds 機構id 列表
 * @param status 狀態
 * @param date1 開始時間
 * @param date2 結束時間
 * @return
*/
@Query("select a from Accident a where a.organizationId in (?1) and a.status = ?2 and a.createTime between ?3 and ?4 and a.accidentType='1'")
List<Accident> findByOrganizationIdInAndStatusAndCreateTimeBetween(List<String> organizationIds, int status, Date date1,Date date2);