Spring - DbProvider
Spring 对 ADO.NET 提供了强大的支持,主要涉及到下面的几个类型。
这次,在引用 Spring.Core 的基础上,还要引用 Spring.Data,这个程序集也位于 Spring.NET-1.3.1\Spring.NET\bin\net\4.0\release 中。
几个常用的类型
IDbProvider
IDbProvider 定义了数据访问提供器的基础,在 Spring 中提供了许多的数据访问 Provider。
通常我们在配置文件中配置当前使用的 Provider。
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <configSections> 4 <sectionGroup name="spring"> 5 <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 6 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 7 </sectionGroup> 8 </configSections> 9 <spring> 10 <context> 11 <resource uri="config://spring/objects"/> 12 </context> 13 14 15 <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database" > 16 <!--配置DbProvider--> 17 <db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=.;database=Spring;integrated security=true;"/> 18 19 <!--配置AdoTemplate AdoTemplate依赖于DbProvider--> 20 <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data"> 21 <property name="DbProvider" ref="DbProvider"/> 22 </object> 23 24 </objects> 25 </spring> 26 </configuration>
第 17 行就是在配置文件中定义的 Provider。
在程序中我们可以类似于获取普通对象一样来获取这个 Provider.
1 Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext(); 2 Spring.Data.Common.IDbProvider provider = context.GetObject("DbProvider") as Spring.Data.Common.IDbProvider;
AdoTemplate
AdoTemplate 有两个,一个泛型,定义为:Spring.Data.Generic.AdoTemplate。一个非泛型,定义为:Spring.Data.Core.AdoTemplate。
在程序中,我们可以通过下面的代码来创建 AdoTemplate 对象。
1 Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext(); 2 Spring.Data.Common.IDbProvider provider = context.GetObject("DbProvider") as Spring.Data.Common.IDbProvider; 3 Spring.Data.Core.AdoTemplate ado = new Spring.Data.Core.AdoTemplate(provider);
当然,在 Spring 中,我们一般通过注入来完成这些工作。配置文件中可以如下配置:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <configSections> 4 <sectionGroup name="spring"> 5 <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 6 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 7 </sectionGroup> 8 </configSections> 9 <spring> 10 <context> 11 <resource uri="config://spring/objects"/> 12 </context> 13 14 15 <objects xmlns="http://www.springframework.net" xmlns:db="http://www.springframework.net/database" > 16 <!--配置DbProvider--> 17 <db:provider id="DbProvider" provider="System.Data.SqlClient" connectionString="server=.;database=Spring;integrated security=true;"/> 18 19 <!--配置AdoTemplate AdoTemplate依赖于DbProvider--> 20 <object id="adoTemplate" type="Spring.Data.Core.AdoTemplate, Spring.Data"> 21 <property name="DbProvider" ref="DbProvider"/> 22 </object> 23 24 </objects> 25 </spring> 26 </configuration>
现在的 16 -23 行完成对非泛型 AdoTemplate 的注入。
这样,我们在程序中可以直接取得一个 AdoTemplate 的对象实例了。直接使用以下,是不是比 SQLHelper 好用多了
1 public static void Text02() 2 { 3 Spring.Context.IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext(); 4 Spring.Data.Core.AdoTemplate ado = context.GetObject("adoTemplate") as Spring.Data.Core.AdoTemplate; 5 var obj = ado.ExecuteScalar(CommandType.Text, "select * from Student"); 6 Console.Write(obj); 7 Console.ReadLine(); 8 }
SQL:
浙公网安备 33010602011771号