使用criteria查詢not like某個字段時使用sqlRestriction
public List<CmsProgram> queryAllNews() {
DetachedCriteria criteria=DetachedCriteria.forClass(CmsProgram.class);
criteria.add(Restrictions.eq("delFlag", 0));
criteria.add(Restrictions.eq("isMain", 1));
criteria.add(Restrictions.sqlRestriction("PROGRAM_CODE not like '03%'"));
criteria.add(Restrictions.sqlRestriction("PROGRAM_CODE not like '05%'"));
criteria.addOrder(Order.asc("sortNo"));
return(List<CmsProgram>) this.hibernateTemplate.findByCriteria(criteria);
}
使用criteria查詢{where(1 and 2)or (3 and 4)}
public List<Message> recycleBox(String id){
DetachedCriteria criteria = DetachedCriteria.forClass(Message.class);
criteria.add(Restrictions.or(Restrictions.and(Restrictions.eq("messageTo",id),Restrictions.eq("messageToFlag","1")),Restrictions.and(Restrictions.eq("messageFrom",id),Restrictions.eq("messageFromFlag","1"))));
criteria.addOrder(Order.desc("delDate"));
return (List<Message>) this.hibernateTemplate.findByCriteria(criteria);
}
排序
criteria.addOrder(Order.desc("createDate"));
criteria.addOrder(Order.asc("createDate"));
模糊查詢
criteria.add(Restrictions.like("bookBorrowerName", "%" + bookBorrowerName + "%"));
兩者之間
criteria.add(Restrictions.between("bookBorrowingDate", startTime_date, endTime_date));
小於等於
criteria.add(Restrictions.le("bookBorrowingDate", end));
大於等於
criteria.add(Restrictions.ge("bookBorrowingDate", start));
小於
criteria.add(Restrictions.lt("bookRebackDate", DateUtil.StringToDate(simpleDateFormat.format(new Date()), "yyyy-MM-dd")));
大於
criteria.add(Restrictions.gt("bookBorrowingDate", start));
在xx之間
criteria.add(Restrictions.in("id", arr));
創建方式
Criteria criteria = hibernateTemplate.getSessionFactory().getCurrentSession().createCriteria(this.entityClass);
小生剛學,有什么不足,請大神指導,如果有人指導怎么用criteria多表查詢,請指導,謝謝!
