第五次作业 hql查询

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();
        }
    }

对对象进行实例化

测试结果

猜你喜欢

转载自www.cnblogs.com/sangewuxie/p/9114172.html