如果让hibernate的hql语句不输出"?",输出具体的参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果让hibernate的hql语句不输出"?",输出具体的参数相关的知识,希望对你有一定的参考价值。

参考技术A <property name="hibernate.show_sql">false</property> 参考技术B 自己打印一下啦

Hibernate的api使用

Query对象

  1 使用query对象,不需要写sql语句,但是写hql语句

    (1)hql:hibernate query language,hibernate提供查询语言,这个hql语句和普通sql语句很相似

    (2)hql和sql语句区别:

      - 使用sql操作表和表字段

      - 使用hql操作实体类和属性

 

  2 查询所有hql语句:

    (1)from 实体类名称

 

  3 Query对象使用

    (1)创建Query对象

    (2)调用query对象里面的方法得到结果

 

    @Test
    void testQuery() throws Exception {
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {
            sessionFactory = HibernateUtils.getSessionFactory();
            session= HibernateUtils.openSession();
            tx = session.beginTransaction();
            
            Query qy = session.createQuery("from User");
            List<User> ls = qy.list();
            for(User user:ls)
            {
                System.out.println(user);
            }
            
            tx.commit();
            
        } catch (Exception e) {
            
            e.printStackTrace();
            tx.rollback();
            
        } finally {
            
            session.close();
            sessionFactory.close();
        }
    }

 

 

Criteria对象

  1 使用这个对象查询操作,但是使用这个对象时候,不需要写语句,直接调用方法实现

 

  2 实现过程

  (1)创建criteria对象

  (2)调用对象里面的方法得到结果

    @Test
    void testCriteria() throws Exception {
        SessionFactory sessionFactory = null;
        Session session = null;
        Transaction tx = null;
        try {
            sessionFactory = HibernateUtils.getSessionFactory();
            session= HibernateUtils.openSession();
            tx = session.beginTransaction();
            
            Criteria criteria = session.createCriteria(User.class);
            List<User> ls = criteria.list();
            for(User user:ls)
            {
                System.out.println(user);
            }
            
            tx.commit();
            
        } catch (Exception e) {
            
            e.printStackTrace();
            tx.rollback();
            
        } finally {
            
            session.close();
            sessionFactory.close();
        }
    }

 

SQLQuery对象

  1 使用hibernate时候,调用底层sql实现

 

  2 实现过程

    (1)创建对象

    (2)调用对象的方法得到结果

            SQLQuery sql = session.createSQLQuery("select * from t_user");
            List<Object[]> ls = sql.list();
            
            for(Object[] object:ls)
            {
                System.out.println(Arrays.toString(object));
            }

      返回list集合每部分是数组

 

      返回list中每部分是对象形式

            SQLQuery sql = session.createSQLQuery("select * from t_user");
            
            sql.addEntity(User.class);
            
            List<User> ls = sql.list();
            
            for(User object:ls)
            {
                System.out.println(object);
            }
            
            tx.commit();

 

以上是关于如果让hibernate的hql语句不输出"?",输出具体的参数的主要内容,如果未能解决你的问题,请参考以下文章

hibernate hql查询 与Criteria 查询语句区别和效率

hibernate HQL添加语句

(hibernate)如果我想查询表的总记录数,HQL语句应该怎么写?又如何获得值呢?

HQL单表查询 ---- Hibernate之查询语句

hibernate之HQL查询

hibernate中hql语句中list和iterate区别