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);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值