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. 用原生JS实现爱奇艺首页导航栏

    以下是爱奇艺首页的一个导航栏,用原生js写的,静态页面效果如下: 代码如下: <html> <head> <title>爱奇艺</title> < ...

  2. Go 武林外传 - 初出茅庐

    没有旁白. 我叫小白, 白痴的白. 老头说我太笨了, 提前放我下山, 让我自生自灭. 对了, 忘了说了, 那老头是我师傅. 虽然我的内心深处是拒绝的, 但是我又打不过老头, 只好收拾铺盖滚犊子了. 算 ...

  3. 二、create-react-app自定义配置

    这里主要讲解添加less  和  实现Antd按需加载 首选需要执行npm run eject 暴露所有内建的配置 ,这是后面所有配置的基础,这个必须优先执行! 一.实现Antd按需加载 按需加载插件 ...

  4. 0919-The Standard of Code Review

    The primary purpose of code review is to make sure that the overall code health of Google’s code bas ...

  5. mysql5.7 ERROR 1045 (28000): Access denied for user解决方法

    https://blog.csdn.net/csy2961903/article/details/51345401  参考此文注意指名数据库mysql.user

  6. MySQL语句-关于表单的操作总结(新手)

    MySQl表的操作: 主键的添加: CREATE TABLE 表名(列名称 数据类型--id INT PRIMARY KEY AUTO_INCREMENT,列名称2 数据类型,············ ...

  7. java -封装一个类。(姓名、年龄、性别)

    //定义一个类. public class Maopao1{ //创建私有的对象. private String name; private int age; private String sex; ...

  8. 【转】linux中ifconfig 命令详解详解

    1 概述 ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置.用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在.要想将上述的配置信息永远的存的电 ...

  9. ysoserial分析【一】 之 Apache Commons Collections

    目录 前言 基础知识 Transformer 利用InvokerTransformer造成命令执行 Map TransformedMap LazyMap AnnotationInvocationHan ...

  10. Model、Form、ModelForm的比较

    Model.Form.ModelForm 本节内容: 1:Model 2:Form 3:Model Form 1 2 3 http://www.cnblogs.com/wupeiqi/articles ...