hibernate分组与聚合查询Hibernate groups and aggregate queries.docx
- 文档编号:23867053
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:18
- 大小:18.77KB
hibernate分组与聚合查询Hibernate groups and aggregate queries.docx
《hibernate分组与聚合查询Hibernate groups and aggregate queries.docx》由会员分享,可在线阅读,更多相关《hibernate分组与聚合查询Hibernate groups and aggregate queries.docx(18页珍藏版)》请在冰豆网上搜索。
hibernate分组与聚合查询Hibernategroupsandaggregatequeries
hibernate分组与聚合查询(Hibernategroupsandaggregatequeries)
Learningwebsite:
Hibernategroupingandaggregationqueries(nativeSQLandHQLusingcasewhenthenelseend)
UsenativeSQLforqueriesusinghibernate
Theviewplaincopytoclipboardprint?
//serverdeploymentstatisticsqueryclassIdcStatisticSpec
PublicclassIdcStatisticSpecextendsAbstQueryStringSpec{
/**machineroomID*/
PrivateIntegercompLocaId;
/**thestarttimeofthequery
PrivateDatebeginDate;
/*****
PrivateDateendDate;
//omitgetset
PublicStringthequeryString(){
StringBufferSQL=newStringBuffer(
"SELECTappcalledsimplyMRL,app.OPERATION_ID,app.ThePRODUCT_ID,"
+"sum"(if(cab.type='ONSHOW',1,0))asonshowNumber,"
"Sum"(if(cab.Type='WITHDRAW',1,0))as
"Sum"(if(cab.Type='MOVE',1,0))asmoveNumber,"
"+"sum(cab.Type='WITHDRAW'andcab.reversion='RETURN',1,0))asreturnNumber"
+"FROMchanage_applyapp,chanage_cabinetscab,chanage_cabinets_executeexe"
+"WHEREapp.Id=cab.APPLICATION_IDANDapp.id=exe.APPLICATION_ID"
+"ANDapp.MRLisnotnullANDapp.mrl!
=0"
+"ANDapp.operation_idisnotnullANDapp.operation_id!
=0"
+"ANDapp.product_idisnotnullANDapp.product_id!
=0"
+"ANDexe.Attitude='Y'");
If(QuerySpecUtil.Valid(compLocaId)){
SQL.Append("ANDapp.CalledsimplyMRL=:
compLocaId");
}
If(QuerySpecUtil.Valid(beginDate)){
SQL.Append("ANDexeEXECUTE_TIME>=:
beginDate");
}
If(QuerySpecUtil.Valid(endDate)){
SQL.Append("ANDexeEXECUTE_TIME<=:
endDate");
}
SQL.Append("GROUPBYappcalledsimplyMRL,app.OPERATION_ID,app.ThePRODUCT_ID");
ReturntheSQL.ThetoString();
}
@Override
Protectedvoidreset(){
CompLocaId=null;
BeginDate=null;
EndDate=null;
}
}
//serverdeploymentstatisticsqueryclassIdcStatisticSpec
PublicclassIdcStatisticSpecextendsAbstQueryStringSpec{
/**machineroomID*/
PrivateIntegercompLocaId;
/**thestarttimeofthequery
私人beginDate日期;
/**查询的结束时间*/
私人endDate日期;
//省略得到设置
公共字符串变量(){
StringBuffersql=新的StringBuffer(
“选择app.MRL、app.OPERATION_IDapp.PRODUCT_ID。
”
+sum(如果(cab.type='ONSHOW'1,0))作为onshowNumber
“sum”(如果(cab.type='撤退',1,0))作为撤军的数量
+sum(如果(cab.type='移动',1,0))作为moveNumber
+"和(如果(出租车。
类型='撤退'和cab.降级='返回',1,0))作为返回值
+"从chanageapply应用,chanage橱柜出租,chanage家俱,执行exe"
+“app.id=出租车。
APPLICATION_ID和app.id=exe。
APPLICATION_ID”
+“和。
mrl不是空的,也不是。
mrl!
=0"
+“和app.operationID不是空的,也不是。
操作ID!
=0"
+“和app.productID不是null和app……productID!
=0"
+”和exe。
态度=Y”);
如果(QuerySpecUtil.valid(compLocaId)){
sql。
追加(“app.MRL=:
compLocaId”);
}
如果(QuerySpecUtil.valid(beginDate)){
sql。
追加(exe。
EXECUTE_TIME>=:
beginDate”);
}
如果(QuerySpecUtil.valid(endDate)){
sql。
追加(exe。
EXECUTE_TIME<=:
endDate”);
}
sql。
附加(“GROUPBYapp.mrlapp.OPERATION_ID,应用。
PRODUCT_ID”);
返回sql.toString();
}
@Override
保护无效重置(){
compLocaId=零;
beginDate=零;
endDate=零;
}
}
视图plaincopyclipboardprint吗?
//后台服务类
公共类idc统计学cimpl扩展了EossBaseService实现了iidc统计数据
公共列表的统计数据(idc统计规范规范)
会议会话=baseDAO.getSessionFactory().getCurrentSession();
列表sqlList=新的ArrayList();
SQLQuerySQLQuery=session.createSQLQuery(spec.queryString());
如果(spec.getCompLocaId()!
=null){
sqlQuerysqlQuery=(sqlQuery)。
setParameter(“compLocaIdspec.getCompLocaId());
}
如果(spec.getBeginDate()!
=null){
sqlQuerysqlQuery=(sqlQuery)。
setParameter(“beginDatespec.getBeginDate());
}
如果(spec.getEndDate()!
=null){
sqlQuerysqlQuery=(sqlQuery)。
setParameter(“endDatespec.getEndDate());
}
//查询数据
sqlList=sqlQuery.list();
列出了新ArrayList的新数组();
如果(sqlList!
=null&&!
sqlList.isEmpty()){
for(对象obj:
hqlList)
对象objs=(对象)obj;
//机房
整数推广=Integer.valueOf(obj[0].toString());
字符串compLocaName=baseDAO.findById(ComputerLocation.class
推广).getname();
//所属业务
整数operationId=Integer.valueOf(obj[1].toString());
字符串operationName=baseDAO.findById(Operation.class
operationId).getOperationName();
//项目名称
整数productId=Integer.valueOf(obj[2].toString());
字符串productName=baseDAO.findById(产品。
类,productId)
.getPrudName();
整数onshowNumber=Integer.valueOf(obj[3].toString());
整数withdrawNumber=Integer.valueOf(obj[4].toString());
整数moveNumber=Integer.valueOf(obj[5].toString());
整数returnNumber=Integer.valueOf(obj[6].toString());
新的idc统计();
idcBO.setCompLocaId(推广);
idcBO.setOperationId(operationId);
idcBO.setProductId(productId);
idcBO.setCompLocaName(compLocaName);
idcBO.setOperationName(operationName);
idcBO.setProductName(productName);
idcBO.setOnshowNumber(onshowNumber);
idcBO.setWithdrawNumber(withdrawNumber);
idcBO.setMoveNumber(moveNumber);
idcBO.setReturnNumber(returnNumber);
idcBO。
setTotalOnshowNumber(onshowNumber);
idcBO.setTotalWithdrawNumber(withdrawNumber);
idcBO.setTotalMoveNumber(moveNumber);
idcBO.setTotalReturnNumber(returnNumber);
idcList.add(idcBO);
}
}
//计算每个机房上架,下架,迁移,归还数
Map,Map=新的HashMap小于String,idc统计波();
for(inti=0;i小于idclist.size();i++)
IdcStatisticBOidc=idcList.get(我);
如果(map.containsKey(idc.getCompLocaName())){
IdcStatisticBOmapValue=map.get(idc.getCompLocaName());
idc.setTotalOnshowNumber(idc.getOnshowNumber()
+mapValue.getTotalOnshowNumber());
idc.setTotalWithdrawNumber(idc.getWithdrawNumber()
+mapValue.getTotalWithdrawNumber());
idc.setTotalMoveNumber(idc.getMoveNumber()
+mapValue.getTotalMoveNumber());
idc.setTotalReturnNumber(idc.getReturnNumber()
+mapValue.getTotalReturnNumber());
map.put(idc.getCompLocaName()、idc);
其他}{
map.put(idc.getCompLocaName()、idc);
}
}
for(inti=0;i小于idclist.size();i++)
IdcStatisticBOidc=idcList.get(我);
for(迭代器=map.keyset().Iterator();.hasnext();)
如果(idc.getCompLocaName().equals(it.next())){
IdcStatisticBOmapvalue=map.get(idc.getCompLocaName());
idc.setTotalOnshowNumber(mapvalue.getTotalOnshowNumber());
idc.setTotalWithdrawNumber(mapvalue
.getTotalWithdrawNumber());
idc.setTotalMoveNumber(mapvalue.getTotalMoveNumber());
国际数据公司(idc)。
setTotalReturnNumber(mapvalue.getTotalReturnNumber());
}
}
}
返回idcList;
}
}
//后台服务类
公共类idc统计学cimpl扩展了EossBaseService实现了iidc统计数据
公共列表的统计数据(idc统计规范规范)
会议会话=baseDAO.getSessionFactory().getCurrentSession();
列表sqlList=新的ArrayList();
SQLQuerySQLQuery=session.createSQLQuery(spec.queryString());
如果(spec.getCompLocaId()!
=null){
sqlQuerysqlQuery=(sqlQuery)。
setParameter(“compLocaIdspec.getCompLocaId());
}
如果(spec.getBeginDate()!
=null){
sqlQuerysqlQuery=(sqlQuery)。
setParameter(“beginDatespec.getBeginDate());
}
如果(spec.getEndDate()!
=null){
sqlQuerysqlQuery=(sqlQuery)。
setParameter(“endDatespec.getEndDate());
}
//查询数据
sqlList=sqlQuery.list();
列出了新ArrayList的新数组();
如果(sqlList!
=null&&!
sqlList.isEmpty()){
for(对象obj:
hqlList)
对象objs=(对象)obj;
//机房
整数推广=Integer.valueOf(obj[0].toString());
字符串compLocaName=baseDAO.findById(ComputerLocation.class
推广).getname();
//所属业务
整数operationId=Integer.valueOf(obj[1].toString());
字符串operationName=baseDAO.findById(Operation.class
operationId).getOperationName();
//项目名称
整数productId=Integer.valueOf(obj[2].toString());
字符串productName=baseDAO.findById(产品。
类,productId)
.getPrudName();
整数onshowNumber=Integer.valueOf(obj[3].toString());
整数withdrawNumber=Integer.valueOf(obj[4].toString());
整数moveNumber=Integer.valueOf(obj[5].toString());
整数returnNumber=Integer.valueOf(obj[6].toString());
新的idc统计();
idcBO.setCompLocaId(推广);
idcBO.setOperationId(operationId);
idcBO。
setProductId(productId);
idcBO.setCompLocaName(compLocaName);
idcBO.setOperationName(operationName);
idcBO.setProductName(productName);
idcBO.setOnshowNumber(onshowNumber);
idcBO.setWithdrawNumber(withdrawNumber);
idcBO.setMoveNumber(moveNumber);
idcBO.setReturnNumber(returnNumber);
idcBO.setTotalOnshowNumber(onshowNumber);
idcBO.setTotalWithdrawNumber(withdrawNumber);
idcBO.setTotalMoveNumber(moveNumber);
idcBO.setTotalReturnNumber(returnNumber);
idcList.add(idcBO);
}
}
//计算每个机房上架,下架,迁移,归还数
Map,Map=新的HashMap小于String,idc统计波();
for(inti=0;i小于idclist.size();i++)
IdcStatisticBOidc=idcList.get(我);
如果(map.containsKey(idc.getCompLocaName())){
IdcStatisticBOmapValue=map.get(idc.getCompLocaName());
idc.setTotalOnshowNumber(idc.getOnshowNumber()
+mapValue.getTotalOnshowNumber());
idc.setTotalWithdrawNumber(idc.getWithdrawNumber()
+mapValue.getTotalWithdrawNumber());
idc.setTotalMoveNumber(idc.getMoveNumber()
+mapValue.getTotalMoveNumber());
idc.setTotalReturnNumber(idc.getReturnNumber()
+mapValue.getTotalReturnNumber());
map.put(idc.getCompLocaName()、idc);
其他}{
map.put(idc.getCompLocaName()、idc);
}
}
for(inti=0;i小于idclist.size();i++)
IdcStatisticBOidc=idcList.get(我);
for(迭代器=map.keyset().Iterator();.hasnext();)
如果(idc.getCompLocaName().equals(it.next())){
IdcStatisticBOmapvalue=map.get(idc.getCompLocaName());
idc.setTotalOnshowNumber(mapvalue.getTotalOnshowNumber());
idc.setTotalWithdrawNumber(mapvalue
.getTotalWithdrawNumber());
idc.setTotalMoveNumber(mapvalue.getTotalMoveNumber());
idc.setTotalReturnNumber(mapvalue.getTotalReturnNumber());
}
}
}
返回idcList;
}
}
二,hibernatehql查询,
使用情况,然后结束
视图plaincopyclipboardprint吗?
公共类idc统计规范扩展了不公开的内容
*//**机房ID
私人整数compLocaId;
/**查询的开始时间*/
私人beginDate日期;
/**查询的结束时间*/
私人endDate日期;
@Override
公共字符串变量(){
StringBufferhql=新的StringBuffer(
“选择app.mrl、app.operationIdapp.productId。
”
+“总和(当出租车。
类型='ONSHOW',然后是另一个0端)作为onshowNumber
+“总和(当出租车。
类型='撤退'然后1'0'结束)作为撤退的数量
+“总和(当出租车。
类型=“移动”,然后是另一个0结束)作为moveNumber
+“总和(当出租车。
类型=“撤回”和出租车。
返回='RETURN'然后是1'0结束)作为返回值
从ChanageApply+”应用,ChanageCabinets出租车,ChanageCabinetsExecuteexe”
+“app.id=出租车。
applicationId和app.id=exe。
applicationId”
+”和app.mrl!
=null和app.mrl!
=0"
+”和app.operationId!
=null和app.operationId!
=0"
+”和app.productId!
=null和app.productId!
=0"
+”和exe。
态度=Y”);
如果(QuerySpecUtil.valid(compLoc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate分组与聚合查询Hibernate groups and aggregate queries hibernate 分组 聚合 查询
![提示](https://static.bdocx.com/images/bang_tan.gif)
链接地址:https://www.bdocx.com/doc/23867053.html