在XCode中如何使用高级查询

对于一个框架来说,仅有基本的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!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏鸿的学习笔记

Spanner和一致性(待续)

前几天读了一篇文章[一致性模型](https://www.jianshu.com/p/3673e612cce2),发现自己也有也有一些知识点遗漏了,遂写下此文作...

17720
来自专栏deed博客

Emlog5.1.1To5.1.2 Sql运行错误解决方法

16420
来自专栏大数据

Python 101:如何从RottenTomatoes爬取数据

今天,我们将研究如何从热门电影网站Rotten Tomatoes爬取数据。你需要在这里注册一个API key。当你拿到key时,记下你的使用限制(如每分钟限制的...

50360
来自专栏JAVA高级架构

一张思维导图学会如何构建高性能MySQL系统

一、简介 最近在压测新的存储,正好把工作过程中积累的对高性能MySQL相关的知识体系构建起来,做成思维导图的方式。总结乃一家之言,有不妥之处,望给位读者朋友...

46670
来自专栏大宽宽的碎碎念

怎么避免MYSQL误删除避免混淆开发环境的DB和生产环境的DB用事务保护使用安全更新模式对DROP和TRUNCATE慎之又慎最终的招数最终的话

385130
来自专栏java一日一条

单机数据库优化的一些实践

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。...

12220
来自专栏大数据和云计算技术

hive拉链工具实战

这个丁延明同学写的一个实战工具,坚持用代码解决问题,推荐! 有相关业务的同学可以一起讨论,下面是正文。 ---- 1、背景 大家好 最近由于公司业务需要写了一篇...

34070
来自专栏杨建荣的学习笔记

mysqlimport导入报错的排查(r10笔记第58天)

今天有个同事问我一个mysqlimport导入的问题,看起来还是蛮奇怪的。同事在客户端导入一个文件。文件大小是2.8G,然后报错mysqlimport: Er...

34470
来自专栏沃趣科技

Oracle Real Time SQL Monitoring

术语说明 TableQueue,消息缓冲区,在并行操作中使用,用于PX进程之间的通信,或者PX进程与QC进程之间的通信,是内存中的一些page,每个消息缓冲区的...

47380
来自专栏数据和云

故障分析:一则library cache lock问题处理

编辑手记:library cache lock 大家都并不陌生,在MOS上对该阻塞的一般成因描述为:一般可以理解的是alter table或者alter pac...

38750

扫码关注云+社区

领取腾讯云代金券