Query对象
方便的对数据库和持久化对象进行查询,两种表达方式:HQL和SQL;
Query经常用来绑定查询参数,限制查询条数。并最终执行查询语句。
HQL
查询一个简单类(查询所有)
@Test //修改方法public void test3(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作Query query = session.createQuery("from User");List list = query.list();System.out.println(list);//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}分页查询
@Test //修改方法public void test3(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作Query query = session.createQuery("from User");query.setFirstResult(0);//设置开始的位置query.setMaxResults(10);//设置查询多少条List list = query.list();for (Object object : list) {System.out.println(object);}//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}查看指定列
@Test //查询指定列public void test4(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作//查询指定列时,必须在javabean中提供该字段的构造方法 ?其他列为空Query query = session.createQuery("select new User(username,password) from User");List<User> list = query.list();for (User u : list) {System.out.println(u);}//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}条件查询
@Test //条件查询(无名称参数)public void test5(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作//查询指定列时,必须在javabean中提供默认的构造方法(无参构造) ?//因为有参会替换无参 ?然而在条件查询时会调用无参构造/*条件查询(无名称参数) * Query query = session.createQuery("from User where username=?");query.setParameter(0, "zhangsan111");*///条件查询(有名称参数)Query query = session.createQuery("from User where username=:myusername");query.setParameter("myusername", "zhangsan111");User user = (User) query.uniqueResult();System.out.println(user);//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}SQL
查询所有
@Test //sql查询public void test6(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作SQLQuery query = session.createSQLQuery("select * from user");List<Object[]> list = query.list();for (Object object : list) {//打印地址值System.out.println(object);}/*object对象指向User类 * query.addEntity(User.class);List<User> list = query.list();for (User user : list) {System.out.println(user);}*///不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}条件查询
@Test //sql条件查询()public void test7(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作SQLQuery query = session.createSQLQuery("select * from user where username=?");query.setParameter(0, "zhangsan111");//object对象指向User类query.addEntity(User.class);User user = (User) query.uniqueResult();//转换时还是会让Query对象识别到User这个类System.out.println(user);//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}Criteria对象
查询所有
@Test //Criteria查询全部public void test8(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作Criteria criteria = session.createCriteria(User.class);List list = criteria.list();for (Object object : list) {System.out.println(object);}//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}单条件查询/多条件查询
@Test //Criteria条件查询查询public void test9(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作Criteria criteria = session.createCriteria(User.class);
//条件1criteria.add(Restrictions.eq("username", "zhangsan111"));
//条件2
criteria.add(Restrictions.eq("username","zhangsan111"));
List list = criteria.list();for (Object object : list) {System.out.println(object);}//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}条件或
@Test //Criteria条件查询查询orpublic void test10(){Session session = HibernateUtils.getSession(); // 相当于得到一个Connection。// 操作Criteria criteria = session.createCriteria(User.class);//条件1criteria.add(Restrictions.or(Restrictions.eq("username", "zhangsan111"),Restrictions.eq("username", "fanjiankang")));List list = criteria.list();for (Object object : list) {System.out.println(object);}//不需要关闭Configuration ?因为Configuration不是轻量级的。这样一个项目就只产生一个Configuration//configuration相当于连接池session.close();}Cariteria只是对于criteria的方法进行对于sql语句的控制,这样整个开发过程及其检索;
hibernate之查询
原文地址:http://www.cnblogs.com/fjkgrbk/p/hibernate_select.html