Hibernate查询方式之:HQL查询(需要使用的类是:Query)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongxu_yuan/article/details/54731450
hibernate查询方式之:HQL查询方式:
HQL语句正对的是实体类的名称和实体类的属性进行操作
1.查询所有
格式:from 实体类名称
Query query = session.createQuery("from User");
List<User> list = query.list();
for(User u :list){
System.out.println(u);
}
2.条件查询
(1)from 实体类名称 where 实体类的属性名称=?;
Query query = session .createQuery("from User u where u.name=? and u.id=?");
//给?赋值,一般从0开始
query.setParameter(0,"kevin");
query.setParameter(1,12);//表示name=kevin;id=12的数据信息
List<User> list = query.list();

(2)模糊查询:
格式:from 实体类名称 where 实体类属性名称 like ? ;
Query query = session.createQuery("from User u where u.name like ?);
query.setParameter(0,k_);//以k开头,并且只有两个字母的数据信息
//query.setParameter(0,"%k%");
List<User> list = query.list();
3.排序查询
使用关键字 order by
格式:from 实体类名称 order by 实体类属性名称 asc/desc //asc:升序 ;desc:降序
Query query = session.createQuery("from User u order by u.id asc");
List<User> list = query.list();

4.分页查询:
在mysql中分页查询方式:
select * from t_user limit 0,3;//从0开始,每页显示数据为3条
在hibernate中如何使用分页查询?
//先查询所有
Query query = session.createQuery("from User");
//设置开始查询位置
query.setFirstResult(0);
//设置每页查询的数据
query.setMaxResult(3);
List<User> list = query.list();

5.投影查询:就是查询部分,所有在泛型中要写Object类型
格式:select 实体类属性名称 from 实体类名称;
注意:不能使用* ;不支持这个*写法;
Query query = session.createQuery("select u.name from User u");
List<Object> list = query.list():

6.聚合函数查询
count avg sum max min
格式:
select 聚合函数  from 实体类名称
Query query = session.createQuery("select count(*) from User");
//调用的是uniquenResult()方法
//返回的是Object
//要转成成int类型,先强制转换成Long类型,在通过intValue()方法转换成Int方法
Object count = query.uniquenResult();
Long num = (Long)count
int number = num.intValue();
System.out.println(number);
补充:
在mysql中聚合函数的使用:
1) COUNT
  SELECT COUNT(*) FROM emp;
  --> 计算emp表中所有列都不为NULL的记录的行数
  SELECT COUNT(comm) FROM emp;
  --> 云计算emp表中comm列不为NULL的记录的行数
如果行数里面的内容全部为空,那么不计数了。


2) MAX
  SELECT MAX(sal) FROM emp;
  --> 查询最高工资


3) MIN
  SELECT MIN(sal) FROM emp;
  --> 查询最低工资


4) SUM
  SELECT SUM(sal) FROM emp;
  --> 查询工资合


5) AVG
  SELECT AVG(sal) FROM emp;
  --> 查询平均工资

猜你喜欢

转载自blog.csdn.net/zhongxu_yuan/article/details/54731450