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; –> 查询平均工资
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100808.html原文链接:https://javaforall.cn