Hibernate的查詢 HQL查詢 參數,分頁,分組 – JAVA編程語言程序開發技術文章

增加參數為分兩種,一中是占位符方式:
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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *