应用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,自定义实体的结合,在开发中提供最灵活的数据传递对象。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恰童鞋骚年

.NET基础拾遗(7)Web Service的开发与应用基础

  Web Service基于SOAP协议,而SOAP本身符合XML语法规范。虽然.NET为Web Service提供了强大的支持,但了解其基本机制对于程序员来...

13220
来自专栏Java架构沉思录

如何优雅地用Redis实现分布式锁

什么是分布式锁 在学习Java多线程编程的时候,锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,...

29460
来自专栏SpringBoot 核心技术

第十三章:SpringBoot实战SpringDataJPA构建项目总结

1.1K30
来自专栏用户2442861的专栏

MongoDB 操作简捷版

http://blog.csdn.net/yueguanghaidao/article/details/7483064

11020
来自专栏游戏杂谈

Windows下的搜索神器 —— everything

介绍一款Windows下的神奇 —— everything,软件很小巧,但是搜索速度非常快,比Windows自带的搜索功能更强大、更快。掌握它的基本用法,在查找...

31330
来自专栏跟着阿笨一起玩NET

C#(VB.NET)操作Windows自带的防火墙 之 启用(开启)/禁用(关闭)防火墙

在上一篇 C#(VB.NET)操作Windows自带的防火墙 之 综述篇 里,我们提到了下面这幅图

32320
来自专栏哲学驱动设计

WCF 框架运行时类图

本文画出了 WCF 框架运行时的重点类之间的类关系图。 Binding 一个 Binding 由多个 BindingElement 组成。BindingElem...

20950
来自专栏Java架构沉思录

如何优雅地用Redis实现分布式锁

在学习Java多线程编程的时候,锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同...

9110
来自专栏Linux驱动

45.INIT_WORK()工作队列使用

中断中通过调用schedule_work(work)来通知内核线程,然后中断结束后,再去继续执行work对应的func函数

26010
来自专栏有趣的django

10.Flask上下文

 应用上下文和请求上下文都是存放在一个‘LocalStack’的栈中,和应用app相关的操作就必须要用到应用上下文,比如通过current_app获取当前的这个...

10010

扫码关注云+社区

领取腾讯云代金券