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. Android消息推送完美方案[转]

    转自 Android消息推送完美方案 推送功能在手机应用开发中越来越重要,已经成为手机开发的必须.在Android应用开发中,由于众所周知的原因,Android消息推送我们不得不大费周折.本文就是用来 ...

  2. 用户View,五大布局

    1.LinearLayout 线性布局 android:orientation="horizontal" 制定线性布局的排列方式 水平 horizontal 垂直 vertical ...

  3. 管理员 修改MySQL 5.7.9 新版本的root密码方法以及一些新变化整理

    MySQL 5.7版本开始,增强密码验证机制,网上说安装的时候会在/root/.mysql_secret  文件中生成默认密码,这一点自 5.7.6版本以后也去掉了. 针对如果生成默认密码,网上有一个 ...

  4. C++基本数据类型解惑

    记得刚学C语言的时候,对那些double,float,long,unsigned int各种混乱,基本是随便用,对数据类型没有一个整体的框架.最近学习<<C++ primer plus&g ...

  5. AngularJs记录学习03

    AngularJs的路由是一个组件,需要自己额外添加,在目录/src/ngRoute中 三个文件route.js,routeParams.js,ngView.js <html> <h ...

  6. python使用简单http协议来传送文件

    python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...

  7. xdebug

    必须的有4个(remote_enable 默认没开,所以必要),其它默认值一般可以xdebug.remote_enable=On; //这个是必须xdebug.remote_host=192.168. ...

  8. [笔记]--在Windows下配置Git

    安装就不多说了: 1.ls不能显示中文目录 解决办法:在git/etc/git-completion.bash中增加一行: alias ls='ls --show-control-chars --co ...

  9. C#实现大数字的运算

    1.添加引用:System.Numerics.dll 2.添加命名空间:using System.Numerics; 3.实例: 3.1判断一个数字是不是质数 static void Main(str ...

  10. hdu 5412 CRB and Queries

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5412 CRB and Queries Description There are $N$ boys i ...