spring.net +dapper 打造简易的DataAccess 工具类.

  1 public class DBUtil
  2     {
  3         /// <summary>
  4         /// 数据库连接字符串
  5         /// </summary>
  6         private static string DataBase_Connection = System.Configuration.ConfigurationManager.ConnectionStrings["DNT"].ToString();
  7
  8         /// <summary>
  9         /// 脚本文件存放路径
 10         /// </summary>
 11         private static string Data_File_Path = System.Configuration.ConfigurationManager.AppSettings["Data_File_Path"].ToString();
 12
 13         /// <summary>
 14         /// 全局配置文件列表
 15         /// </summary>
 16         public static Dictionary<string, DataConfig> DataConfigList;
 17
 18         /// <summary>
 19         /// 加载配置文件
 20         /// </summary>
 21         public static void InitConfig()
 22         {
 23             var filePath =  Path.Combine(AppDomain.CurrentDomain.BaseDirectory,Data_File_Path);
 24
 25             DirectoryInfo TheFolder = new DirectoryInfo(filePath);
 26             foreach (FileInfo NextFile in TheFolder.GetFiles().Where(f=>f.Extension == ".config"))
 27             {
 28                 Spring.Context.Support.XmlApplicationContext context = new Spring.Context.Support.XmlApplicationContext(NextFile.FullName);
 29                 string[] fileNames = context.ObjectFactory.GetObjectDefinitionNames();
 30
 31                 foreach (var fileName in fileNames)
 32                 {
 33                     var mObj = context.GetObject(fileName);
 34
 35                     if (DataConfigList == null)
 36                     {
 37                         DataConfigList = new Dictionary<string, DataConfig>();
 38                     }
 39
 40                     string keyName = NextFile.Name.Split(‘.‘)[0].ToString() + "." + fileName;
 41
 42                     if (!DataConfigList.ContainsKey(keyName))
 43                     {
 44                         DataConfigList.Add(keyName, mObj as DataConfig);
 45                     }
 46                     else
 47                     {
 48                         throw new ApplicationException("The existence of multiple identical configuration node,plseae check!");
 49                     }
 50                 }
 51             }
 52
 53         }
 54
 55         /// <summary>
 56         /// 获取指定名称SQL
 57         /// </summary>
 58         /// <param name="commandName"></param>
 59         /// <returns></returns>
 60         public static string GetSql(string commandName)
 61         {
 62             InitConfig();
 63
 64             if (!DataConfigList.ContainsKey(commandName))
 65             {
 66                 throw new ApplicationException("Data file can‘t be found!");
 67             }
 68             else
 69             {
 70                 return DataConfigList[commandName].commandText;
 71             }
 72
 73         }
 74
 75         /// <summary>
 76         /// 获取数据库连接
 77         /// </summary>
 78         /// <returns></returns>
 79         public static SqlConnection GetConnection()
 80         {
 81             SqlConnection connection = new SqlConnection(DataBase_Connection);
 82             connection.Open();
 83
 84             return connection;
 85         }
 86
 87         /// <summary>
 88         /// 获取Command
 89         /// </summary>
 90         /// <param name="commandName"></param>
 91         /// <returns></returns>
 92         public static IDbCommand CreateCommand(string commandName)
 93         {
 94             var connection = GetConnection();
 95
 96             using (IDbCommand command = connection.CreateCommand())
 97             {
 98                 command.CommandText = GetSql(commandName);
 99                 return command;
100             }
101         }
102
103         /// <summary>
104         /// 执行查询动作
105         /// </summary>
106         /// <typeparam name="T"></typeparam>
107         /// <param name="command"></param>
108         /// <param name="pars"></param>
109         /// <returns></returns>
110         public static List<T> Query<T>(string commandName, dynamic pars)
111         {
112             using (IDbCommand command = DBUtil.CreateCommand(commandName))
113             {
114                 return SqlMapper.Query<T>(command.Connection, command.CommandText, pars);
115             }
116         }
117     }

SQL配置文件管理

  • 支持多文件 (Order.config,  Item.config....), DBUtil 会在调用时加配置文件加入内存中缓存,待下次时候,直接读取内存数据.
 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <objects xmlns="http://www.springframework.net"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://www.springframework.net
 5         http://www.springframework.net/xsd/spring-objects.xsd">
 6   <object id="GetOrderList" type="SpringDemo.DataConfig,SpringDemo">
 7     <property name="commandText">
 8       <value>
 9         <![CDATA[
10            SELECT TOP(@Size) * FROM dbo.Order
11          ]]>
12       </value>
13     </property>
14   </object>
15
16 <object id="GetOrderDetail" type="SpringDemo.DataConfig,SpringDemo">
17     <property name="commandText">
18       <value>
19         <![CDATA[
20            SELECT TOP(@Size) * FROM dbo.OrderDetail WHERE OrderID = @OrderID
21          ]]>
22       </value>
23     </property>
24   </object>
25 </objects>

