1.对象查询导航
2.OID查询
3.hql查询
4.QBC查询
5.本地sql查询
1.对象查询导航 范例
//根据id查询某个客户,再查询这个客户里面的所有联系人
Customer customer = session.get(Customer.class,1);
Set
2.OID查询
//根据id查询某一条记录,返回对象
User user = session.get(User.class,1);
3.hql查询
//Query对象,写hql语句实现查询,hql语句和普通sql语句相似,但sql操作数据库表和字段,但hql操作实体类和属性
(1)查询所有
Query query = session.createQuery("from User");
List
(2)条件查询
hql条件查询语法:(1)from 实体类名称 where 实体类属性 = ? and 实体类属性 = ?
Query query = ssession.createQuery("from User where name=? and Pwd=?");
//向?设置值 setParameter(int类型 ?位置,具体参数值)位置从0开始
query.setParameter(0,"123");
query.setParameter(1,"zhangsan");
List
模糊查询
Query query = session.createQuery("from User c where c.name like ?");
query.setParameter(0,"%浪%");
List
(3)排序查询
·语法:from 实体类名称 order by 属性名称 asc/desc
Query query = session.createQuery("from User order by id asc");
(4)分页查询
注意:hql操作语句中不能写limit,hibernate的Query对象封装了两个方法的实现
Query query = session.createQuery("from User");
query.setFirstResult(0);//设置开始位置
query.setMaxResult(3);
List
(5)投影查询(查询部分字段)
select 实体类属性名称1,属性名称2 from 实体类名称
select 后面不能写 *,不支持
Query query = session.createQuery("select name from User");
List
(6)常用聚合函数:count、sum、avg、max、min
Query query = session.createQuery("select count(*) from User");
Object obj = query.uniqueResult();
Long lobj = (Long)obj;
int count = lobj.intValue();
4.QBC查询
QBC不需要查询语句,使用方法实现,QBC操作实体类和属性,使用Criteria对象实现
(1)查询所有:Criteria criteria = session.createCriteria(User.class);
List
(2)条件查询
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.eq("id",1));//类似于id=?
List
(3)模糊查询
criteria.add(Restriction.like("name","%百%"));
(4)排序查询
设置对哪个属性进行排序,设置排序规则
criteria.addOrder(Order.asc("id"));