Hibernate查询所有数据的操作

Hibernate查询所有数据的操作方式有三种。

  1、Query

    (1)使用该方法查询时,不需要编写sql语句,但是需要编写hql(Hibernate Query Language)语句,该语句是Hibernate查询语言。

    (2)hql语言操作的是实体类和实体类的属性,比如查询所有数据的hql语句为:from 实体类名称。

    (3)使用方法:首先创建Query对象,然后调用该对象的List方法返回数据集合。

    

@Test
    public void test11(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {    
            sessionFactory = HibernateUtils.getFactory();
            session = sessionFactory.getCurrentSession();
            tx = session.beginTransaction();
            /**
             * 使用session对象的createQuery方法创建Query对象。
             * 参数为hql语句
             * 使用QUERY对象的list方法获取数据集合
             */
            Query query =session.createQuery("from UserEntity");
            List<UserEntity> list = query.list();
            //使用forEach遍历集合
            for (UserEntity userEntity : list) {
                System.out.println(userEntity);
            }
            tx.commit();
        } catch (Exception e) {    
            tx.rollback();
        }finally{
            sessionFactory.close();
        }
    }

  2、criteria

    (1)使用该对象不需要写hql语句,只需要指定实体类。

    (2)使用方法:首先创建criteria对象,然后调用list返回数据集合。

    

@Test
    public void test12(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {    
            sessionFactory = HibernateUtils.getFactory();
            session = sessionFactory.getCurrentSession();
            tx = session.beginTransaction();
            /**
             * 使用session对象的createCriteria方法创建criteria对象。
             * 使用criteria对象的list方法获取数据集合
             */
            Criteria criteria =session.createCriteria(UserEntity.class);
            List<UserEntity> list = criteria.list();
            //使用forEach遍历集合
            for (UserEntity userEntity : list) {
                System.out.println(userEntity);
            }
            tx.commit();
        } catch (Exception e) {    
            tx.rollback();
        }finally{
            sessionFactory.close();
        }
    }

  3、SQLQuery

    (1)使用该对象,需要写底层的SQL语句。

    (2)实现方法:首先创建该对象,然后调用list。

    

@Test
    public void test13(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {    
            sessionFactory = HibernateUtils.getFactory();
            session = sessionFactory.getCurrentSession();
            tx = session.beginTransaction();
            /**
             * 使用session对象的createSQLQuery方法创建SQLQuery对象。
             * 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组
             */
            SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");
            List<Object[]> list = qQLQuery.list();
            //使用forEach遍历集合
            for (Object[] objects : list) {
                System.out.println(Arrays.toString(objects));
            }
            tx.commit();
        } catch (Exception e) {    
            tx.rollback();
        }finally{
            sessionFactory.close();
        }
    }

    (3)数组转换成对象

      

@Test
    public void test13(){
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {    
            sessionFactory = HibernateUtils.getFactory();
            session = sessionFactory.getCurrentSession();
            tx = session.beginTransaction();
            /**
             * 使用session对象的createSQLQuery方法创建SQLQuery对象。
             * 使用qQLQuery对象的list方法获取数据集合,集合里面不是对象,而是数组
             */
            SQLQuery qQLQuery =session.createSQLQuery("select * from t_user");
        //将数组装载进实体中 qQLQuery.addEntity(UserEntity.
class); List<UserEntity > list = qQLQuery.list(); //使用forEach遍历集合 for (UserEntity userEntity : list) { System.out.println(userEntity); } tx.commit(); } catch (Exception e) { tx.rollback(); }finally{ sessionFactory.close(); } }
原文地址:https://www.cnblogs.com/jack1995/p/6937800.html