一、hql语句中的动态参数赋值
package edu.aeon.hibernate.test; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import edu.aeon.aeonutils.hibernate.getsessionutil.GetSessionUtil; import edu.aeon.beans.Student; /** * [说明]:测试hql语句动态参数赋值 * @author aeon * */ public class TestQueryPara { /** * 测试hql语句动态参数赋值 */ @Test public void testHqlQuery() { Transaction transaction=null; Session session=null; try { session = GetSessionUtil.getSession(); transaction=session.getTransaction(); transaction.begin(); //String hql="from Student where stuage >10 and stuage <20 "; // 第一种动态参数赋值[start] String hql="from Student where stuage >? and stuage <? "; List<Student> stuList = session.createQuery(hql).setInteger(0, 10).setInteger(1, 20).list(); //[/end] for (Student stu : stuList) { System.out.println(stu); } System.out.println("hql查询!"); transaction.commit(); } catch (Exception e) { e.printStackTrace(); //事物的回滚操作 transaction.rollback(); }finally{ /* * 其实这种getCurrentSession获取到的session我们无需手动关闭 * 因为当事务提交或者回滚的时候已经做了关闭session操作 * 而用openSession获取到的session我们一定要用手动去关闭 * */ if(null!=session){ session.close(); } } } }
数据库数据信息截图:
第一种动态参数赋值执行结果截图:
第二种动态参数赋值执行结果截图:
第三种动态参数赋值执行结果截图: