Hibernate常用查询

1、通过Criteria查询

Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(xxx.class);
criteria.add(Restrictions.eq("isDeleted", 0));
criteria.add(Restrictions.in("fullName",depList));
List<xxx> resultList = new ArrayList<>();
resultList.addAll(criteria.list());

2、通过HQL查询

@Override
public Integer getDailyProjectNumByDepNameAndTime(String depName,String startDate,String endDate){
    String sql = "select count(*) from xxx where creator_department like:depName and project_type_enum='日常项目' and gmt_create>=:ds and gmt_create<=:de";
    Query query = this.sessionFactory.getCurrentSession().createSQLQuery(sql);
    query.setParameter("ds",startDate);
    query.setParameter("de",endDate);
    query.setParameter("depName",depName);
    BigInteger bigInteger = (BigInteger) query.uniqueResult();
    return bigInteger.intValue();
}

3、分页查询

@Override
public List<xxx> listByDepartmentAndDateAndPage(ProjectEfficiencyQuery query){
    Criteria criteria = this.sessionFactory.getCurrentSession().createCriteria(xxx.class);
    Date startDate = DateUtil.getDateTimeFromString(query.getStartDate());
    Date endDate = DateUtil.getDateTimeFromString(query.getEndDate());
    criteria.add(Restrictions.eq("stamp", "research"));
    criteria.add(Restrictions.eq("type", "project"));
    criteria.add(Restrictions.like("department", query.getDepName(), MatchMode.START));
    criteria.add(Restrictions.ge("gmtCreate", startDate));
    criteria.add(Restrictions.le("gmtCreate", endDate));
    int total = ((Long) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
    query.setTotal(total);
    criteria.setProjection(null);
    criteria.setFirstResult((query.getPageNum()-1)*query.getPageSize());
    criteria.setMaxResults(query.getPageSize());
    List<xxx> list = (List<xxx>)criteria.list();
    return list;
}

 

转载于:https://www.cnblogs.com/shuhe-nd/p/11529651.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值