一、QBC (Query By Criteria) 主要有Criteria,Criterion,Oder,Restrictions类组成
1、java 代码如下:
/** * 查询所有 */ @Test public void testQuery(){ // 获取 Criteria 对象 Criteria criteria = session.createCriteria(Person.class); List<Person> list = criteria.list(); for(Person p : list){ System.out.println(p); } } /** * 条件查询 */ @Test public void testQuery2(){ // 获取 Criteria 对象 Criteria criteria = session.createCriteria(Person.class); // 查询 id 属性小于等于 5 的记录 criteria.add(Restrictions.le("id", 5)); // 查询 id 属性等于 5 的记录 criteria.add(Restrictions.eq("id", 5)); // 模糊查询 name 属性包含 -8 的记录 criteria.add(Restrictions.like("name", "%-8%")); // 查询 age 属性 21 岁到 24 岁之间的记录 criteria.add(Restrictions.between("age", 21, 24)); // 查询 id 属性等于 2,5,7的记录 criteria.add(Restrictions.in("id", new Object[]{2,5,7})); // 对 id 属性做升序 criteria.addOrder(Order.asc("id")); // 对 id 属性做降序 criteria.addOrder(Order.desc("id")); List<Person> list = criteria.list(); for(Person p : list){ System.out.println(p); } } /** * 条件查询 * 通过 Property 类的静态方法进行查询条件的绑定 * 其实底层是对 Restrictions 的封装 */ @Test public void testQuery3(){ // 获取 Criteria 对象 Criteria criteria = session.createCriteria(Person.class); // 查询 id 属性小于等于 5 的记录 criteria.add(Property.forName("id").le(5)); // 查询 age 属性 21 岁到 24 岁之间的记录 criteria.add(Property.forName("id").between(3, 6)); List<Person> list = criteria.list(); for(Person p : list){ System.out.println(p); } }
QBC:http://blog.csdn.net/agromach/article/details/1932290
二、样例查询
1、java 代码如下:
/** * 样例查询 * 根据给定了值的属性作为查询条件进行查询 * 注意:一个对象的属性是基本类型,因为有默认值,所有也会拼装到查询条件中 */ @Test public void testQuery4(){ Person p = new Person(); p.setName("ldh-8"); p.setPasswork(131); Criteria criteria = session.createCriteria(Person.class); criteria.add(Example.create(p)); List<Person> list = criteria.list(); for(Person person : list){ System.out.println(person); } }
三、离线查询
/** * 离线查询 * 可以在绑定查询数据和条件之前不需要session(最晚打开session) * 当真正使用的时候才传递一个当前的session * * session使用的技巧: * 最晚打开 * 最早关闭 * 不用长时间的打开 */ @Test public void testQuery5(){ DetachedCriteria dc = DetachedCriteria.forClass(Person.class); dc.add(Restrictions.between("id", 5, 8)); Criteria criteria = dc.getExecutableCriteria(session); List<Person> list = criteria.list(); for(Person person : list){ System.out.println(person); } }