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);
阅读全文
0 0
- hibernate查询之执行查询
- Hibernate查询之Criteria查询
- Hibernate查询之HQL查询
- Hibernate查询之Example查询
- Hibernate查询之SQL查询
- Hibernate 查询之createCriteria
- Hibernate之HQL查询
- Hibernate之 Criteria查询
- Hibernate 之 查询
- Hibernate之QBC查询
- hibernate之查询
- Hibernate之HQL查询
- Hibernate之分页查询
- Hibernate之投影查询
- Hibernate之Criteria查询
- Hibernate之查询
- Hibernate之分页查询
- Hibernate之查询
- es6 itaertor遍历器
- 继承性
- [bzoj2226] LCMSum 数学+筛法
- java进阶建议阅读的书籍
- python中对文件的操作总结
- Hibernate之查询
- IOS第三方库GPUImage的CameraDemo
- 安装CodeBlocks遇到未找到编译器的问题
- linux后台开发具备能力集锦
- elasticsearh插件runAsDouble里面获取不到枚举值
- 简单工厂模式
- 关于的单例的几种形式以及他们的比较
- Mysql增加外键约束
- java面向对象(四)之重写、重载