Hibernate的查询方式
Hibernate提供了5种查询方式:
1.OID查询
根据对象OID(主键)进行检索,使用get方法;使用load方法。
2.对象导航查询
根据一个已查询到的对象,获得关联对象。
LinkMan linkMan = session.get(LinkMan.class, 1l);
Customer customer = linkMan.getCustomer();//根据查询对象获得关联对象
3.HQL检索
HIbernate Query Language ,Hibernate的查询语言,是一种面向对象的查询方式语言,语法类似SQL。通过session.createQuery(),用于接收一个HQL进行查询的方式。
HQL查询所有使用:from 表名; 而不使用select * from 表名; 应为HQL不能直接查询* 但是可以查询COUNT(*)查询到的是Long类型的值。
我们首先创建一张一对多的表:
基本查询
@Test//HQL的简单查询
public void test2(){
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
Query query = session.createQuery("from Customer");
//也可取别名查询,别名查询可以select c.cust_name from Customer c
// Query query2 = session.createQuery("select c from Customer c");//第二个c是别名
List<Customer> list = query.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
排序查询
@Test//排序查询
public void test3(){
Session session = HibernateUtils.getCurrentSession();
Transaction transaction = session.beginTransaction();
// Query query = session.createQuery("from Customer order by cust_id asc");//asc是升序,默认值可不写
Query query2 = session.createQuery("from Customer order by cust_id desc");//desc是降序
List<Customer> list = query2.list();
for (Customer customer : list) {
System.out.println(customer);
}
transaction.commit();
}
条件查询
一、按位置绑定:根据参数位置进行绑定
//查询姓名以杨开头,来源是网络的对象customer
Query query = session.createQuery("from Customer where cust_name like ? and cust_source=?");
query.setParameter(0, "杨%");
query.setParameter(1, "网络");
List<Cust