SQL排序返回指定个数结果的VO映射

1 篇文章 0 订阅
1 篇文章 0 订阅

一、原生SQL

SELECT
*
FROM
(
SELECT
cpointname AS cpointname,
equipname AS equipname,
COUNT(equipname) AS num
FROM
iis_defect_info d
WHERE
d.deptid IN ('37', '38')
AND d.tenantid = 9
GROUP BY
equipname
ORDER BY
num DESC
LIMIT 5
) t
WHERE

t.equipname IS NOT NULL

二、VO实体类

        private String cpointname;
private Integer num;

private String equipname;

三、拼接查询SQL及结果返回

StringBuffer buffer = new StringBuffer();
String[] cells = deptids.split(",");
int i = 0;
for (String id : cells) {
if ((cells.length - 1) == i++) {
buffer.append("'");
buffer.append(id + "'");
} else {
buffer.append("'");
buffer.append(id + "',");
}
}
String sql = "select * from (SELECT cpointname as cpointname ,equipname as equipname,COUNT(equipname) AS num from iis_defect_info d "
+ "WHERE d.deptid in(" + buffer.toString() + ")AND d.tenantid ='9'"
+ "group by equipname order by num desc limit 5)t where t.equipname is not null";
Query query_xjbhgx = em.createNativeQuery(sql);
query_xjbhgx.unwrap(SQLQuery.class).addScalar("cpointname", StandardBasicTypes.STRING)
.addScalar("equipname", StandardBasicTypes.STRING).addScalar("num", StandardBasicTypes.INTEGER)
.setResultTransformer(Transformers.aliasToBean(Defectinfovo.class));

List<Defectinfovo> tasklst = query_xjbhgx.getResultList();

注意:只能是'37', '38',否则出错

        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值