此控件通过读取xml文件实现数据库操作,包装了缓存、sqlserver2005分页和总数(可以扩展),这样sql语句都会文件化统一管理
数据库操作是应用GotDotNet.ApplicationBlocks.Data,把adohelper改成单例模式以提高速度
web.config配置节点:
<configSections>
<section name="mappingConfig" type="Data.MappingSection, Data"/>
</configSections>
<mappingConfig
defaultprovider="sqlserver"
defaultconnectionstring="$DataConnectionString"
defaultpagesize="12">
//defaultprovider默认数据库 defaultconnectionstring 默认数据库连接字符串 defaultpagesize默认页数
<files>
<add file="/config/sql.xml" provider="sqlserver" />
//读取的xml文件路径 支持d:\......, /......., \......, provider 数据库
</files>
</mappingConfig>
<connectionStrings>
<add name="DataConnectionString" connectionString="server=192.168.2.81;database=test;uid=sa;pwd=1qa;"/>
</connectionStrings>
xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfMappingDescription>
<MappingDescription id="user_select" allowpaging="true" pagesize="12">
//id是整站唯一代号,程序调用
//allowpagging 是否需要翻页,程序会自动生成语句,现在只支持sqlserver2005(可以扩展)
//pagesize 每页数量
<cache>
<operatetype>addall</operatetype>
//add, addcount, addall, remove, none : add 是加此语句缓存 addcount 加总数缓存 addall 语句和总数都加缓存
//remove 是要清楚缓存 none 没有缓存操作
<key>user_{0}_{1}</key>
//语句的缓存key 生成key是调用string.format(key, paparameters)
<seconds>1000</seconds>
//语句缓存时间 单位秒
<countkey>user_{0}</countkey>
//总数缓存key
<countseconds>1000</countseconds>
//总数缓存时间
<dependsonkey>user_{0}</dependsonkey>
//语句所依赖的缓存key
</cache>
<command>
<connectionstring>$DataConnectionString</connectionstring>
//数据库连接串 如果包换$会上web.config上替换
<type>text</type>
//操作类型
<text>select * from userinfo where domain=@domain<text>
//语句或存储过程
<parameters>
<parameter name="@domain" type="varchar" size="10" />
</parameters>
//参数
</command>
</MappingDescription>
</ArrayOfMappingDescription>
调用:
Broker b = Broker.Instance;
//建立调用对象,单例
Mapping mapping = MappingManager.GetMapping("user_select");
//获得mapping对象,(从内存中取)
int pageIndex = 2;
object[] parameters = new object[1]{3};
IList<UserInfo> users = b.FindArrayPage<UserInfo>(mapping , pageIndex, parameters);
//获得分页列表
源代码: code