引言:
1. 使用范围:单表查询
2. 来源:Hibernate自创的无语句面向对象查询。
一、基本查询
public class Demo {
@Test
public void function() {
//1.获得session
Sessionsession = HibernateUtils.openSession();
//2.打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
创建criteria查询对象
Criteria criteria = session.createCriteria(Customer.class);
a 查询得到结果为多个,list拿到一个集合性质的结果
List<Customer> list = criteria.list();
或
b 查询得到结果为单个,uniqueResult拿到一个
Object uniqueResult = criteria.uniqueResult();
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}
二、条件查询
HQL语句中,不可能出现任何数据库相关的信息
> | gt |
>= | ge |
< | lt |
<= | le |
== | eq |
!= | ne |
in | in |
between and | between |
like | like |
is not null | isNotNull |
is null | isNull |
or | or |
and | and |
public class Demo{
@Test
public void function() {
//1.获得session
Session session = HibernateUtils.openSession();
//2.打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 创建criteria查询对象
Criteria criteria = session.createCriteria(Customer.class);
2 添加查询对象 ==》 查询cust_id为1的Customer对象
criteria.add(Restriction.eq(“cust_id”,1L));
3 执行查询获得结果
Customer c = (Customer)criteria.uniqueResult();
4 打印结果
System.out.println(c);
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}
三、分页查询
public class Demo{
@Test
public void function() {
//1. 获得session
Session session = HibernateUtils.openSession();
//2. 打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 创建criteria查询对象
Criteria criteria = session.createCriteria(Customer.class);
2 设置分页信息,相当于limit ?, ?
criteria.setFirstResult(0);
criteria.setMaxResults(3);
3 执行查询
List<Customer> list = criteria.list();
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}
四、拓展:查询总记录数
public class Demo {
@Test
public void function() {
//1.获得session
Session session = HibernateUtils.openSession();
//2.打开事务
Transaction tx = session.beginTransaction();
//*********************************************
//3. 执行操作
1 创建criteria查询对象
Criteria criteria = session.createCriteria(Customer.class);
2 设置查询的聚合函数 =》 总行数
criteria.setProjection(Projections.rowCount());
3 执行查询
Long count = (Long)criteria.uniqueResult();
System.out.println(count);
//**********************************************
//4. 提交事务
tx.commit();
//5.关闭资源
session.close();
}
}