Hibernate的查询功能

1.Query对象

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

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

    (2)使用sql操作表和表字段

        使用hql操作类与属性

代码演示:

public class HibernateQueryDemo {
    //Query对象
    @Test
    public void testQuery() {
        SessionFactory sf=null;
        Session session=null;
        Transaction tx=null;
        try {
            sf=HibernateUtils.getSessionFactory();
            session=sf.openSession();
            tx=session.beginTransaction();
            //
            Query query=session.createQuery("from User");//查询语句为from加类名
            List<User> list=query.list();
            for (User user : list) {
                System.out.println(user);
            }
            //
            tx.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tx.rollback();
        }finally {
            session.close();
            sf.close();
        }
    }
}

 

2.Criteria象

 

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

 

3.SQLQuery对象

调用底层sql语句

@Test
    public void testQuery() {
        SessionFactory sf=null;
        Session session=null;
        Transaction tx=null;
        try {
            sf=HibernateUtils.getSessionFactory();
            session=sf.openSession();
            tx=session.beginTransaction();
            //
//            SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
//            List<Object[]> list=sqlQuery.list();//返回的是数组的形式
//            for (Object[] object : list) {
//                System.out.println(Arrays.toString(object));
//            }
            //
            SQLQuery sqlQuery=session.createSQLQuery("select * from t_user");
            sqlQuery.addEntity(User.class);
            List<User> list=sqlQuery.list();//返回User对象
            for (User user : list) {
                System.out.println(user);
            }
            //
            tx.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tx.rollback();
        }finally {
            session.close();
            sf.close();
        }

Utils模板

package com.littlepage.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtils {
    private static Configuration cf;
    private static SessionFactory sf;
    static {
        cf = new Configuration().configure();
        sf = cf.buildSessionFactory();
    }
    public static SessionFactory getSessionFactory() {
        return sf;
    }
    public static void main(String[] args) {
        
    }
    public static Session getSessionObject() {
        return sf.getCurrentSession();
    }
}

事务模板

import java.util.Arrays;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;


public class HibernateQueryDemo {
    //Query对象
    @Test
    public void testQuery() {
        SessionFactory sf=null;
        Session session=null;
        Transaction tx=null;
        try {
            sf=HibernateUtils.getSessionFactory();
            session=sf.openSession();
            tx=session.beginTransaction();
            //
//            事务内容
            //
            tx.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tx.rollback();
        }finally {
            session.close();
            sf.close();
        }
    }
}

 

posted @ 2018-09-14 04:27  SteveYu  阅读(175)  评论(0编辑  收藏  举报