public class DBUtil
{
/// <summary>
/// 数据库连接字符串
/// </summary>
private static string DataBase_Connection = System.Configuration.ConfigurationManager.ConnectionStrings["DNT"].ToString(); /// <summary>
/// 脚本文件存放路径
/// </summary>
private static string Data_File_Path = System.Configuration.ConfigurationManager.AppSettings["Data_File_Path"].ToString(); /// <summary>
/// 全局配置文件列表
/// </summary>
public static Dictionary<string, DataConfig> DataConfigList; /// <summary>
/// 加载配置文件
/// </summary>
public static void InitConfig()
{
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,Data_File_Path); DirectoryInfo TheFolder = new DirectoryInfo(filePath);
foreach (FileInfo NextFile in TheFolder.GetFiles().Where(f=>f.Extension == ".config"))
{
Spring.Context.Support.XmlApplicationContext context = new Spring.Context.Support.XmlApplicationContext(NextFile.FullName);
string[] fileNames = context.ObjectFactory.GetObjectDefinitionNames(); foreach (var fileName in fileNames)
{
var mObj = context.GetObject(fileName); if (DataConfigList == null)
{
DataConfigList = new Dictionary<string, DataConfig>();
} string keyName = NextFile.Name.Split('.')[].ToString() + "." + fileName; if (!DataConfigList.ContainsKey(keyName))
{
DataConfigList.Add(keyName, mObj as DataConfig);
}
else
{
throw new ApplicationException("The existence of multiple identical configuration node,plseae check!");
}
}
} } /// <summary>
/// 获取指定名称SQL
/// </summary>
/// <param name="commandName"></param>
/// <returns></returns>
public static string GetSql(string commandName)
{
InitConfig(); if (!DataConfigList.ContainsKey(commandName))
{
throw new ApplicationException("Data file can't be found!");
}
else
{
return DataConfigList[commandName].commandText;
} } /// <summary>
/// 获取数据库连接
/// </summary>
/// <returns></returns>
public static SqlConnection GetConnection()
{
SqlConnection connection = new SqlConnection(DataBase_Connection);
connection.Open(); return connection;
} /// <summary>
/// 获取Command
/// </summary>
/// <param name="commandName"></param>
/// <returns></returns>
public static IDbCommand CreateCommand(string commandName)
{
var connection = GetConnection(); using (IDbCommand command = connection.CreateCommand())
{
command.CommandText = GetSql(commandName);
return command;
}
} /// <summary>
/// 执行查询动作
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="command"></param>
/// <param name="pars"></param>
/// <returns></returns>
public static List<T> Query<T>(string commandName, dynamic pars)
{
using (IDbCommand command = DBUtil.CreateCommand(commandName))
{
return SqlMapper.Query<T>(command.Connection, command.CommandText, pars);
}
}
}

SQL配置文件管理

  • 支持多文件 (Order.config,  Item.config....), DBUtil 会在调用时加配置文件加入内存中缓存,待下次时候,直接读取内存数据.
 <?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd">
<object id="GetOrderList" type="SpringDemo.DataConfig,SpringDemo">
<property name="commandText">
<value>
<![CDATA[
SELECT TOP(@Size) * FROM dbo.Order
]]>
</value>
</property>
</object> <object id="GetOrderDetail" type="SpringDemo.DataConfig,SpringDemo">
<property name="commandText">
<value>
<![CDATA[
SELECT TOP(@Size) * FROM dbo.OrderDetail WHERE OrderID = @OrderID
]]>
</value>
</property>
</object>
</objects>

Demo代码

class Program
{
static void Main(string[] args)
{
List<Order> OrderList = GetOrderList(); 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 工具类.的更多相关文章

  1. spring 中 PO与DTO相互转换的工具类

    public class BeanMapper { /** * 持有Dozer单例, 避免重复创建DozerMapper消耗资源. */ private static DozerBeanMapper ...

  2. spring框架中的一个字符串的工具类

    stringutils.hasText("字符串") 如果字符串里面的值为null, "", "   ",那么返回值为false:否则为tr ...

  3. Spring 常用的一些工具类

    学习Java的人,或者开发很多项目,都需要使用到Spring 这个框架,这个框架对于java程序员来说.学好spring 就不怕找不到工作.我们时常会写一些工具类,但是有些时候 我们不清楚,我们些的工 ...

  4. spring中常用工具类介绍

    http://www.cnblogs.com/langtianya/p/3875103.html 文件资源操作     Spring 定义了一个 org.springframework.core.io ...

  5. Spring 的优秀工具类盘点

    文件资源操作 文件资源的操作是应用程序中常见的功能,如当上传一个文件后将其保存在特定目录下,从指定地址加载一个配置文件等等.我们一般使用 JDK 的 I/O 处理类完成这些操作,但对于一般的应用程序来 ...

  6. spring常用的工具类

    spring给我们提供了很多的工具类, 应该在我们的日常工作中很好的利用起来. 它可以大大的减轻我们的平时编写代码的长度. 因我们只想用spring的工具类, 而不想把一个大大的spring工程给引入 ...

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

    特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊字符转义的问题. ...

  8. Spring的常用工具类

    官方文档 http://projects.spring.io/spring-framework https://docs.spring.io/spring/docs/current/javadoc-a ...

  9. Spring中内置的一些工具类

    学习Java的人,或者开发很多项目,都需要使用到Spring 这个框架,这个框架对于java程序员来说.学好spring 就不怕找不到工作.我们时常会写一些工具类,但是有些时候 我们不清楚,我们些的工 ...

随机推荐

  1. PHP通过IP 获取 地理位置(实例)

    发布:JB02   来源:脚本学堂  分享一例php代码,实现通过IP地址获取访问者的地理位置,在php编程中经常用到,有需要的朋友参考下吧.本节内容:PHP通过IP获取地理位置 例子: 复制代码代码 ...

  2. php 获取文件后缀名

    $file_ext = strtolower(substr(strrchr($upload_file, '.'), 1)); strrchr:查找指定字符在字符串中的最后一次出现 string str ...

  3. 代码重启SQL命令

    1.net stop mssqlserver --停止mssqlserver 2.net start mssqlserver  --开始mssqlserver

  4. delphi 更改不了窗体的标题

    delphi定义变量名千万要注意,不能和关键字同名,今天我无意间定义了一个caption的变量  导致我怎么都不能修改窗的标题.

  5. 关于datagridview的一些操作

    1.绑定datatable时,会显示出不需要显示的列可以加datagridview.AutoGenerateColumns = false; 2.如果datagridview的某列是数值型的,有小数, ...

  6. zoj 2112 Dynamic Rankings

    原题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1112 #include<cstdio> #include ...

  7. Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Xcode7 beta 网络请求报错:The ...

  8. NPOI导出word,以及对table的一些设置

    参考网址:http://www.aiuxian.com/article/p-1970779.html NPOI版本:2.1.3.1 最终效果图: 代码: /// <summary> /// ...

  9. 硬件相关-EMI & EMS & EMC

    EMI——Electro Magnetic Interference 电磁干扰 定义:是指电磁波与电子元件作用后而产生的干扰现象. 分类:有传导干扰和辐射干扰两种. 传导干扰: 是指通过导电介质把一个 ...

  10. 用MSBuild和Jenkins搭建持续集成环境(1)

     http://www.infoq.com/cn/articles/MSBuild-1 你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面.但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编 ...