jpa一些查询方法

来源:互联网 发布:2016淘宝女装销量前十 编辑:程序博客网 时间:2024/06/06 11:04
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);

0 0