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数组做个中间媒介

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

  • 相关阅读:
    < java.util >-- Set接口
    Codeforces 627 A. XOR Equation (数学)
    Codeforces 161 B. Discounts (贪心)
    Codeforces 161 D. Distance in Tree (树dp)
    HDU 5534 Partial Tree (完全背包变形)
    HDU 5927 Auxiliary Set (dfs)
    Codeforces 27E. Number With The Given Amount Of Divisors (暴力)
    lght oj 1257
    Codeforces 219D. Choosing Capital for Treeland (树dp)
    Codeforces 479E. Riding in a Lift (dp + 前缀和优化)
  • 原文地址:https://www.cnblogs.com/miao817/p/3759459.html
Copyright © 2011-2022 走看看