现在的位置: 首页 > 综合 > 正文

hibernate动态参数查询

2017年12月27日 ⁄ 综合 ⁄ 共 1512字 ⁄ 字号 评论关闭

方式一:使用?通配符,再通过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]);  
	}  

抱歉!评论已关闭.