Query对象
1 使用query对象,不需要写sql语句,但是写hql语句
(1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似
(2)hql和sql语句区别:
- 使用sql操作表和表字段
- 使用hql操作实体类和属性
2 Query对象使用
(1)创建Query对象
(2)调用query对象里面的方法得到结果
3 HQL查询
《1》 hql:hibernate query language,hibernate提供一种查询语言,hql语言和普通sql很相 似,区别:普通sql操作数据库表和字段,hql操作实体类和属性
《2》 常用的hql语句
(1)查询所有: from 实体类名称
(2)条件查询: from 实体类名称 where 属性名称=?
*Query query = session.createQuery(“from User where user_id=? and user_name like ?”);
query.setParameter(0, 1);
query.setParameter(1, “zhan%”);
List list =query.list();*
(3)排序查询: from 实体类名称 order by 实体类属性名称 asc/desc
(4)分页查询:
Query query = session.createQuery(“from User”);
query.setFirstResult(0);
query.setMaxResults(3);
List list =query.list();
(5)投影查询//查询的结果是表中的某个字段
Query query = session.createQuery(“select user_name from User”);
List list =query.list();
(6)聚集函数
Query query = session.createQuery(“select count(*) from User”);
Long l = (Long)query.uniqueResult();
int count =l.intValue();
《3》 使用hql查询操作时候,使用Query对象
(1)创建Query对象,写hql语句
(2)调用query对象里面的方法得到结果
hql多表查询:
Query query = session.createQuery(“from Customer c INNER JOIN fetch c.setLinkMan“);
List list = query.list();
Criteria对象
1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现
2 实现过程
(1)创建criteria对象
(2)调用对象里面的方法得到结果
1.查询全部
Criteria criteria = session.createCriteria(User.class);
List list =criteria.list();
2. 条件查询
Criteria criteria = session.createCriteria(User.class);
// criteria.add(Restrictions.eq(“user_id”, 1));
// criteria.add(Restrictions.eq(“user_name”,”zhangsan”));
criteria.add(Restrictions.like(“user_name”,”%bai%”));//模糊查询
3.排序查询和分页查询
Criteria criteria = session.createCriteria(User.class);
// criteria.addOrder(Order.desc(“user_id”));//排序查询(desc和asc)
criteria.setFirstResult(0);//分页操作
criteria.setMaxResults(3);
List list = criteria.list();
4.统计查询和离线查询
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class); //离线查询
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
List list =criteria.list();
// Criteria criteria = session.createCriteria(User.class);
// criteria.setProjection(Projections.rowCount());//统计查询
// Long l =(Long) criteria.uniqueResult();
// int count=l.intValue();
// System.out.println(count);