通过Session得到Criteria类的对象
- /**
- * 用Criteria方便的综合查询 Criteria类有丰富的比较方法
- *
- * 如:大于,小于,等于, not null, in,null, like, isEmpty....
- */
- public static void select()
- {
- Session s = null;
- try
- {
- s = HibernateUtil.getSeesion();
- //得到Criteria对象
- final Criteria c = s.createCriteria(User.class);
- //添加查询条件 ,eq()表示等于,第一个参数是User类上的属性名, 第二个参数是值 .
- c.add(Restrictions.eq("name", "zl"));
- c.add(Restrictions.lt("birthday", new Date())); //lt()表示小于
- //下面两个条件是 或的关系,可以注意观察输出的SQL语句
- c.add(Restrictions.or(Restrictions.eq("name", "wj"), Restrictions.eq("name", "name0")));
- // 分页
- c.setFetchSize(10); //从第10条记录起
- c.setMaxResults(10); //查出10条记录
- //执行查询
- final List<User> list = c.list();
- for (final User u : list)
- {
- System.out.println(u.getId() + " " + u.getName());
- }
- }
- finally
- {
- s.clear();
- }
- }
/**
* 用Criteria方便的综合查询 Criteria类有丰富的比较方法
*
* 如:大于,小于,等于, not null, in,null, like, isEmpty....
*/
public static void select()
{
Session s = null;
try
{
s = HibernateUtil.getSeesion();
//得到Criteria对象
final Criteria c = s.createCriteria(User.class);
//添加查询条件 ,eq()表示等于,第一个参数是User类上的属性名, 第二个参数是值 .
c.add(Restrictions.eq("name", "zl"));
c.add(Restrictions.lt("birthday", new Date())); //lt()表示小于
//下面两个条件是 或的关系,可以注意观察输出的SQL语句
c.add(Restrictions.or(Restrictions.eq("name", "wj"), Restrictions.eq("name", "name0")));
// 分页
c.setFetchSize(10); //从第10条记录起
c.setMaxResults(10); //查出10条记录
//执行查询
final List<User> list = c.list();
for (final User u : list)
{
System.out.println(u.getId() + " " + u.getName());
}
}
finally
{
s.clear();
}
}
DetachedCriteria 在构造时不须要Session对象,可以在没有Session时完成拼接查询条件,要执行时才须要Session对象
- //在Action中 拼查询条件
- public ActionForward Action (....)
- {
- DetachedCriteria dc = DetachedCriteria.forClass(User.class);
- String name = request.getParameter("name");
- //拼查询条件
- if (name != null)
- dc.add(Restrictions.eq("name", name));
- int age = request.getParameter("age");
- if(age > 0)
- dc.add(Restrictions.eq("age", age));
- List users = query(dc);
- }
//在Action中 拼查询条件
public ActionForward Action (....)
{
DetachedCriteria dc = DetachedCriteria.forClass(User.class);
String name = request.getParameter("name");
//拼查询条件
if (name != null)
dc.add(Restrictions.eq("name", name));
int age = request.getParameter("age");
if(age > 0)
dc.add(Restrictions.eq("age", age));
List users = query(dc);
}
- //在DAO层 查询
- static List query(DetachedCriteria dc)
- {
- Session s = HibernateUtil.getSession();
- Criteria c = dc.getExecutableCriteria(s); //这时须要一个session
- List rs = c.list();
- s.close();
- return rs;
- }
//在DAO层 查询
static List query(DetachedCriteria dc)
{
Session s = HibernateUtil.getSession();
Criteria c = dc.getExecutableCriteria(s); //这时须要一个session
List rs = c.list();
s.close();
return rs;
}