当前位置:编程学习 > JAVA >>

Hibernate的查询 HQL查询 参数,分页,分组

增加参数为分两种,一中是占位符方式:
Java代码 
/**
 * 占位符参数
 */ 
@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" 是不行的!
 
也可以使用命名参数:
Java代码 
/**
 * 命名参数
 */ 
@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()); 
    } 

 
使用命名参数感觉上是比较直观的
 
分页的话比较简单,设置两个参数即可:
Java代码 
/**
 * 分页
 */ 
@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是一样的,只是这里写的是实体的属性名字:
Java代码 
/**
 * 分组排序
 */ 
@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()); 
    } 

 
作者:dyllove98
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,