AppFramework1.0数据库访问组件使用说明(八)DAO类的使用

 
在AppFramework里DAO类可以由代码生成工具自动生成,开发者只需要通过DAO类基本上就可以完成大部分增删查改业务,一些特殊的业务如果无法用DAO实现,则可以通过SqlMap结合IDBSession来实现。
DAO主要处理三类对象:
1、       表:生成的代码有增删改查等方法;
2、       视图:生成的代码有查询方法;
3、       SQL虚拟视图:在一些条件比较差的数据库里,例如对视图不支持或支持不好,或者在一些特殊的应用场合下不允许使用视图时,可以用子查询来模拟数据库视图。SQL虚拟视图生成的代码也只有查询方法;
 
DAO的增、删、改用法比较简单,本文前面已有叙述。DAO的查询功能形式要丰富一些,下文只对DAO的一些高级查询用法进行说明。
用DAO的SelectList方法可以获得ObjectTable<T>类型的实体集合。SelectList有多个重载方法,但用法都大同小异:
/// <summary>
/// 根据查询并获取一批记录,若要返回所有字段,把 fields 设为 "*" ,程序将优化执行过程
/// </summary>
/// <param name="orderBy"> 排序表达式 </param>
/// <returns> 返回对象数组 </returns>
ObjectTable<BasUser> SelectList(IDBSession session, string fields, QueryFilter filter, string orderBy);
 
/// <summary>
/// 根据查询并获取一批记录,若要返回所有字段,把 fields 设为 "*" ,程序将优化执行过程
/// </summary>
/// <param name="orderBy"> 排序表达式 </param>
/// <returns> 返回对象数组 </returns>
ObjectTable<BasUser> SelectList(IDBSession session, string fields, string filter, string orderBy);
 
/// <summary>
/// 根据查询并获取一批记录,若要返回所有字段,把 fields 设为 "*" ,程序将优化执行过程
/// </summary>
/// <param name="orderBy"> 排序表达式 </param>
/// <returns> 返回对象数组 </returns>
ObjectTable<BasUser> SelectList(IDBSession session, string fields, QueryFilter filter, string orderBy, BatchObjectConstructionEventHandler create);
 
需要说明的有以下几点:
1、            fields参数:fields参数告诉DAO只读取哪些字段,而DAO也只会填充这些字段所对应的实体对象属性。这种模式有许多好处,不但可以有效地减少网络带宽和内存的消耗,提高了对象构造速度,还不需要为每个查询定制一个实体,减少了实体类型的个数,降低了程序的规模和复杂度。注意,如果要查询所有字段,可以把fields设置为”*”,这样DAO会对程序进行优化。
2、            orderBy参数:orderBy告诉DAO以什么方式对结果集进行排序,如果不指定排序方式,传入null即可。
3、            返回结果集:返回的结果集可以直接绑定到DataGrid、DataGridView、ComboBox等各种UI控件;返回的结果集还可以进行排序和二次查询,这比IBatis返回IList的功能要强大得多。
DAO提供了SelectTable方法获得DataTable。
/// <summary>
/// 根据查询并获取一批记录,若要返回所有字段,把 fields 设为 "*" ,程序将优化执行过程
/// </summary>
/// <param name="orderBy"> 排序表达式 </param>
/// <returns> 返回 DataTable</returns>
DataTable SelectTable(IDBSession session, string fields, QueryFilter filter, string orderBy);
 
其中orderBy告诉DAO以什么方式对结果集进行排序,如果不指定排序方式,传入null即可。
测试数据表明,SelectTable的性能比SelectList的性能要差很多,其主要原因是因为DataTable的构造速度不如实体对象集合的构造速度快。对于相同的查询语句,用SelectTable执行比用SelectList大约多耗时40%以上。
SelectList 返回的结果集可以直接绑定到 DataGrid DataGridView ComboBox 等各种 UI 控件上,而且返回的结果集还可以进行排序和二次查询,具有高执行效率的同时,又兼有 DataTable 的灵活性,因此推荐开发者尽量采用 SelectList 作查询。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值