方式一:使用?通配符,再通过set index
//1 Session session = sessionFactory.openSession(); Query query = session.createQuery("select user.name from User as user where user.age > ?"); query.setInteger(0, 25); List names = query.list(); Iterator iterator = names.iterator(); while(iterator.hasNext()) { System.out.println(iterator.next()); } session.close();
//2 Session session = sf.getCurrentSession(); session.beginTransaction(); Query q = session.createQuery("from Category c where c.id > ? and c.id < ?"); q.setParameter(0, 3); q.setParameter(1, 8); List<Category> categorys = (List<Category>) q.list(); for (Category c : categorys) { System.out.println(c.getId() + "--" + c.getName()); } session.getTransaction().commit();
方式二:使用:name命名参数,再通过set name。这可以不用依照特定的顺序来设定参数值,并拥有较好的可读性
//1 Session session = sessionFactory.openSession(); Query query = session.createQuery("select user.name from User as user where user.age > :minAge"); query.setInteger("minAge", 25); List names = query.list(); Iterator iterator = names.iterator();//iterator while(iterator.hasNext()) { System.out.println(iterator.next()); } session.close();
//2 Session session = sf.getCurrentSession(); session.beginTransaction(); Query q = session.createQuery("from Category c where c.id > :min and c.id < :max"); q.setParameter("min", 3); q.setParameter("max", 8); List<Category> categorys = (List<Category>) q.list(); for (Category c : categorys) { //for System.out.println(c.getId() + "--" + c.getName()); } session.getTransaction().commit();
--
//--for for (Object o : q.list()) { MsgInfo m = (MsgInfo) o; System.out.println(m.getCount()); } for (Object o : q.list()) { Object ob[] = (Object[]) o; System.out.println(ob[0] + "-" + ob[1]); }