criteria
无语句查询,是一个完成面向对象,可扩展的条件查询。它是hibernate的核心查询对象
1、基本查询
public void test1() {
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//criteria查询,基本查询,查询所有Customer对象
@SuppressWarnings("deprecation")
Criteria criteria = session.createCriteria(Customer.class);
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
2、条件查询
public void test2() {
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//Hibernate的查询语句中,不能出现任何与数据库相关的信息
//criteria条件查询,
@SuppressWarnings("deprecation")
Criteria criteria = session.createCriteria(Customer.class);
//添加条件查询的参数
criteria.add(Restrictions.eq("cust_id", 2l)); //查询cust_id =1l的Customer对象
Customer customer = (Customer) criteria.uniqueResult();
System.out.println(customer);
tx.commit();
session.close();
}
注意:在hibernate查询语句中不能出现和数据库相关的信息,故
3、分页查询
public void test3() {
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//Hibernate的查询语句中,不能出现任何与数据库相关的信息
//criteria分页查询,
@SuppressWarnings("deprecation")
Criteria criteria = session.createCriteria(Customer.class);
//设置分页信息 limit ?,?;
criteria.setFirstResult(0);
criteria.setMaxResults(2);
@SuppressWarnings("unchecked")
List<Customer> list = criteria.list();
System.out.println(list);
tx.commit();
session.close();
}
4、设置查询记录的总记录数
public void test4() {
Session session = HibernateUtils.OpenSession();
Transaction tx = session.beginTransaction();
//Hibernate的查询语句中,不能出现任何与数据库相关的信息
//criteria分页查询,
@SuppressWarnings("deprecation")
Criteria criteria = session.createCriteria(Customer.class);
//查询数据库中记录的总条数
criteria.setProjection(Projections.rowCount());
Long rowCount = (Long) criteria.uniqueResult();
System.out.println(rowCount);
tx.commit();
session.close();
}
注意:
/**
* > --- gt
* >= --- ge
* < --- lt
* <= --- le
* == --- eq
* != --- ne
* in --- in
* between and ----between
* like --- like
* is not null ---isNotNull
* is null ----isNull
* or ----or
* and ------and
*/