zoukankan      html  css  js  c++  java
  • NBIbatis 框架体系说明

    框架体系说明

     

    Application 表现层

    表现层必须通过Business业务规则层操作数据库,不能直接调用DataAccess数据访问。

    •   Sqlmap.config配置:

             connectionString配置节已转移到web.config中进行配置

             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);

    Business 业务规则

    业务规则必须通过DAO业务规则层操作数据库,不能直接操作数据库,非报表不能包含SQL。

    •   Model

             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微信开发公用接口—将在微信框架中详细说明

    •   Rule查询

    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);

    DataAccess 数据访问

    •   DAO 数据访问

    实体Rule流程:EntityDAOàBaseDAOàIbatisNetFactoryàMs SqlServer

    EntityDAO:为实体封装的相关实体操作方法

    BaseDAO:供Rule调用的基本方法合集

    IbatisNetFactory:调用Ibatis.net ORM的数据实际操作类,自动读取运行时Web.config中的数据库连接字符串配置

    DAOFactory 为非实体调用时公开给Rule调用的工厂,可自由切换不同数据库

    Interceptor Castle.DynamicProxy AOP 拦截器,目前排除在项目外,在文件夹中可找到

    MySqlDAO是MysqlDAO数据访问类  --目前仅提供sql操作,独立使用

    •   Utility 工具帮助

    加解密

    文件上传图片服务器

    dataset操作

    Excel导入导出

    缓存

    HTTP 请求处理

    Json 处理

    日志记录

    数据校验类

  • 相关阅读:
    算法学习——贪心篇
    Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
    小白创建网站的曲折之路
    7.2.5 多层嵌套的if语句
    7.2.4 else与if配对
    7.2.3
    7.4 electirc.c -- 计算电费
    oracle数据库命令行查看存储过程
    Linux下如何查看进程准确启动时间
    7.2 if else 语句
  • 原文地址:https://www.cnblogs.com/eugenewu0808/p/4252630.html
Copyright © 2011-2022 走看看