表現層必須經過Business業務規則層操做數據庫,不能直接調用DataAccess數據訪問。web
connectionString配置節已轉移到web.config中進行配置sql
xml配置文件統一放在Model項目中,使用embedded內嵌,無需複製xml文件到運行目錄數據庫
Log4net配置:緩存
Web.config中配置log4net須要自動記錄的Ibatis.net服務器
Global中配置啓動log4net日誌功能微信
protected void Application_Start(object sender, EventArgs e)微信開發
{框架
log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/log4net.config")));工具
}測試
//根據ID得到對象 EXH_WechatMenuRule menuRule = new EXH_WechatMenuRule(); EXH_WXMember member = memberRule.GetByID(id); //得到全部的數據 IList<EXH_WXMember> memberList = memberRule. SelectAll(); //按條件得到 IDictionary parm = new Dictionary<string, object>(); arm.Add("Token", Token); IList<EXH_WXMember> memberList = memberRule.SelectByCondition(parm);
//單個對象增長 EXH_WechatMenuRule menuRule = new EXH_WechatMenuRule(); EXH_WechatMenu menuModel = new EXH_WechatMenu(); menuModel.MenuName = 「測試」; menuModel.IsUse =1; menuModel.ID =new Guid(); menuRule.Insert(menuModel); //批量增長 IList< EXH_WechatMenu > addList = new List< EXH_WechatMenu>(); EXH_WechatMenu menuModel = new EXH_WechatMenu(); EXH_WechatMenu menuModel 2= new EXH_WechatMenu(); … addList.Add(menuModel); addList.Add(menuModel2); menuRule. Insert(addList);
//單個對象修改 EXH_WechatMenuRule menuRule = new EXH_WechatMenuRule(); EXH_WechatMenu menuModel = memberRule.GetByID(id);//根據ID得到對象 menuModel.MenuName = 「測試1」; menuModel.IsUse =2; menuRule.Save(menuModel); //批量修改 IList< EXH_WechatMenu > updList = new List< EXH_WechatMenu>(); EXH_WechatMenu menuModel = new EXH_WechatMenu(); EXH_WechatMenu menuModel 2= new EXH_WechatMenu(); … updList.Add(menuModel); updList.Add(menuModel2); menuRule. Save (updList);
//單個對象刪除 EXH_WechatMenuRule menuRule = new EXH_WechatMenuRule(); menuRule.Delete(id); //批量刪除 IList< EXH_WechatMenu > delList = new List< EXH_WechatMenu>(); EXH_WechatMenu menuModel = new EXH_WechatMenu(); EXH_WechatMenu menuModel 2= new EXH_WechatMenu(); … delList.Add(menuModel); delList.Add(menuModel2); menuRule. Delete (delList);
業務規則必須經過DAO業務規則層操做數據庫,不能直接操做數據庫,非報表不能包含SQL。
ibatis.net實體配置文件xml;業務實體類;枚舉變量數據
約定:通用BaseRule的方法,
查詢必須以SelectAll + Entity對象名稱,如:
<select id="SelectAllEXH_Activity" resultClass="EXH_Activity" >
select *
from EXH_Activity m
</select>
新增必須以Insert + Entity對象名稱,如:
<insert id="InsertEXH_Activity" parameterClass="EXH_Activity">
INSERT INTO EXH_Activity
(…)
</insert>
修改必須以Update + Entity對象名稱,如:
<update id="UpdateEXH_Activity" parameterClass="EXH_Activity">
UPDATE EXH_Activity SET …
</update>
刪除必須以Delete + Entity對象名稱,如:
<delete id="DeleteEXH_Activity" parameterClass="EXH_Activity">
UPDATE EXH_Activity SET …
</delete>
BaseInfo:Model 基類
因爲咱們數據庫表結構默認都會包含字段:id、DataSt(是否有效)、CreateDate、 CreateUser、ModifyUser等字段,因此全部的實體繼承BaseInfo幷包含這些字段,可根據本身的需求去除這些字段屬性
Rules 各個模塊業務規則;系統寫死固定值放在BaseDefault類中
Wechat.API微信開發公用接口—將在微信框架中詳細說明
protected IEntityDAO<T> dao = DAOFactory.CreateEntityDAO<T>();
IDictionary parameter = new Dictionary<string, object>();
parameter.Add("ID", id);
return dao.SelectOne(t, parameter);
dao.Insert(t);
dao.Update(t);
dao.Delete(t);
批量處理—可多個不一樣對象同時提交
IEntityDAO<BaseInfo> myDAO = new EntityDAO<BaseInfo>();
List<BaseInfo> addList = new List<BaseInfo>();
List<BaseInfo> delList = new List<BaseInfo>();
myDAO.AddUpdDelList(addList, null, delList);
實體Rule流程:EntityDAOàBaseDAOàIbatisNetFactoryàMs SqlServer
EntityDAO:爲實體封裝的相關實體操做方法
BaseDAO:供Rule調用的基本方法合集
IbatisNetFactory:調用Ibatis.net ORM的數據實際操做類,自動讀取運行時Web.config中的數據庫鏈接字符串配置
DAOFactory 爲非實體調用時公開給Rule調用的工廠,可自由切換不一樣數據庫
Interceptor Castle.DynamicProxy AOP 攔截器,目前排除在項目外,在文件夾中可找到
MySqlDAO是MysqlDAO數據訪問類 --目前僅提供sql操做,獨立使用
加解密
文件上傳圖片服務器
dataset操做
Excel導入導出
緩存
HTTP 請求處理
Json 處理
日誌記錄
數據校驗類