Hibernate的查询 HQL查询 参数,分页,分组
程序员文章站
2022-06-25 23:11:58
...
增加参数为分两种,一中是占位符方式:
/** * 占位符参数 */ @SuppressWarnings("unchecked") public static void test4(){ Session session = HibernateSessionFactory.currentSession(); String hql = "from User u where u.id=?"; Query query = session.createQuery(hql); query.setParameter(0, 2); List<User> user = query.list(); System.out.println("------------SQL执行完毕---------------"); for (User us : user) { System.out.println(us.getName()); } }
注意是从 0 开始,如果你的 id 是整型,那么必须设置一个整数,如果你设置参数是 "2" 是不行的!
也可以使用命名参数:
/** * 命名参数 */ @SuppressWarnings("unchecked") public static void test5(){ Session session = HibernateSessionFactory.currentSession(); String hql = "from User u where u.id=:id"; Query query = session.createQuery(hql); query.setInteger("id", 2); List<User> user = query.list(); System.out.println("------------SQL执行完毕---------------"); for (User us : user) { System.out.println(us.getName()); } }
使用命名参数感觉上是比较直观的
分页的话比较简单,设置两个参数即可:
/** * 分页 */ @SuppressWarnings("unchecked") public static void test6(){ Session session = HibernateSessionFactory.currentSession(); String hql = "from User u"; Query query = session.createQuery(hql); query.setFirstResult(0); query.setMaxResults(5); List<User> user = query.list(); System.out.println("------------SQL执行完毕---------------"); for (User us : user) { System.out.println(us.getName()); } }
至于分组和排序的话,和你写SQL是一样的,只是这里写的是实体的属性名字:
/** * 分组排序 */ @SuppressWarnings("unchecked") public static void test7(){ Session session = HibernateSessionFactory.currentSession(); String hql = "from User u group by name order by id desc"; Query query = session.createQuery(hql); List<User> user = query.list(); System.out.println("------------SQL执行完毕---------------"); for (User us : user) { System.out.println(us.getName()); } }
以上方法仅供参考!
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com