Hibernate中的查询方式

 一、这里一共写了三种查询的方式

1、

HQL查询-hibernate Query Language(多表查询,但不复杂时使用)

2、

Criteria查询(单表条件查询),无语句面向对象查询

3、

原生SQL查询(复杂的业务查询)
public class QueryMode {
    public static  void main(String[] args){
        QueryMode mode=new QueryMode();
        mode.HQLBaseQuery();
        
    } 
    /*
     * 一、HQL查询-hibernate Query Language(多表查询,但不复杂时使用)
     * 1.基本查询
     * 2.条件查询:(1)?号占位符;(2)命名占位符
     * 3.分页查询
     */
    @Test
    public  void HQLBaseQuery(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        String hql=" from Users";//书写hql语句
        Query query = session.createQuery(hql);
        List<Users> list = query.list();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
    @Test
    public  void HQLConditionQuery(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        //String hql=" from Users where id=?";//?好占位符查询
        String hql=" from Users where id=:id";//命名占位符查询
        Query query = session.createQuery(hql);
        //query.setParameter(0, 11);
        query.setParameter("id", 10);
        Users users = (Users) query.uniqueResult();
        System.out.println(users.toString());
        session.close();
        sf.close();
    }
    @Test
    //分页查询
    public  void HQLQueryWithPage(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        String hql=" from Users";//
        Query query = session.createQuery(hql);
        query.setFirstResult(2);
        query.setMaxResults(3);
        List<Users> list = query.list();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
    /*
     * 二、Criteria查询(单表条件查询),无语句面向对象查询
     * 1.基本查询
     * 2.条件查询
     * 3.分页查询
     * 4.设置查询总记录数
     */
    @Test
    public  void criteriaBaseQuery(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        Criteria criteria=session.createCriteria(Users.class);
        List<Users> list = criteria.list();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
    /*
     * (>,gt),(>=,ge),(<,lt),(<=,le),(==,eq),(!=,ne),
     * (in,in),(between and,between),(like,like),(or,or),(and,and)
     * (is not null,isNotNull),(is null,isNull)
     */
    @Test
    public  void criteriaIfQuery(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        Criteria criteria=session.createCriteria(Users.class);
        criteria.add(Restrictions.eq("id", 11));
        Users users = (Users) criteria.uniqueResult();
        System.out.println(users.toString());
        session.close();
        sf.close();
    }
    @Test
    public  void criteriaQueryWithPage(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        Criteria criteria=session.createCriteria(Users.class);
        criteria.setFirstResult(2);
        criteria.setMaxResults(3);
        List<Users> list = criteria.list();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
    /*
     * 三、原生SQL查询(复杂的业务查询)
     * 1.基本查询:(1)返回数据List;(2)返回对象List
     * 2.条件查询
     * 3.分页查询
     */
    @Test
    public  void SqlBaseQueryList1(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        String sql="select * from users ";
        SQLQuery query = session.createSQLQuery(sql);
        List<Object[]> list = query.list();//返回数据List
        for(int i=0;i<list.size();i++){
            System.out.println(Arrays.toString(list.get(i)));
        }
        session.close();
        sf.close();
    }
    @Test
    public  void SqlBaseQueryList2(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        String sql="select * from users ";
        SQLQuery query = session.createSQLQuery(sql);
        query.addEntity(Users.class);//指定将结果集封装到哪个对象中
        List<Users> list = query.list();//返回对象List
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
    @Test
    public  void SqlIfQuery(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        String sql="select * from users where id = ?";
        SQLQuery query = session.createSQLQuery(sql);
        query.setParameter(0, 10);
        query.addEntity(Users.class);
        List<Users> list = query.list();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
    @Test
    public  void SqlQueryWithPage(){
        Configuration cf=new Configuration().configure();
        SessionFactory sf=cf.buildSessionFactory();
        Session session=sf.openSession();
        String sql="select * from users limit  ?,?";
        SQLQuery query = session.createSQLQuery(sql);
        query.setParameter(0, 5);
        query.setParameter(1, 3);
        query.addEntity(Users.class);
        List<Users> list = query.list();
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i).toString());
        }
        session.close();
        sf.close();
    }
}
原文地址:https://www.cnblogs.com/mathlin/p/9552919.html