应用IBatisNet+Castle进行项目的开发
最近在做一个项目,项目的需求不够明确,这是做项目的大忌,但是没有办法。项目的架构采用Dotnet平台使用C#进行开发,为了加快项目的开发进度,采用代码生成工具之MyGeneration 生成业务基本代码,数据持久层采用IBatisNet,事务处理采用Castle的事务处理代码块,整体采用Castle IOC容器进行组装。
IBatisNet的SQL语句放在XML文件中,SQL语句同代码的分离,带来的好处很多,修改数据库的结构,只需要使用代码生成器生成XML文件和数据库表对应的业务实体,直接使用生成的业务实体代码替换原来的业务实体文件和XML文件,DAO和BLL的代码都不需要修改,降低了修改数据库结构的风险。
数据层主要的工作就是写sql代码,独立出来区别对待确实很有好处,对最简单的sql语句,ibatisnet 也可以帮我们生成,可以说是伸缩有度!,复杂的SQL主要是查询,统计这样的功能,这样的功能实现采用一个接口:
/// <summary>
/// 通用的以DataTable的方式得到Select的结果(xml文件中参数要使用$标记的占位参数)
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>得到的DataTable</returns>
DataTable GetDataTable(string tag, object paramObject) ;
/// <summary>
/// 通用得到参数化后的SQL(xml文件中参数要使用$标记的占位参数)
/// </summary>
/// <param name="tag">语句ID</param>
/// <param name="paramObject">语句所需要的参数</param>
/// <returns>获得的SQL</returns>
string GetSql(string tag, object paramObject);
功能实现采用IBatisNet的DataAccess组件,可以得到执行的SQL语句。复杂的查询总是有很多的条件,要构造这样的条件本来就是麻烦事,通过IBatisNet一切都变得很简单。
通过DataTable,IList,自定义实体的结合,在开发中提供最灵活的数据传递对象。
应用IBatisNet+Castle进行项目的开发的更多相关文章
- 再论IBatisNet + Castle进行项目的开发
随着项目的进展,Castle和IBatisNet给我的惊喜更多.Com+很重,不需要分布式的中小项目慎用,NHibernate虽好,NHibernate的2005-9-20发布了最新版本1.0-rc1 ...
- 基于ABP开发框架的技术点分析和项目快速开发实现
在我们开发各种项目应用的时候,往往都是基于一定框架进行,同时配合专用的代码生成工具,都是为了快速按照固定模式开发项目,事半功倍,本篇随笔对基于ABP开发框架的技术点进行分析和ABP框架项目快速开发实现 ...
- AngularJS初探:搭建PhoneCat项目的开发与测试环境
AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 对于PhoneCat项目的 ...
- 实战突击: Java Web项目整合开发(PDF)
实战突击: Java Web项目整合开发(PDF)
- 搭建PhoneCat项目的开发与测试环境
AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 获取源代码 PhoneCa ...
- Castle Windsor 项目中快速使用
Castle Windsor 项目中快速使用 新建项目如下: 一个模型类,一个接口,一个实现方法.我的目的很明确就是在UI层通过Castle 调用数据访问层的方法. 添加项目引用 CastleDemo ...
- 项目架构开发:数据访问层之Cache
数据访问层简单介绍 数据访问层,提供整个项目的数据访问与持久化功能.在分层系统中所有有关数据访问.检索.持久化的任务,最终都将在这一层完成. 来看一个比较经典的数据访问层结构图 大概可以看出如下信息 ...
- 项目架构开发:数据访问层之Logger
接上文 项目架构开发:数据访问层之Cache 本章我们继续ILogger的开发 ILogger.cs public interface ILogger { void Info(object messa ...
- 项目架构开发:数据访问层之Repository
接上文 项目架构开发:数据访问层之Logger 本章我们继续IRepository开发,这个仓储与领域模式里边的仓储有区别,更像一个工具类,也就是有些园友说的“伪仓储”, 这个仓储只实现单表的CURD ...
随机推荐
- Annotation:系统内建Annotation
1,掌握系统内建的三个Annotation. Annotation被称为元数据特效,也被称为注释,即:使用注释方式,加入一些程序信息. Java.lang.annotation接口是所有Annotai ...
- 基于RxJava2+Retrofit2简单易用的网络请求实现
代码地址如下:http://www.demodashi.com/demo/13473.html 简介 基于RxJava2+Retrofit2实现简单易用的网络请求,结合android平台特性的网络封装 ...
- python安装scrapy小问题总结
AttributeError: 'module' object has no attribute 'OP_NO_TLSv1_1'
- 实验c语言不同类型的指针互用(不推荐只是学习用)
#include <stdio.h> int main(int argc, char *argv[]) { printf("Hello, world\n"); ]; i ...
- Nav titleView 设置的两个方式
1.self.navigationItem.titleView = vv; 2.[self.navigationController.navigationBar addSubview:vv];
- atitit.项目设计模式---ioc attilax总结
atitit.项目设计模式---ioc attilax总结 1. .IOC的之前 1 2. ioc后的实现 1 3. 认识引入IOC框架的缺点, 2 4. 自己实现ioc 3 4.1. ioc框架的实 ...
- Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用
Atitit.获取主板与bios序列号获取硬件设备信息 Wmi wmic 的作用 1 获取硬件核心基础核心基础Wmi1 2 其他资料2 3 Wmic WMI 命令行接口2 4 Atitit.获取主板 ...
- [svc][op]如何查看当前Ubuntu系统的版本
如何查看当前Ubuntu系统的版本 说来也惭愧,用Ubuntu差不多快1个月了,双系统是让朋友安的,只知道自己使用的是什么12版本的,具体怎么看还不知道,下面写一下查看当前Linux系统的版本的方法 ...
- 【c#】装箱与拆箱
从内存执行的角度来看,值类型的内存分配在线程的堆栈上,而引用类型的内存分配在托管堆上.因此从值类型向引用类型的转换,势必牵涉到数据的拷贝与指针引用等操作. 装箱操作,大致过程为:在托管堆中分配新对象的 ...
- asp.net写日志权限问题
asp.net网站程序写不了日志,都是这个原因. 程序池的身份标识,设为内置的网络服务即可.