Demo代码

class Program
    {
        static void Main(string[] args)
        {
            List<Order> OrderList = GetOrderList(1000);

            OrderList.ForEach(f =>
            {
                Console.WriteLine(f.OrderNumber);
            });

            Console.ReadLine();
        }

        public static List<Order> GetOrderLIST(int size)
        {
            return DBUtil.Query<Order>("Order.GetOrderList", new { Size = size }).ToList();
        }
       public static List<OrderDetail> GetOrderDetail(int size,int orderId)
        {
            return DBUtil.Query<OrderDetail>("Order.GetOrderDetail", new { Size = size,OrderID = orderId  }).ToList();
        }
}

spring.net +dapper 打造简易的DataAccess 工具类.

时间: 2024-07-28 23:19:34

spring.net +dapper 打造简易的DataAccess 工具类.的相关文章

Spring Assert断言 (方法入参检测工具类-断言)

Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查,如果入参不符合要求,方法将通过抛出异常的方式拒绝后续处理.举一个例子:有一个根据文件名获取输入流的方法:InputStream getData(String file),为了使方法能够成功执行,必须保证 file 入参不能为 null 或空白字符,否则根本无须进行后继的处理.这时方法的编写者通常会在方法体的最前面编写一段对入参进行检测

C# 一个简易的Producer-Consumer工具类

一.关于本文 本文中实现的PCHelper类是一个简易的Producer-Consumer操作工具类.该类可以实现如下目标:由多个线程向其中的一个Queue中写入数据,同时由多个线程负责接收Queue中数据进行处理. 二.工具类代码 /// <summary> /// Producer-Consumer操作类 /// </summary> public class PCHelper {     readonly object listlock = new object(); //线

Spring 的优秀工具类盘点第 2 部分

特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题.下面是 Web 开发者最常面对需要转义的特殊字符类型: HTML 特殊字符: JavaScript 特殊字符: SQL 特殊字符: 如果不对这些特殊字符进行转义处理,则不但可能破坏文档结构,还可以引发潜在的安全问题.Spring 为 HTML 和 JavaScript 特殊字符提供了转义操作工具类,

spring常用的工具类

spring给我们提供了很多的工具类, 应该在我们的日常工作中很好的利用起来. 它可以大大的减轻我们的平时编写代码的长度. 因我们只想用spring的工具类, 而不想把一个大大的spring工程给引入进来. 下面是我从spring3.0.5里抽取出来的工具类. 在最后给出我提取出来的spring代码打成的jar包 spring的里的resouce的概念, 在我们处理io时很有用. 具体信息请参考spring手册 内置的resouce类型 UrlResource ClassPathResource

Spring 的优秀工具类盘点---转

第 1 部分: 文件资源操作和 Web 相关工具类 http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/ 文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来说,JDK 的这些操作类所提供的方法过于底层,直接使用它们进行文件操作不但程序编写复杂而且容易产生错误.相比于 JDK 的

Spring 常用的一些工具类

学习Java的人,或者开发很多项目,都需要使用到Spring 这个框架,这个框架对于java程序员来说.学好spring 就不怕找不到工作.我们时常会写一些工具类,但是有些时候 我们不清楚,我们些的工具类,是否稳定,可靠.对于有看spring 源码习惯的人,其实,spring框架本身自带了很多工具类,其实,我有一个想法,就是想把一些常用的方法,从spring 整理整理出来,然后编译成jar包,因为有些时候,项目并不需要引用所有jar包进入的.这边整理了一些spring 常用的类,共大家参照: s

spring中常用工具类介绍

文件资源操作 Spring 定义了一个 org.springframework.core.io.Resource 接口,Resource 接口是为了统一各种类型不同的资源而定义的,Spring 提供了若干 Resource 接口的实现类,这些实现类可以轻松地加载不同类型的底层资源,并提供了获取文件名.URL 地址以及资源内容的操作方法 访问文件资源* 通过 FileSystemResource 以文件系统绝对路径的方式进行访问:* 通过 ClassPathResource 以类路径的方式进行访问

Spring 的优秀工具类盘点

文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来说,JDK 的这些操作类所提供的方法过于底层,直接使用它们进行文件操作不但程序编写复杂而且容易产生错误.相比于 JDK 的 File,Spring 的 Resource 接口(资源概念的描述接口)抽象层面更高且涵盖面更广,Spring 提供了许多方便易用的资源操作工具类,它们大大降低资源操作的复杂度

(转)Spring 的优秀工具类盘点

第 1 部分: 文件资源操作和 Web 相关工具类 http://www.ibm.com/developerworks/cn/java/j-lo-spring-utils1/ 文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来说,JDK 的这些操作类所提供的方法过于底层,直接使用它们进行文件操作不但程序编写复杂而且容易产生错误.相比于 JDK 的