1. 程式人生 > >第五次作業 hql查詢

第五次作業 hql查詢

ransac ron on() hql查詢 mit ktr lec trace hibernate

hql查詢是基於對象的查詢,不是基於表的查詢。

1.hql的簡單查詢

    @Test
    public void queryUsers() {
        //簡單查詢
        SessionFactory sf = null;
        Session s = null;
        Transaction t = null;
        try {
            sf = HibernateUtil.getSessionFactory();
            s = sf.getCurrentSession();
            t 
= s.beginTransaction(); Query<User> query = s.createQuery("from User"); List<User> users = query.list(); for(User user:users){ System.out.println(user); } t.commit(); }catch(Exception e) {
if(t!=null) { t.rollback(); } e.printStackTrace(); } }

其中“from User”是hql語句,User是實體類User類,而不是User表

此實例測試結果

技術分享圖片

數據庫內容

技術分享圖片

2.屬性查詢

@Test
    public void queryUsernames() {
        //屬性查詢
        SessionFactory sf = null;
        Session s = null;
        Transaction t 
= null; try { sf = HibernateUtil.getSessionFactory(); s = sf.getCurrentSession(); t = s.beginTransaction(); Query<User> query = s.createQuery("select u.username from User u"); List usernames = query.list(); for(Object username:usernames){ System.out.println(username); } t.commit(); }catch(Exception e) { if(t!=null) { t.rollback(); } e.printStackTrace(); } }

測試結果

技術分享圖片

3.實例化查詢

@Test
    public void queryNewUser() {
        //實例化查詢
        SessionFactory sf = null;
        Session s = null;
        Transaction t = null;
        
        try {
            sf = HibernateUtil.getSessionFactory();
            s = sf.getCurrentSession();
            t = s.beginTransaction();
            Query<User> query = s.createQuery("select new User(u.id,u.username,u.password,u.sex,u.age) from User u");
            List<User> users = query.list();
            
            for(User user:users){
                System.out.println(user);
            }
            t.commit();
        }catch(Exception e) {
            if(t!=null) {
                t.rollback();
            }
            e.printStackTrace();
        }
    }

對對象進行實例化

測試結果

技術分享圖片

第五次作業 hql查詢