zoukankan      html  css  js  c++  java
  • 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数组做个中间媒介

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

  • 相关阅读:
    【转】医院信息系统基本功能规范---门急诊划价收费分系统功能规范
    elementUI的table表头与内容错位的解决方案
    小程序按钮设置宽度无效的解决方案
    小程序scroll-view的bindscroll在真机上不触发的解决方案?
    小程序怎么设置input框和键盘的距离
    小程序动态获取元素高度报错VM14689:1 thirdScriptError Cannot read property 'height' of null;at SelectorQuery callback function TypeError: Cannot read property 'height' of null
    mpvue使用px与设计稿的转化
    SpringBoot中前后端数据交互
    Java并发-BlockingQueue
    Java并发-Fork/Join框架
  • 原文地址:https://www.cnblogs.com/miao817/p/3759459.html
Copyright © 2011-2022 走看看