Exemple #1
0
        /// <summary>
        /// 获取自定义筛选的sql语句(只能用于GeDefinedList、GetDefinedCount)
        /// </summary>
        /// <param name="sqlType">数据库类型(只能用于GeDefinedList、GetDefinedCount)</param>
        /// <param name="paramObj">参数</param>
        /// <param name="pageNo">页码</param>
        /// <param name="pageSize">页大小</param>
        /// <param name="isLike">是否用like</param>
        /// <param name="filterStr">自定义筛选字段</param>
        /// <param name="orderStr">排序字符串</param>
        /// <returns>操作字符串</returns>
        public static String GetDefinedSqlStr <T>(SqlType sqlType, T paramObj = null, Int32 pageNo = -1, Int32 pageSize = -1, Boolean isLike = false, String filterStr = "", String orderStr = "") where T : class
        {
            var mType  = GetType <T>(sqlType);
            var andStr = isLike ? "like" : "=";

            // 处理参数
            var result = mData[mType.Key][sqlType];

            if (paramObj != null)
            {
                // 取得实体的所有字段
                Dictionary <String, Object> modelFields = JsonConvert.DeserializeObject <Dictionary <String, Object> >(JsonConvert.SerializeObject(paramObj));
                foreach (KeyValuePair <String, Object> field in modelFields)
                {
                    // 过滤空数据,bool类型,int类型,过滤时间(只支持字符串)
                    if (field.Value == null)
                    {
                        continue;
                    }

                    var value = field.Value.ToString();
                    if (StringTool.IsDateTime(value))
                    {
                        continue;
                    }
                    if (String.IsNullOrEmpty(value.Trim(' ')))
                    {
                        continue;
                    }

                    switch (value)
                    {
                    case "True":
                    case "False":
                    case "0":
                    case "00000000-0000-0000-0000-000000000000":
                    case "00:00:00":
                        break;

                    default:
                        result += $" and `{field.Key}` " + andStr + (isLike ? $" '%{value}%'" : $" '{value}'");
                        break;
                    }
                }
            }

            result += " " + filterStr + orderStr;

            // page参数添加
            if (pageNo != -1 && pageSize != -1)
            {
                result += $" Limit {(pageNo - 1) * pageSize},{pageSize}";
            }

            return(result + ";");
        }