NHibernate这个框架用了有一年多了,相对有很大的优势,可以省去很多写Sql的时间。

但是如果你想用它做统计,那么有点抱歉,只能手动写写了。它内置的东西很难符合你的需求。

我遇到的问题是这样的。我需要统计一个表中根据一个字段分组统计这个每个组的数量。这个Sql很简单

表名要用对象名替换,字段也要用对应的属性描述,这个东西折腾了两个小时。以前没用过HQL。头一次。

如果你是一个高手不要见怪。我对这个没有特别深的见解,纯属个人观点。如果看了对你有帮助请帮忙推荐。

勿喷勿怪。大牛略过吧。这是一个小问题。

下面我贴上一段核心代码:

List<RockMessage> list = new List<RockMessage>();

NHibernate.ISession session = SessionFactory.OpenSession();

string sql = @"select COUNT(wechatId) as todayCount ,wechatId,visitNum,inputDate from RockMessage   ";

if (!string.IsNullOrEmpty(ids))

{

sql += " WHERE wechatId IN (" + ids + ") ";

}

if (today)

{

sql += " and inputDate LIKE '%" + DateTime.Now.ToString("yyyy-MM-dd") + "%' ";

}

sql += " GROUP BY wechatId ORDER BY COUNT(wechatId) DESC ";

IQuery q = session.CreateQuery(sql);

//IList<RockMessage> rk = q.List<RockMessage>();

//IList<object> obj = q.List<object>();

IList<object[]> result = q.List<object[]>();

for (int i = 0; i < result.Count; i++)

{

RockMessage rm = new RockMessage();

rm.todayCount = Convert.ToInt32(result[i][0]);

rm.wechatId = Convert.ToString(result[i][1]);

list.Add(rm);

}

//list = (List<RockMessage>)rk;

return list;

其中我犯过几个错误在写SQL的时候,

1.我给统计的COUNT(*)去别名没有用as 这个时候在查询的时候会报错

2.Order by的时候用别名是会报错的。这个要记住。

3. 还有一个就是在转换成List<你的类型>这个时候不能直接查询转换要用object数组做个中间媒介

这个很简单了就,希望对看到的你有帮助吧!

NHibernate COUNT(*) 统计问题的更多相关文章

  1. MySql的count统计结果

    起因:最近在学习mysql的数据库,发现在innodb表中大数据量下count(*)的统计结果实在是太慢,所以想找个办法替代这种查询,下面分享一下我查找的过程. 实践:在给出具体的结论之前,我们先看看 ...

  2. 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询

    mybatis实现 主从表 left join  1:n 一对多 分页查询   主表从表都有查询条件+count 需求: ======================================= ...

  3. mysql中使用count()统计的特殊之处

    如果你的需要是统计总行数时,为什么要使用count(*),而避免使用指定具体的列名? count()函数里面的参数是列名的的时候,那么会计算有值项的次数.也就是,该列没有值的项并不会进入计算范围.这样 ...

  4. Spark:java api实现word count统计

    方案一:使用reduceByKey 数据word.txt 张三 李四 王五 李四 王五 李四 王五 李四 王五 王五 李四 李四 李四 李四 李四 代码: import org.apache.spar ...

  5. Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6138288.html 在上一篇博文我们提到,分页有三种方法.其中,第三种是我们最常用的.然而,在实际应用过程中 ...

  6. hadoop fs:du & count统计hdfs文件(目录下文件)大小的用法

    hadoop fs 更多用法,请参考官网:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html 以下是我的使用hadoop fs -du统计文 ...

  7. 大家都在用MySQL count(*)统计总数,到底有什么问题?

    在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数.统计用户总数等.一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长,最后竟然出现慢查询 ...

  8. sql count统计技巧

    select count(1) from table where columnname=value 写成 select count(case when columnname=value than 1 ...

  9. count distinct 多个字段 或者 count(*) 统计group by 结果

    SELECT COUNT(*) FROM( SELECT 列名 FROM 表名 where ( 条件 )GROUP BY 多字段)临时表名 例如: SELECT COUNT(*) FROM(SELEC ...

随机推荐

  1. 谈谈SQL优化

    写SQL是学习数据库必须掌握的非常重要的技能之一.在学习过程当中,我们会尝试写各种各样满足需求的SQL语句.在实际项目中,优秀的SQL语句和普通的SQL语句的执行速度差别非常大.对于一个数据量很大的系 ...

  2. C# 在DataGridView中,点击单元格调出 TreeView控件 或 ListBox控件

    1.调出 TreeView控件 或  ListBox控件 private void deductGrid1_CellClick(object sender, DataGridViewCellEvent ...

  3. CVE-2013-4710 WebView addJavascriptInterface远程执行代码

    WebView是Android平台下的一个重要组件,通常用来在Activity中嵌入一个简单的浏览器,实现在线网页浏览的功能.比如下面代码实现访问Google页面: WebView webView = ...

  4. go micro实战01:快速搭建服务

    背景 go-micro给我们提供了一个非常便捷的方式来快速搭建微服务,而且并不需要提前系统了解micro,下面用一个简单的示例来快速实现一个服务. 创建Proto文件 因为我们要做微服务,那么就一定有 ...

  5. [枚举] HDU 2019 Multi-University Training Contest 8 - Calabash and Landlord

    Calabash and Landlord Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/ ...

  6. Hook集合----SSDTHook(x86 Win7)

    最近在学习Ring0层Hook的一些知识点,很久就写完SSDTHook的代码了,但是一直没有整理成笔记,最近有时间也就整理整理. 介绍: SSDTHook 实质是利用Ntoskrnl.exe 中全局导 ...

  7. 2020年最新版Web前端学习路线图-前端小白入门必读-pink老师推荐

    Hello,大家好,相信很多学习前端的小伙伴,会有很多的疑惑: 我要学习那些技术? 我要到哪里去学习这些技术呢? 学习这些技术的目的对就业有什么帮助呢? 我学到什么程度可以胜任工作? ... 这里,p ...

  8. ClickHouse学习系列之二【用户权限管理】

    背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在安装完之后首先做的应该如何设置用户密码以及权限控制.因为 ...

  9. coding++:高并发解决方案限流技术-使用RateLimiter实现令牌桶限流-Demo

    RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率. 通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位时 ...

  10. NCEP CFSR数据下载

    一.简介 CFSR(Climate Forecast SystemReanalysis)再分析资料使用了 GEOS-5(Goddard EarthObserving System)大气模式与资料同化系 ...