1、OID(主键)查询
使用get方法 Customer customer=session.get(Customer.class,1l);
使用load方法 Customer customer=session.load(Customer.class,1l);
2、对象导航检索: hibernate根据一个已经查到的对象,获得其关联对象的一种查询方式
LinkMan linkman=session.get(LinkMan.class,1l);
Customer customer=linkman.getCustomer();
3、HQL检索:一种面向对象的方式的查询语言,语法类似sql。通过session.createquery()
3.1 hql简单查询:
Query query=session.createQuery("from Customer"); //Customer是类名
List<Customer> list=query.list();
3.2 hql排序查询:默认就是升序 或者在查询里加上 类里的属性
List<Customer> list=session.createQuery("from Customer").list();
List<Customer> list=session.createQuery("from Customer order by cust_id").list();
//设置降序排列使用desc 升序使用asc
List<Customer> list=session.createQuery("from Customer order by cust_id desc").list();
3.3 hql条件查询:
按位置绑定
单条件查询
Query query=session.createQuery("from Customer where cust_name=?");
query.setParameter(0,"ck");
List<Customer> list=query.list();
多条件查询
Query query=session.createQuery("from Customer where cust_source=? and cust_name like ?");
query.setParameter(0,"某某 ");
query.setParameter(1,"c%");
List<Customer> list=query.list();
按名称绑定
Query query=session.createQuery("from Customer where cust_source= :aaa and cust_name like :bbb");
query.setParameter("aaa","某某 ");
query.setParameter("bbb","程%");
List<Customer> list=query.list();
3.4 hql投影查询:查询对象的某个或某些属性
查询单个属性
List<Object> list=session.createQuery("select c.cust_name from Customer c").list();
查询多个属性
List<Object[]> list=session.createQuery("select c.cust_name,c.cust_source from Customer c").list();
查询多个属性,但将属性封装进对象中,需要将为对象创建构造方法
List<Customer> list=session.createQuery("select new Customer(cust_name,cust_source) from Customer").list();
3.5 hql分组查询:
List<Customer> list=session.createQuery("select count(*) from Customer").list(); //如果有多条记录
Object object=session.createQuery("select count(*) from Customer").uniqueResult(); //如果只有一条记录
分组统计
List<Object[]> list=session.createQuery("select cust_source,count(*) from Customer group by cust_source").list();
for(Object[] objects:list){
System.out.println(Arrays.toString(objects));
}
3.6 hql分页查询:
Query query=session.createQuery("from LinkMan");
query.setFirstResult(0);
query.setMaxResults(10);
List<LinkMan> list=query.list();