Hibernate查询方式

1.对象查询导航

2.OID查询

3.hql查询

4.QBC查询

5.本地sql查询



1.对象查询导航 范例

//根据id查询某个客户,再查询这个客户里面的所有联系人
Customer customer = session.get(Customer.class,1);

Set linkman = customer.getSetLinkMan();


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 list = query.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 list = query.list();

模糊查询

Query query = session.createQuery("from User c where c.name like ?");

query.setParameter(0,"%浪%");

List list = query.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 list = query.list();

(5)投影查询(查询部分字段)

select 实体类属性名称1,属性名称2 from 实体类名称

select 后面不能写 *,不支持

Query query  = session.createQuery("select name from User");

List list = querey.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 list = criteria.list();

(2)条件查询

Criteria criteria = session.createCriteria(User.class);

criteria.add(Restrictions.eq("id",1));//类似于id=?

List list = criteria.list();

(3)模糊查询

criteria.add(Restriction.like("name","%百%"));

(4)排序查询

设置对哪个属性进行排序,设置排序规则

criteria.addOrder(Order.asc("id"));

你可能感兴趣的:(Hibernate查询方式)