Hibernate中的查询,Query、Criteria、SQLQuery

1、使用Query对象,不须要写sql语句,可是要写hql语句】java

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

  2.hql和sql语句的区别数据库

   -使用sql语句是操做数据库表和字段的数组

   -使用hql语句是操做实体类和属性的session

  3.查询全部属性的hql语句工具

    ①from+实体类名称【sql语句:select * from 表名】测试

  4.Query对象的使用spa

    ①建立Query对象hibernate

    ②调用query对象里面的方法获得结果code

 

package com.lk.hibernate2.test;


import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.query.Query;

import com.lk.hibernate2.entity.User;
import com.lk.hibernate2.util.HibernateUtil;
/**
 * 测试Hibernate查询的方法
 * @author Administrator
 *
 */
public class Test {

    @org.junit.Test
    public void test() {
        Session session=null;
        Transaction transaction=null;
                
        try{
            //获取session(HibernateUtil是我本身建立的一个工具类,专门用来获取session的)
            session=HibernateUtil.getSession();
            transaction=session.beginTransaction();
            //操做业务
            //1.建立一个query对象
            Query query=session.createQuery("from User");
            //2.调用query的list()方法返回值是一个List类型的
            List<User> list=query.list();
            //循环输出值
            for (User user : list) {
                System.out.println(user);
            }
            //提交事务
            transaction.commit();
            
        }catch (Exception e) {
            e.printStackTrace();
            //事务回滚
            transaction.rollback();
        }finally{
            //关闭方法
            HibernateUtil.close();
        }
    }

}

2、Criteria对象

1.使用这个对象查询操做不须要写查询语句,直接调用方法就能够实现

2.实现的过程

  ①建立Criteria对象

  ②调用Criteria里面的方法

@org.junit.Test
    public void testCriteria() {
        Session session=null;
        Transaction transaction=null;
                
        try{
            //获取session(HibernateUtil是我本身建立的一个工具类,专门用来获取session的)
            session=HibernateUtil.getSession();
            transaction=session.beginTransaction();
            //操做业务
            //1.建立一个Criteria对象
            Criteria criteria=session.createCriteria(User.class);
            //2.调用Criteria的list()方法返回值是一个List类型的
            List<User> list=criteria.list();
            //循环输出值
            for (User user : list) {
                System.out.println(user);
            }
            //提交事务
            transaction.commit();
            
        }catch (Exception e) {
            e.printStackTrace();
            //事务回滚
            transaction.rollback();
        }finally{
            //关闭方法
            HibernateUtil.close();
        }
    }

3、SQLQuery对象查询

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

2.实现过程

  ①建立对象

  ②调用对象的方法获得结果

注意:若是用SQLQuery对象直接调用list()方法,返回的集合中元素是以集合的形式出现的,因此要让其以实体类的对象形式出现须要调用addEntity(实体类.class)方法来实现

@org.junit.Test
    public void testSQLQuery() {
        Session session=null;
        Transaction transaction=null;
                
        try{
            //获取session(HibernateUtil是我本身建立的一个工具类,专门用来获取session的)
            session=HibernateUtil.getSession();
            transaction=session.beginTransaction();
            //操做业务
            //1.建立一个SQLQuery对象
            String sql="select * from user";
            SQLQuery sQLQuery=session.createSQLQuery(sql);
            //-------------------
            /*
            //2.调用SQLQuery的list()方法返回值是一个List类型的,list集合里面的元素是以数组的形式存在的
            List<Object[]> list=sQLQuery.list();
            //循环输出值
            for (Object[] objects : list) {
                System.out.println(Arrays.toString(objects));
            }*/
            //--------------------
            
            //让SQLQuery的list()方法返回值中的元素是以对象形式存在的解决办法
            sQLQuery.addEntity(User.class);
            //调用sQLQuery里面的方法
            List<User> list =sQLQuery.list();
            for (User user : list) {
                System.out.println(user);
            }
            
            
            //提交事务
            transaction.commit();
            
        }catch (Exception e) {
            e.printStackTrace();
            //事务回滚
            transaction.rollback();
        }finally{
            //关闭方法
            HibernateUtil.close();
        }
    }
相关文章
相关标签/搜索