框架体系说明

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

menuModel.ID =new Guid();

menuRule.Insert(menuModel);

//批量增加

IList< EXH_WechatMenu > addList =  new List< EXH_WechatMenu>();

EXH_WechatMenu menuModel = new EXH_WechatMenu();

EXH_WechatMenu menuModel = 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 =;

menuRule.Save(menuModel);

//批量修改

IList< EXH_WechatMenu > updList =  new List< EXH_WechatMenu>();

EXH_WechatMenu menuModel = new EXH_WechatMenu();

EXH_WechatMenu menuModel = 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 = 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 处理

日志记录

数据校验类

NBIbatis 框架体系说明的更多相关文章

  1. HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID

    HealthKit开发快速入门教程之HealthKit框架体系创建健康AppID HealthKit开发准备工作 在开发一款HealthKit应用程序时,首先需要讲解HealthKit中有哪些类,在i ...

  2. Java集合框架体系JCF

    Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...

  3. ABP之框架体系

    一 .框架体系的介绍 ABP框架采用的是DDD(领域驱动设计)的原则,可以很方便实现项目之间的松耦合,采用模块化的方式,方便对框架的扩展. 按照DDD的原则,首先将项目分为四层: 展现层:用来展现给用 ...

  4. java集合类-集合框架体系

    集合框架体系 集合框架体系是由Collection.Map和 Iterator(迭代器) 实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口 Collection体系 Set接口:元素无序且不 ...

  5. Java 集合框架体系总览

    尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...

  6. 十五、Java基础---------集合框架体系以及List

    在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...

  7. feed4junit 实现junit4框架体系下数据驱动

    junit 是一款很好用的测试框架,但是该框架在并行和数据驱动方面没有提供支持,往往我们队这2个需求是很迫切的,不过有需求就会有人去做,有心思的人出现了,feed4junit 出现了,弥补了junit ...

  8. Java中集合框架体系

    集合的体系结构:     |--Collection(单列集合的根接口)         |--List(子接口):元素是有序的,元素可以重复.因为该集合体系有索引.             |--A ...

  9. Java集合框架体系详细梳理,含面试知识点。

    一.集合类 集合的由来: 面向对象语言对事物都是以对象的形式来体现,为了方便对多个对象的操作,就需要将对象进行存储,集合就是存储对象最常用的一种方式. 集合特点: 1,用于存储对象的容器.(容器本身就 ...

随机推荐

  1. nginx 命令

    nginx 命令 sudo /etc/init.d/nginx configtest     测试是否配置有错 sudo /usr/local/nginx/sbin/nginx -s reload   ...

  2. hdu 2196 computer

    Computer Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  3. html中的块元素(Block)和内联元素(Inline)(转)

    我们首先要了解,所有的html元素,都要么是块元素(block).要么是内联元素(inline).下面了解一下块元素.内联元素各自的特点: 块元素(block)的特点: 1.总是在新行上开始:2.高度 ...

  4. linux系统man命令用法和安装方法

    Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可. Linux的man手册共有以下几个章节: 代號 代表內容 1 使用者在shell中可以操作的指令或可 ...

  5. sql ltrim rtrim

    sql中用LTRIM ( ),RTRIM ( ).分别截断首尾空格,返回字符表达式. 例1: DECLARE @string_to_trim varchar(60)SET @string_to_tri ...

  6. PHP--字符串处理函数

    字符串的声明 1. 2. 3. [注]单引号与双引号声明字符串的区别: 1.strlen():获取字符串长度 2.substr():截取字符串 3.strpos():查找字符串在指定字符串中的位置 4 ...

  7. jQuery -> bind / live / delegate 的终结者 - on

    Bind()方法: 给元素绑定事件 形式: .bind(eventType[,eventData],handler(eventObject)) eventType,string类型,一个或多个DOM事 ...

  8. 实现公告栏无缝滚动的js代码(转)

    <!DOCTYPE HTML> <html> <head> <meta charset="gb2312" /> <title& ...

  9. Windows平台使用Gitblit搭建Git服务器图文教程

    Git服务现在独树一帜,相比与SVN有更多的灵活性,最流行的开源项目托管网站Github上面,如果托管开源项目,那么就是免费使用的,但是闭源的项目就会收取昂贵的费用,如果你不缺米,那么不在本文讨论的范 ...

  10. PHP static关键字

    声明类成员或方法为static,就可以不实例化类而直接访问.不能通过一个对象来访问其中的静态成员(静态方法除外). 为了兼容PHP4,如果没有指定“可见性”,属性和方法默认为public. 由于静态方 ...