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. jQuery编写的一款兼容IE6的图片轮播幻灯片

    jQuery编写的一款兼容IE6的图片轮播幻灯片,很不错的一款jquery特效.大家可以下载下来研究研究. 每隔几秒就自动切换一波图片,此效果兼容性还做的不错,适合居多的浏览器. 适用浏览器:IE6. ...

  2. onClick事件实现方式(打电话为例子)

    1.在button 中 android:onclick="call" 注意事项:①.方法的名字必须是call ②.区别大小写 ③.call方法必须接收一个View类型的参数 ④.方 ...

  3. SQLite数据库管理的相关命令

    1.创建数据库 启动命令行,通过输入如下命令打开Shell模式的CLP: sqlite3 test.db 虽然我们提供了数据库名称,但如果该数据库不存在,SQLite实际上就未创建该数据库,直到在数据 ...

  4. .net控件事件中的Sender

    private void button2_Click(object sender, RoutedEventArgs e) { } 最近看WPF内容,回顾下.net大家天天都在用,却不是十分关注的一个对 ...

  5. go again

    Introducation (1)How to organize go code (2)How to develope go package (3)How to use go tool How to ...

  6. Spring Roo

    Spring Roo 是SpringSource新的开放源码技术,该技术主要面向企业中的Java开发者,使之更富有成效和愉快的进行开发工作,而不会牺牲工程完整或灵活性.无论你是一个新的Java开发人员 ...

  7. 【EF Code First】 一对多、多对多的多重关系配置

    这里使用用户表(User)和项目(Project)表做示例 有这样一个需求: 用户与项目的关系是:一个用户可以发多个项目,可以参加多个项目,而项目可以有多个参与成员和一个发布者 [其中含1-n和n-n ...

  8. [转]VC的DDK编译环境构建

    [转]VC的DDK编译环境构建 http://blog.csdn.net/skdev/article/details/1336935   1 环境状况 Windows XP SP1 NTDDK(win ...

  9. iOS 进阶 第二十天(0520)

    0520 -KVO 如下图所示:(面试可能会问到,你就按照下面的说) 注意:NSString类型的成员变量用set方法时,要记得用copy,至于为什么,知道这么用就行了.如下图:

  10. 查找bad sql的方法:

    --查找bad sql的方法: select * from (select buffer_gets, sql_text from v$sqlarea ; -- 执行次数多的SQL select sql ...