NHibernate COUNT(*) 统计问题
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(*) 统计问题的更多相关文章
- MySql的count统计结果
起因:最近在学习mysql的数据库,发现在innodb表中大数据量下count(*)的统计结果实在是太慢,所以想找个办法替代这种查询,下面分享一下我查找的过程. 实践:在给出具体的结论之前,我们先看看 ...
- 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询
mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件+count 需求: ======================================= ...
- mysql中使用count()统计的特殊之处
如果你的需要是统计总行数时,为什么要使用count(*),而避免使用指定具体的列名? count()函数里面的参数是列名的的时候,那么会计算有值项的次数.也就是,该列没有值的项并不会进入计算范围.这样 ...
- Spark:java api实现word count统计
方案一:使用reduceByKey 数据word.txt 张三 李四 王五 李四 王五 李四 王五 李四 王五 王五 李四 李四 李四 李四 李四 代码: import org.apache.spar ...
- Mysql查询优化之 触发器加中间表 方法优化count()统计大数据量总数问题
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6138288.html 在上一篇博文我们提到,分页有三种方法.其中,第三种是我们最常用的.然而,在实际应用过程中 ...
- hadoop fs:du & count统计hdfs文件(目录下文件)大小的用法
hadoop fs 更多用法,请参考官网:http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_shell.html 以下是我的使用hadoop fs -du统计文 ...
- 大家都在用MySQL count(*)统计总数,到底有什么问题?
在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数.统计用户总数等.一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长,最后竟然出现慢查询 ...
- sql count统计技巧
select count(1) from table where columnname=value 写成 select count(case when columnname=value than 1 ...
- count distinct 多个字段 或者 count(*) 统计group by 结果
SELECT COUNT(*) FROM( SELECT 列名 FROM 表名 where ( 条件 )GROUP BY 多字段)临时表名 例如: SELECT COUNT(*) FROM(SELEC ...
随机推荐
- S3C2440A特殊寄存器
S3C2440A特殊寄存器 特殊寄存器有: 输入输出端口 存储器控制器 NANDFLASH 看门狗定时器 时钟和电源管理 PWM定时器 UART USB设备 中断控制器 DMA LCD控制器 RTC ...
- Java注解 看这一篇就够了
注解 1.概念 注解:说明程序的.给计算机看的 注释:用文字描述程序的.给程序员看的 注解的定义:注解(Annotation),也叫元数据.一种代码级别的说明.它是JDK1.5及以后版本引入的一个特性 ...
- win10环境下如何修改Python pip的更新源?
1.在window的文件夹窗口输入 : %APPDATA%2.在弹出的路径中新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件,然后再里面输入内容 [global] timeout = ...
- Mass Spectrometry-Compatible Subcellular Fractionation for Proteomics 质谱兼容的蛋白质组学的亚细胞分离(解读人:王茹凯)
文献名:Mass Spectrometry-Compatible Subcellular Fractionation for Proteomics(质谱兼容的蛋白质组学的亚细胞分离) 期刊名:Jpor ...
- [ctfhub]SQL注入
今天在ctfhub整理了几个sql注入的解题过程,还算是比较详细的. 知识点都是比较常见的:每个题大致涉及的知识点用一张表格解释 !注:下方的 information_schema.xxxxxxxxx ...
- 洛谷1363 幻象迷宫dfs
题目网址:https://www.luogu.com.cn/problem/P1363 迷宫是无限多块地图拼接而成的,问是否可以在迷宫中走无限远.解决方案是dfs,走出初始地图之后的位置映射到原位置( ...
- 第十一周Java实验作业
实验十一 集合 实验时间 2018-11-8 1.实验目的与要求 (1) 掌握Vetor.Stack.Hashtable三个类的用途及常用API: Vector类类似长度可变的数组,其中只能存放对 ...
- 第三周java实验报告
实验三 Java基本程序设计(2) 实验时间 2018-9-13 第一部分:理论知识回顾 第一章 再次了解了java“白皮书”的关键术语,java的常见术语,对于大多数“白皮书”的关键术语依然 ...
- C 2013笔试题
1.把整数分解成素数 如90=2*3*3*5 [见2015年] 方法一: int main() { int n, i=2; printf("\nInput:"); scanf(&q ...
- 基于海龟编辑器python少儿编程
Python 少儿教程 为什么要学习编程 扫地机器人.物流机器人.自动泊车系统.无人超市.3D打印.微信.支付宝等等,随着人工智能时代的到来,越来越多的岗位将被机器人所替代. 所以,学习编程的最终目的 ...