Hibernate之Criteria查询:
由于采用Hql语句查询,会发出多余的sql命令,查询效率低,所以我们采用Criteria查询,效率比较高。
Criteria查询的基本语句如下:
Criteria criteria=session.createCriteria(Emp.class);
criteria.add(Restrictions.like("name", "张%"));
List<Emp> list=criteria.list();
第一句话是得到这个类,第二句话就是添加条件,Restrictions.like("name", "张%")表示姓名中以“张”开头的。
最后返回一个list对象。
1.Criteria多条件查询:
代码如下:
Session session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(Emp.class).add(
Restrictions.like("name", "张%")).createCriteria("dept").add(
Restrictions.eq("name", "市场部"));
List<Emp> list = criteria.list();
这是一个级联查询。首先查询了Emp中姓名以“张”开头的,后面还查询了dept中姓名是“市场部”。eq表示“=”
2.Criteria投影查询:
Session session = HibernateUtil.getSession();
Projection projection = Projections.projectionList().add(
Property.forName("e.name")).add(Property.forName("d.name"));
Criteria criteria = session.createCriteria("Emp", "e").setProjection(
projection).createAlias("dept", "d").add(
Restrictions.like("e.name", "张%")).createCriteria("dept").add(
Restrictions.eq("d.name", "市场部"));
List<Object[]> list = criteria.list();
返回的是一个list类数组。
3.Crateria数量查询:
Session session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(Emp.class);
Integer count = (Integer) criteria
.setProjection(Projections.rowCount()).uniqueResult();
由于采用Hql语句查询,会发出多余的sql命令,查询效率低,所以我们采用Criteria查询,效率比较高。
Criteria查询的基本语句如下:
Criteria criteria=session.createCriteria(Emp.class);
criteria.add(Restrictions.like("name", "张%"));
List<Emp> list=criteria.list();
第一句话是得到这个类,第二句话就是添加条件,Restrictions.like("name", "张%")表示姓名中以“张”开头的。
最后返回一个list对象。
1.Criteria多条件查询:
代码如下:
Session session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(Emp.class).add(
Restrictions.like("name", "张%")).createCriteria("dept").add(
Restrictions.eq("name", "市场部"));
List<Emp> list = criteria.list();
这是一个级联查询。首先查询了Emp中姓名以“张”开头的,后面还查询了dept中姓名是“市场部”。eq表示“=”
2.Criteria投影查询:
Session session = HibernateUtil.getSession();
Projection projection = Projections.projectionList().add(
Property.forName("e.name")).add(Property.forName("d.name"));
Criteria criteria = session.createCriteria("Emp", "e").setProjection(
projection).createAlias("dept", "d").add(
Restrictions.like("e.name", "张%")).createCriteria("dept").add(
Restrictions.eq("d.name", "市场部"));
List<Object[]> list = criteria.list();
返回的是一个list类数组。
3.Crateria数量查询:
Session session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(Emp.class);
Integer count = (Integer) criteria
.setProjection(Projections.rowCount()).uniqueResult();
主要用了一个rowCount()函数。