Hibernate之查询

来源:互联网 发布:游戏开发程序员 编辑:程序博客网 时间:2024/06/06 01:13

Hibernate的查询常用的分为三种:
1、HQL—>Hibernate Query Language
2、 SQL—>本地的查询
3、Cretiria查询:是Hibrnate的设计者为了方便 不会编写Sql语句的人使用的
其中最常用的是HQL,这里主要说的也是HQL。
HQL(在Hibernate中使用最多的) 面向对象的查询 具有高的可移植性 和底层的表没有关系 即使有关系那也是间接性的关系 查询的时候直接查询的我们的JAVA对象。
HQL如何使用呢?

基于主键来进行查询

Session session=new Configuration().configure().buildSessionFactory().openSession();User user=session.get(User.class, 4);System.out.println(user);session.close();

HQL查询所有的数据

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select u from User u");        List list=query.list();        System.out.println(list);        session.close();

带条件的查询

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select u from User u where uId>2");        List list=query.list();        System.out.println(list);        session.close();

//带条件的查询between and

    Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select u from User u where uId between 2 and 4");        List list=query.list();        System.out.println(list);        session.close();

查询数据并封装成对象

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select new User(uId,uPassword) from User");        List list=query.list();        System.out.println(list);        session.close();

模糊查询

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select new User(uId,uPassword) from User where uPassword like '%1234%'");        List list=query.list();        System.out.println(list);        session.close();

下面这种jdk1.8之前可以用,1.8以后也可以用,但会有方法已过时的提醒。

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select new User(uId,uPassword) from User where uPassword like?");        query.setString(0, "%1234%");        List list=query.list();        System.out.println(list);        session.close();

给占位符整个名字

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select new User(uId,uPassword) from User where uPassword=:uPassword");        query.setParameter("uPassword", "1234");        List list=query.list();        System.out.println(list);        session.close();

分组查询

    Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select uPassword,count(*) from User u group by u.uPassword");        List list=query.list();        System.out.println(list);        session.close();

分页查询

Session session=new Configuration().configure().buildSessionFactory().openSession();        Query query= session.createQuery("select new User(uId,uPassword) from User");         //分页:获取一共有所少数据           ScrollableResults results=query.scroll();           //表示的是滚动到末尾           results.last();           //下面就可以获取一共的数据条目数了           long count=results.getRowNumber()+1;           //打印我们的一共的数据条目数           System.out.println("获取到的一共的数据是:"+count);           //接下来我们就应该设置             //分页查询的重点  要设置要从那一条数据查询   要查询多少条数据           query.setFirstResult(1);           query.setMaxResults(2);           //接下来就应该查询数据了           List list=query.list();           System.out.println(list);           session.close();

内连接查询

Session session=new Configuration().configure().buildSessionFactory().openSession();        //Query query=session.createQuery("from Dept d inner join d.emps");        Query query=session.createQuery("from Employ e inner join e.dept");        List list=query.list();        //以谁为主查询,谁就在前面        for (Object object : list) {            Object[] b =(Object[]) object;            System.out.println(b[0]);            System.out.println(b[1]);        }

左连接查询(右连接与之类似)

Session session=new Configuration().configure().buildSessionFactory().openSession();        //Query query=session.createQuery("from Dept d inner join d.emps");        Query query=session.createQuery("from Dept d left join d.emps");        List list=query.list();        //以谁为主查询那么水谁就在前面        for (Object object : list) {            Object[] b =(Object[]) object;            System.out.println(b[0]);            System.out.println(b[1]);        }

迫切连接

Session session=new Configuration().configure().buildSessionFactory().openSession();        //Query query=session.createQuery("from Dept d inner join d.emps");        Query query=session.createQuery("from Employ e left join fetch e.dept");        List list=query.list();        //以谁为主查询,谁就在前面          System.out.println(list);
原创粉丝点击