Restrictions.like(属性名, 查询条件的值, 匹配方式):
Restrictions.in(属性名, 查询条件的值, 匹配方式):
Restrictions.eq(属性名, 查询条件的值, 匹配方式):
Criteria Query常用的查询限制方法
Restrictions.eq() equal,=
Restrictions.allEq() 参数为Map对象,使用key/value进行多个等于的对比,相当于多个Restrictions.eq()的效果
Restrictions.gt() greater-than, >
Restrictions.lt() less-than, <
Restrictions.le() less-equal, <=
Restrictions.between() 对应SQL的between子句
Restrictions.like() 对应SQL的like子句
Restrictions.in() 对应SQL的in子句
Restrictions.and() and关系
Restrictions.or() or关系
Restrictions.isNull() 判断属性是否为空,为空返回true,否则返回false
Restrictions.isNotNull() 与Restrictions.isNull()相反
Order.asc() 根据传入的字段进行升序排序
Order.desc() 根据传入的字段进行降序排序
MatchMode.EXACT 字符串精确匹配,相当于“like 'value'”
MatchMode.ANYWHERE 字符串在中间位置,相当于“like '%value%'”
MatchMode.START 字符串在最前面的位置,相当于“like 'value%'”
MatchMode.END 字符串在最后面的位置,相当于“like '%value'”
public List search(TblFwxx condition) {
Session session = this.getSession();
Criteria c = session.createCriteria(TblFwxx.class);
if (null != condition) {
if (condition.getTitle() != null && !condition.getTitle().equals("")) {
c.add(Restrictions.like("title", condition.getTitle(), MatchMode.ANYWHERE));
}
}
c.addOrder(Order.asc("fwid"));
return c.list();
}
-------------------------------------------------------------------------------------
例1:
表中的数据为:
userid name username password age
------------------------------------------------
1 张三 zhang3 zhang3 20
2 李四 li4 li4 21
3 your test test 30
Session session = HibernateSessionFactory.getSession();
Criteria criteria = session.createCriteria(Test.class);
List
.add(Restrictions.like("username", "test"))
.add(Restrictions.eq("age", 30))
.list();
------------------------------------------------------------------------------------
例2:
private Session session;
public List criteria(SalChance salChance) {return result;
List<Emp>list =session.createCriteria(Emp.class)
.add(Restrictions.gt("salary", 4000D))
.addOrder(Order.asc("salary"))
.addOrder(Order.desc("empNo")).list();
setFirstResult(intfirstResult)
setMaxResults(intmaxResult)
Empemp= (Emp)session.createCriteria(Emp.class)
.add(Restrictions.isNotNull("salary"))
.addOrder(Order.desc("salary"))
.setMaxResults(1)
.uniqueResult();
方法 说明 Query Criteria
List<Emp>list =session.createCriteria(Emp.class)
.add(Restrictions.ilike("empName","a",MatchMode.ANYWHERE))
.createCriteria("dept")
.add(Restrictions.eq("deptName","财务部").ignoreCase()).list();
List<Emp>list =session.createCriteria(Emp.class,"e")
.createAlias("dept","d")
.add(Restrictions.ilike("e.empName","a",
MatchMode.ANYWHERE))
.add(Restrictions.eq("d.deptName","财务部").ignoreCase()).list();
List
List list = session.createCriteria(Dept.class)
.setProjection(Property.forName("deptName")).list();
org.hibernate.criterion.Projections类提供了使用聚合函数查询的方法
groupProperty() 分组
rowCount( ) 统计记录数
avg() 统计平均值
DetachedCriteria和Criteria功能类似,它实现了CriteriaSpecification接口
Criteria是由Session对象创建的
DetachedCriteria创建时不需要Session对象
使用DetachedCriteria来构造查询条件
可以把DetachedCriteria作为方法参数传递给业务层
DetachedCriteria detachedCriteria = DetachedCriteria
.forClass(Emp.class, "e")
.createAlias("e.dept", "d")
.add(Restrictions.eq("d.deptName", "财务部"))
.add(Restrictions.ilike("e.empName", "a",
MatchMode.ANYWHERE));
List list = detachedCriteria.getExecutableCriteria(session)
.list();
DetachedCriteria avgSalary = DetachedCriteria.forClass(Emp.class,
"e").setProjection(Property.forName("salary").avg());
List list = session.createCriteria(Emp.class)
.add(Property.forName("salary").gt(avgSalary)).list();
================Criteria分页加动态查询方法======================================
public PageInfo
DetachedCriteria dc = DetachedCriteria.forClass(Auction.class);
Criteria c = session.createCriteria(Auction.class);//建立一次查询
Criteria c1 = session.createCriteria(Auction.class);//建立一次查询
c.addOrder(Order.desc("auctionstarttime"));//添加查询条件-----------注意非空处理----------排序
c.add(Restrictions.ge("auctionstartprice",condition.getAuctionstartprice()));----------比较大小
c.add(Restrictions.ilike("auctiondesc", condition.getAuctiondesc(),MatchMode.ANYWHERE));----------模糊查询
Set
PageInfo
int count = (Integer) c1.setProjection(Projections.rowCount()).uniqueResult();//得到总条数
pageInfo.setCount(count);//设置总条数
pageInfo.setPageIndex(pageIndex);//设置当前页码
c.setMaxResults(PageInfo.PAGESIZE);//设置每次的查询数量
c.setFirstResult((pageIndex - 1) * PageInfo.PAGESIZE);//设置起始条数
List
pageInfo.setPageList(list);//将查询的结果付给查询的实体类
}
===============================分页实体类======================================
public class PageInfo
public static final int PAGESIZE = 10;
private Integer count;// 总记录数
private List
private Integer pageIndex;// 当前页号
private Integer totalPages;// 总页数
public Integer getTotalPages() {//特殊方法,通过总条数和每页的条数得到页数
this.totalPages = this.count / this.PAGESIZE;
if (this.count % this.PAGESIZE != 0)
this.totalPages++;
return this.totalPages;
}
}
===============================分页关于时间的处理======================================
---映射文件-------关于时间的处理---------------
---实体类-------关于时间的处理---------------
private Timestamp auctionstarttime;、
---数据库-------关于时间的处理---------------
AUCTIONSTARTTIME TIMESTAMP(6)
---方法内使用-------关于时间的处理---------------
======表单赋值
======提取:输入的时间按字符串转化为date,后提取毫秒数,转化为java.sql.Timestamp
if(request.getParameter("auctionStartTime")!=null&&!"".equals(request.getParameter("auctionStartTime"))){
condition.setAuctionstarttime(new java.sql.Timestamp(Tool.strToDate(request.getParameter("auctionStartTime"), "yyyy-MM-dd HH:mm:dd").getTime()));
}
======底层
if (condition.getAuctionstarttime() != null) {
c.add(Restrictions.ge("auctionstarttime",
condition.getAuctionstarttime()));
c1.add(Restrictions.ge("auctionstarttime",
condition.getAuctionstarttime()));
}
===============================servlet的调用方法以及获得返回值======================================
int pageIndex=1;//登陆界面进入
if(request.getParameter("pageIndex")!=null){
pageIndex=new Integer(request.getParameter("pageIndex")).intValue();//
}Auction condition=new Auction();
PageInfo
request.setAttribute("auctionPageInfo", auctionPageinfo);
request.getRequestDispatcher("auctionList.jsp").forward(request, response);
===============================jsp页面======================================
---------页码显示------------------------------------------------------------------------------
首页
上一页
当前页:${auctionPageinfo.pageIndex}
${pageIndex}
下一页
尾页
------------------
---------动态查询表单------------------------------------------------------------------------------
---------详细信息显示------------------------------------------------------------------------------
修改|
删除
竞拍