Hibernate的HQL查询语法
一、HQL语法:
(一)基础语法
1、创建sql查询语句。
简单写法:String sql = " from Customer ";
完整写法:String sql = " from cn.xxx.bean.Customer;
2、获取Query查询对象。
使用Session对象调用创建Query查询对象的方法。
Query query = session.createQuery(sql);
3、调用Query对象的查询方法。
List list = query.list();
(二)排序查询。
降序:“ from Customer order by cust_id desc”
升序:“ from Customer order by cust_id asc”
(三)条件查询。
1、创建sql语法。
String sql = “ from Customer where cust_id = ?”
String sql2 = “ from Customer where cust_id = :id”
2、获取查询对象。
Query query = session.createQuery(sql);
3、设置查询条件。
query.setParameter(0, 2l); // 这里的0代表的是第一个占位符。
query.setParameter("id", 2l);
4、调用查询方法。
(四)分页查询。
调用Query对象中一系列Set方法。
query.setFirstResult(0); // 设置开始页。
query.setMaxResult(5); // 设置分页的大小。
调用query的查询方法即可。
(五)聚合函数。
数量:String sql = " select count(*) from Customer ";
求和:String sql = " select sum(cust_id) from Customer ";
平均值:String sql = " select avg(cust_id) from Customer ";
最大值:String sql = " select max(cust_id) from Customer ";
最小值:String sql = " select min(cust_id) from Customer ";
(六)多表查询。
1、原生的SQL。
隐式内连接:select * from A, B where B.aid = A.id;
显示内连接:select * from A inner join B on B.aid = A.id;
外连接:select * from A left outer join B on B.aid = A.id; 左外连接 outer可省略 将left换为right时为右外连接。
2、HQL语法。
内连接:String sql = " from Customer C inner join C.linkMens ";
注意:需要将查询结果直接映射到对象时,要在SQL查询语法中加上fetch。
String sql = " from Customer C inner join fetch C.linkMens ";
List<Customer> list = query.list();
外连接:" select Customer C left join C.linkMens ";
" select Customer C right join C.linkMens ";
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端