[转载]NewLife XCode 数据映射框架
2012-01-01 23:57
751 查看
/article/4840553.html
对于一个框架来说,仅有基本的CURD不行,NewLife.XCode同时还提供了一个非常宽松的方式来使用高级查询,以满足各种复杂的查询需求。
(本文同样适用于其它任何数据访问框架)
先上图看一个复杂查询的效果图:
这里有8个固定的查询条件和1个模糊查询条件,加上多表关联(7张表)、分页、统计,如果用传统的做法,这个查询会非常的复杂。
这个页面有XCode实现,核心查询部分共100多行代码,包括一个查询、一个总记录数分页、两个统计(就是业绩、提成等的统计),看看高级查询代码:
可以看到,关键就在SearchWhere里面,另外四个方法,都是调用它,它的作用,就是为了构造一个where字句。
XCode不支持多表关联(v7开始测底不支持,以前的支持太鸡肋,几乎从未使用),这种涉及多表关联的查询,就需要子查询来代替了,看看SearchWhere:
可以看到,除了UserRelation外,基本都是通过子查询来实现关联查询。而UserRelation是用户关系表,数据比较固定,采用了二级实体缓存,对它的查询几乎不会形成数据库查询,缓存命中率不低于99%。
在各个小片段上使用MakeCondition格式化数据,保证这些代码能根据当前数据库生成相应的语句,使得系统能支持多数据库。比如时间日期类型,在MSSQL是单引号边界,在Access是井号边界。
回过头来,看看前端页面是怎么做的,查询条件区域:
这里用了好些用户自定义控件,便于多个地方重用。
再看看ObjectDataSource是怎么配置的:
ObjectDataSource负责把查询区域的控件跟后台查询方法的参数,给绑定起来,并且支持分页查询,让前台页面,不需要写代码,就实现了高级分页查询。
并且,后台的那些查询方法,同样适用于非ObjectDataSource的前台,也适用于WinForm等应用系统之中!
NewLife.XCode下载地址:http://XCode.codeplex.com
没有很完整的教程,只有本博客中的点点滴滴!初衷是跟大家交流技术,让大家都掌握这些应用开发经验,而不是让大家都来用XCode!有了这些东西,你也可以做出来自己的XCode!
if ($ != jQuery) {
$ = jQuery.noConflict();
}
var isLogined = true;
var cb_blogId = 23151;
var cb_entryId = 2140479;
var cb_blogApp = "nnhy";
var cb_blogUserGuid = "a866360b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2011/8/16 12:54:00';
分类: X系列组件
对于一个框架来说,仅有基本的CURD不行,NewLife.XCode同时还提供了一个非常宽松的方式来使用高级查询,以满足各种复杂的查询需求。
(本文同样适用于其它任何数据访问框架)
先上图看一个复杂查询的效果图:
这里有8个固定的查询条件和1个模糊查询条件,加上多表关联(7张表)、分页、统计,如果用传统的做法,这个查询会非常的复杂。
这个页面有XCode实现,核心查询部分共100多行代码,包括一个查询、一个总记录数分页、两个统计(就是业绩、提成等的统计),看看高级查询代码:
可以看到,关键就在SearchWhere里面,另外四个方法,都是调用它,它的作用,就是为了构造一个where字句。
XCode不支持多表关联(v7开始测底不支持,以前的支持太鸡肋,几乎从未使用),这种涉及多表关联的查询,就需要子查询来代替了,看看SearchWhere:
可以看到,除了UserRelation外,基本都是通过子查询来实现关联查询。而UserRelation是用户关系表,数据比较固定,采用了二级实体缓存,对它的查询几乎不会形成数据库查询,缓存命中率不低于99%。
在各个小片段上使用MakeCondition格式化数据,保证这些代码能根据当前数据库生成相应的语句,使得系统能支持多数据库。比如时间日期类型,在MSSQL是单引号边界,在Access是井号边界。
回过头来,看看前端页面是怎么做的,查询条件区域:
这里用了好些用户自定义控件,便于多个地方重用。
再看看ObjectDataSource是怎么配置的:
ObjectDataSource负责把查询区域的控件跟后台查询方法的参数,给绑定起来,并且支持分页查询,让前台页面,不需要写代码,就实现了高级分页查询。
并且,后台的那些查询方法,同样适用于非ObjectDataSource的前台,也适用于WinForm等应用系统之中!
NewLife.XCode下载地址:http://XCode.codeplex.com
没有很完整的教程,只有本博客中的点点滴滴!初衷是跟大家交流技术,让大家都掌握这些应用开发经验,而不是让大家都来用XCode!有了这些东西,你也可以做出来自己的XCode!
if ($ != jQuery) {
$ = jQuery.noConflict();
}
var isLogined = true;
var cb_blogId = 23151;
var cb_entryId = 2140479;
var cb_blogApp = "nnhy";
var cb_blogUserGuid = "a866360b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2011/8/16 12:54:00';
分类: X系列组件
相关文章推荐
- 性能&分布式&NewLife.XCode对无限数据的支持
- 深入分析 iBATIS 框架之系统架构与映射原理--转载
- 转载IBM dw——Faces Portlet 开发框架中数据的组织与处理
- [转载] 2 分钟读懂大数据框架 Hadoop 和 Spark 的异同
- NewLife.XCode 上手指南(四) 级联操作
- 转载:基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
- ORM映射框架总结--数据操作(五)
- 【总结】Newlife XCode组件资源目录汇总【2013年版】
- 【转载】最常见的数据类型映射列表
- Newlife.XCode对象容器与接口操作实例
- 【转载】使用Json比用string返回数据更友好,也更面向对象一些 |Asp.net MVC 2.0 + Unity 2.0(IoC) + EF4.0 实例:RoRoWoBlog 开源项目框架代码
- 【总结】Newlife XCode组件资源目录汇总【2013年版】
- NewLife.XCode 上手指南(二) 反向工程使用举例
- Hibernate3.0:开源数据映射框架发布
- 【总结】Newlife XCode组件资源目录汇总【2013年版】
- EF4.1 企业架构模式 自动映射数据表(转载)
- NewLife.XCode中如何借助分部抽象多个具有很多共同字段的实体类
- 将MySQL数据映射到Memcached中[转载]