hibernate HQL查询

hql(都要在事务中完成)
session.beginTransaction();
session.getTransaction().commit();

session.beginTransaction();
    //User指的是类,不是表名 username指的是属性,不是列名
    String hql = "from User as u where u.username = 'u1'";
        Query query = session.createQuery(hql);
        List<User> list = query.list();
        
        for(User user : list) {
            System.out.println(user.getId() + " : " + user.getUsername());
        }
    
    session.getTransaction().commit();

获取不完整对象

    String hql = "select username from User";
        Query query = session.createQuery(hql);
        // 不再是User而是String
        List<String> list = query.list();
        
        for(String name : list) {
            System.out.println(name);
        }
        
        
        
        
        String hql = "select id,username,password from User";
        Query query = session.createQuery(hql);
        List<Object[]> list = query.list();
        
        for(Object[] array : list) {
            System.out.println(array[0] + " : " + array[1]);
        }
    
    //即使把所有属性都写上还是String类型 只有写from User才是User类型
    
    
    
    
    
    
    
    
        String hql = "from User where id = 1";
        Query query = session.createQuery(hql);
        //这样写的前提是确保只有一条结果记录
        User user = (User) query.uniqueResult();
        System.out.println(user.getUsername());
        
    
    
    
    
        String hql = "select count(*) from User";
        Query query = session.createQuery(hql);
        // 这样写的前提是确保只有一条结果记录
        Long count = (Long) query.uniqueResult();
        System.out.println("count:" + count);
    
    
    
    
        String hql = "select count(*),max(id) from User";
        Query query = session.createQuery(hql);
        Object[] count = (Object[]) query.uniqueResult();
        System.out.println("count:" + count[0] + " maxId:" + count[1]);
    
    

HQL占位符

String hql = "from User as u where u.username = ?";
        Query query = session.createQuery(hql);
        //hibernate从0开始数 
        // 方式1 
        query.setString(0, "u1");
        // 方式2,不用考虑数据类型 
        query.setParameter(0, "jack");
        
        List<User> list = query.list();
        
        for(User user : list) {
            System.out.println(user.getId() + " : " + user.getUsername());
        }

 

HQL引用占位符

String hql = "from User as u where u.username = :name and u.password = :pwd";
        Query query = session.createQuery(hql);
        //  只能用setParameter
        query.setParameter("name", "jack");
        query.setParameter("pwd", "123");
        
        
        List<User> list = query.list();
        
        for(User user : list) {
            System.out.println(user.getId() + " : " + user.getUsername());
        }
    

 分页

     String hql = "from User";
        Query query = session.createQuery(hql);
        
        query.setFirstResult(10);
        query.setMaxResults(5);
        
        List<User> list = query.list();
        
        for(User user : list) {
            System.out.println(user.getId() + " : " + user.getUsername());
        }
    

 

posted on 2015-04-28 12:53  itliucheng  阅读(198)  评论(0编辑  收藏  举报