魔兽争霸3冰封王座地图下载

 找回密碼
 馬上注冊

QQ登錄

只需一步,快速開始

掃一掃,訪問微社區

分布式系統框架(V1.3) 輕松承載百億數據,千萬流量!討論專區 - 源碼下載 - 官方教程

HttpHelper萬能框架(V2.3-含.netcore) HttpHelper官方出品,無敵框架討論區 - 源碼下載 - 在線測試和代碼生成

HttpHelper爬蟲類(V2.0) 最牛的爬蟲類,沒有爬不到只有想不到 源碼 - 代碼生成器 - 討論區 - 教程- 例子

查看: 1043|回復: 3
打印 上一主題 下一主題

魔兽争霸3官网下载: [討論] 新版分布式框架中 一個極簡單的DAL層

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2019-2-16 19:13:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
新版分布式框架中  一個極簡單的DAL層

我們在使用三層或多層時,都必須要有一個層必須是DAL,在新的分布式框架中

我將直接使用一個封裝極簡單的DAL層方便大家使用

比如你要對一個表進行,增刪改查等操作,或者更復雜的數據庫操作,只需要這樣寫
[C#] 純文本查看 復制代碼
 魔兽争霸3冰封王座地图下载 www.6251207.com using jjoobb_agentoaModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace jjoobb_agentoaBLL
{
    /// <summary>
    /// 回訪跟蹤記錄 操作類
    /// </summary>
    public class Crm_TrackBLL : BaseDAL<Crm_Track>
    {
        /// <summary>
        /// 數據庫鏈接字符串
        /// </summary>
        protected override string ConnName
        {
            get { return DALConfig.JJoobbAgentOa; }
        }
    }
}



這里就只需要繼承一下BaseDAL
就行了,
第二步是配置一個鏈接字符串,這個與之前的框架相同,主要是為了將每個表分布到不同的服務器上使用
擁有的方法如下
[C#] 純文本查看 復制代碼
#region 程序集 SufeiDAL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// D:\JJoobb2019\sufeiDAL\SufeiDAL\bin\Debug\SufeiDAL.dll
#endregion

using System.Collections.Generic;
using System.Data;

namespace SufeiDAL.BaseApi
{
    //
    // 摘要:
    //     dal數據庫基類
    //
    // 類型參數:
    //   T:
    public abstract class BaseDAL<T>
    {
        protected BaseDAL();

        //
        // 摘要:
        //     配置要鏈接數據庫的字符串
        protected abstract string ConnName { get; }

        //
        // 摘要:
        //     根據sql語句查詢條數
        //
        // 參數:
        //   sql:
        //     sql
        //
        //   parameters:
        //     查詢參數
        public long Count(string sql, IDictionary<string, object> parameters);
        //
        // 摘要:
        //     根據sql語句查詢條數
        //
        // 參數:
        //   sql:
        //     sql
        public long Count(string sql);
        //
        // 摘要:
        //     查詢總條數
        public long Count();
        //
        // 摘要:
        //     根據sql語句刪除數據
        //
        // 參數:
        //   sql:
        //     sql語句
        //
        //   parameters:
        //     參數字典
        public int Delete(string sql, IDictionary<string, object> parameters = null);
        //
        // 摘要:
        //     執行命令,返回影響行數
        //
        // 參數:
        //   commandType:
        //     命令類型
        //
        //   commandText:
        //     命令文本
        //
        //   parameters:
        //     參數字典
        public int ExecuteNonQuery(CommandType commandType, string commandText, IDictionary<string, object> parameters);
        //
        // 摘要:
        //     執行命令,返回首行首列
        //
        // 參數:
        //   commandType:
        //     命令類型
        //
        //   commandText:
        //     命令文本
        //
        //   parameters:
        //     參數字典
        public object ExecuteScalar(CommandType commandType, string commandText, IDictionary<string, object> parameters);
        //
        // 摘要:
        //     查詢所有數據
        public List<T> FindList();
        //
        // 摘要:
        //     根據SQl語句執行存儲過程查詢數據
        //
        // 參數:
        //   sql:
        //     sql語句
        //
        //   parameters:
        //     參數列表
        //
        //   commandType:
        //     指定執行SQl語句還是存儲過程
        public List<T> FindList(string sql, IDictionary<string, object> parameters, CommandType commandType = CommandType.Text);
        //
        // 摘要:
        //     根據sql語句查詢數據
        //
        // 參數:
        //   sql:
        //     sql語句
        //
        //   top:
        //     top 默認為全部
        public List<T> FindList(string sql, int top = 0);
        //
        // 摘要:
        //     根據sql語句查詢一條數
        //
        // 參數:
        //   sql:
        //     sql語句
        public T FindListOne(string sql);
        //
        // 摘要:
        //     查詢分頁數據,返回數據列表
        //
        // 參數:
        //   factor:
        //     分頁因子,TableName可選
        //
        //   totalCount:
        //     輸出參數,總條數
        public List<T> FindListPage(OrmLitePageFactor factor, out long totalCount);
        //
        // 摘要:
        //     根據指定字段查詢數據
        //
        // 參數:
        //   conditions:
        //     字段字典
        //
        //   orderBy:
        //     排序
        //
        //   commandType:
        //     指定執行SQl語句還是存儲過程
        public List<T> FindListWhere(IDictionary<string, object> conditions, string orderBy = "", CommandType commandType = CommandType.Text);
        //
        // 摘要:
        //     插入實體,返回影響行數或自增列
        //
        // 參數:
        //   obj:
        //
        //   selectIdentity:
        //     是否返回自增列
        public long insert(T obj, bool selectIdentity = false);
        //
        // 摘要:
        //     插入實體,返回影響行數或自增列
        //
        // 參數:
        //   table:
        //     表名
        //
        //   fields:
        //     字段字典
        //
        //   selectIdentity:
        //     是否返回自增列
        public long insert(string table, IDictionary<string, object> fields, bool selectIdentity = false);
        //
        // 摘要:
        //     執行命令,返回實體列表
        //
        // 參數:
        //   commandType:
        //     命令類型
        //
        //   commandText:
        //     命令文本
        //
        //   ps:
        //     參數列表
        public List<T> SelectOriginal(CommandType commandType, string commandText, params IDbDataParameter[] ps);
        //
        // 摘要:
        //     根據主鍵修改字段
        //
        // 參數:
        //   obj:
        //
        //   updateFields:
        //     要修改的字段
        public int Update(T obj, params string[] updateFields);
        //
        // 摘要:
        //     根據條件修改數據
        //
        // 參數:
        //   updateFields:
        //     被修改的字段字典
        //
        //   conditions:
        //     條件語句
        //
        //   parameters:
        //     參數字段
        public int Update(IDictionary<string, object> updateFields, string conditions, IDictionary<string, object> parameters);
    }
}


使用方法如下
[C#] 純文本查看 復制代碼
  Hr_EmployeeBLL hr_el = new Hr_EmployeeBLL();

            //------------------------------------------------------查詢------------------------------------------------------------------------
            //查詢所有
            List<Hr_Employee> list = hr_el.FindList();

            //根據條件查詢
            list = hr_el.FindList("UserID=232");

            //根據條件查詢  支持直接自己寫SQl語句 
            list = hr_el.FindList("select top 5 * from Hr_Employee where UserID<>@UserID", DictBuilder.Assign("UserID", 109));

            //根據條件查詢 參數必須出現在語句中
            list = hr_el.FindList("[email protected] and [email protected]", DictBuilder.Assign("UserID", 233).Assign("Password", 12345));

            //根據條件查詢 自動組織參數
            list = hr_el.FindListWhere(DictBuilder.Assign("Password", "12345").IN("UserID", new int[] { 233, 1180, 326, 325 }));

            long totalcount = 0;
            //根據條件查詢-分頁
            list = hr_el.FindListPage(
                new OrmLitePageFactor()
                {
                    Conditions = "UserID<>@UserID",
                    OrderBy = "UserID desc",
                    PageIndex = 2,
                    PageSize = 20,
                    Params = DictBuilder.Assign("UserID", 109)
                },
                out totalcount);

            //------------------------------------------------------寫入------------------------------------------------------------------------
            Hr_Employee obj = new Hr_Employee()
            {
                Birthday = string.Empty,
                BranchID = 1,
                CheckinDate = DateTime.Now,
                UserName = "sufei"
            };
            //long userid = hr_el.Insert(obj, true);
            //------------------------------------------------------修改------------------------------------------------------------------------
            int result = 0;

            obj = new Hr_Employee()
            {
                Birthday = string.Empty,
                CheckinDate = DateTime.Now,
                UserName = "sufei"
            };
             //result = hr_el.Update(obj, new string[] { "Birthday", "UserName", "CheckinDate" });

            //條件修改
            result = hr_el.Update(
               DictBuilder.Assign("UserName", "sufei"), "[email protected]",
               DictBuilder.Assign("UserName1", "sufei"));
            //------------------------------------------------------刪除------------------------------------------------------------------------

            //result = hr_el.Delete("[email protected]", DictBuilder.Assign("UserName", "sufei"));

            //------------------------------------------------------其他------------------------------------------------------------------------
            long countall = hr_el.Count();//總行
            long count = hr_el.Count("UserID<>@UserID", DictBuilder.Assign("UserID", 1516));//sql查詢
            count = hr_el.Count("UserID<>1516");//單SQl查詢


好了,就是這個簡單,對于敏捷開發應該有很大有幫助,
很快會更新,,,,
沙發
發表于 2019-2-19 10:52:08 | 只看該作者
板凳
發表于 2019-4-9 11:28:36 | 只看該作者
地板
發表于 2019-9-6 20:09:43 | 只看該作者
您需要登錄后才可以回帖 登錄 | 馬上注冊

本版積分規則

QQ|手機版|小黑屋|手機版|聯系我們|關于我們|廣告合作|魔兽争霸3冰封王座地图下载 ( 豫ICP備17001017號-1)

GMT+8, 2019-10-19 05:58

© 2017-2018

快速回復 魔兽争霸3冰封王座地图下载 返回列表
11选5任选七投注技巧 南昌站街女多少钱 巴恩斯 龙虎输五赢六什么意思 竞彩足球即时比分直播 后三组六规律技巧 赌大小从20的稳赢方案 襄樊华凯酒店小姐 龙虎稳赢的公式方法 赌骰子押大小可控制吗 郑州沐足麻将 北京pk10遗漏是什么 开户送38体验金不限id的平台 澳洲赛车彩票平台 三肖六码三肖6码免费公开 体彩投注单打印机