需求

显示的列

Columns。

查询面板的查询参数

SearchArguments。

动态查询(允许用户自定义各种查询)

DynamicFilterGroup。

排序

Sorters。

分页信息

Page。

ItemsPerPage。

示例代码

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 using Happy.Query;
 8 using Happy.Query.Filters;
 9
10 namespace Happy.Application.Query
11 {
12     /// <summary>
13     /// 查询请求。
14     /// </summary>
15     public sealed class QueryRequest
16     {
17         /// <summary>
18         /// 显式的列。
19         /// </summary>
20         public List<string> Columns { get; set; }
21
22         /// <summary>
23         /// 查询参数。
24         /// </summary>
25         public SearchArgument[] Arguments { get; set; }
26
27         /// <summary>
28         /// 高级查询。
29         /// </summary>
30         public DynamicFilterGroup Group { get; set; }
31
32         /// <summary>
33         /// 排序器。
34         /// </summary>
35         public Sorter[] Sorters { get; set; }
36
37         /// <summary>
38         /// 页码。
39         /// </summary>
40         public long Page { get; set; }
41
42         /// <summary>
43         /// 每页显式的记录数。
44         /// </summary>
45         public long ItemsPerPage { get; set; }
46
47         internal QueryArgument ToQueryArgument(FilterDefinition filterDefinition)
48         {
49             var queryArgument = new QueryArgument();
50             queryArgument.Columns = this.Columns;
51             queryArgument.OrderClause = this.Sorters.ToOrderClause();
52
53             var whereClauses = new List<WhereClause> { this.Group.ToWhereClause() };
54             if (filterDefinition != null)
55             {
56                 whereClauses.Add(filterDefinition.BuildWhereClause(this.Arguments.ToArguments()));
57             }
58             queryArgument.WhereClauses = whereClauses;
59
60             return queryArgument;
61         }
62     }
63 }

备注

因为这些参数都是由客户端传递而来的,是不能信任的,而且所有的查询条件也不能完全依赖客户端,一些查询逻辑一定要由服务器生成,如:数据权限、业务逻辑。

转载于:https://www.cnblogs.com/happyframework/p/3481441.html

企业应用:应用层查询接口设计相关推荐

  1. 企业工商信息查询接口

    一.接口介绍 模糊搜索.精确搜索企业信息,通过企业名字或者id查询企业工商基本信息. 二.接入点功能 企业搜索 可以使用:公司名称.人名.产品名称.老板名称.高管名称.联系方式.工商注册号.组织机构代 ...

  2. 如何设计一个通用的查询接口

    临近放假,手头的事情没那么多,老是摸鱼也不好,还是写写博客吧. 今天来聊聊:如何设计一个通用的查询接口. 从一个场景开始 首先,我们从一个简单的场景开始.现在,我需要一个订单列表,用来查询[我的订单] ...

  3. 利用MyBatis的动态SQL特性抽象统一SQL查询接口

    1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...

  4. 金蝶云星空对接打通旺店通·企业奇门调拨单查询接口与创建其他出库单接口

    数据源平台:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理 ...

  5. 企业如何挑选和使用快递查询接口?

    电商订单履行的过程中充满了英文首字母缩写词.从WMS到FBA再到ERP,人们常常会感觉到零售商们坐在一碗字母汤里游泳!在这些行话中,有一个缩写词可以将它们连接在一起那就是:API. API可以帮助线上 ...

  6. 金蝶云星空对接打通旺店通·企业奇门组装拆卸单查询接口与创建其他出库单接口

    源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理:K ...

  7. 微信企业付款到零钱,查询接口报错<err_code_des><![CDATA[参数错误:必须输入商户号]]></err_code_des>

    <xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><! ...

  8. 腾讯技术分享:微服务接口设计原则

    来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...

  9. 电子商务系统的设计与实现(五):账务系统的功能接口设计

    2019独角兽企业重金招聘Python工程师标准>>> 电商系统.p2p网贷系统.第三方支付都可以有自己的账务系统, 账务系统与用户系统可以完全独立,不需要用户ID等信息,只提供给其 ...

  10. 论企业集成平台的架构设计

    来自软考论文 论企业集成平台的架构设计 三.选择合适的应用集成平台 (介绍)目前,开放式(开源)企业应用集成的规范和平台的主流技术有两种: - 种是微软公司的COM+(组件对象模型)规范和Window ...

最新文章

  1. DPU(Data Processing Unit)数据处理器
  2. TAJ齐发力 互联网巨头抢滩“区块链+票据”市场
  3. 服务器重装后怎么装系统,服务器如何安装系统,小编教你如何安装
  4. Dynamipsgui入门教程
  5. 破解vba工程密码——VBA代码
  6. 机器学习在电商应用中的三个境界:爆款模型、转化率模型及个性化模型
  7. 提供风声无组件上传类V2.11下载 解决图片尺寸读取问题
  8. 澳大利亚麦考瑞大学计算机系杨坚教授团队招收2022-2023年博士研究生
  9. 一位大佬对学习哲理的思考
  10. 【DIY】手把手教你爆改一台手机制作掌上游戏机
  11. 制作我自己的桌面小机器人Zbot(遇到的问题总结)
  12. TensorFlow实现非线性回归
  13. 卡方分布上侧α分位数的近似公式及其证明
  14. Android Studio仿QQ界面实现简单的功能
  15. @ConfigrationProperties + @EnableConfigrationProperties
  16. adb 前摄像头 调用_android: 调用摄像头拍照
  17. springboot+springsecurity+阿里云短信服务验证实现注册登录
  18. copy failed: file not found in build context or excluded
  19. 各个光纤光学元件的传输函数
  20. 电脑网络正常,网页都可以上,但是QQ登陆不上,报错代码00001

热门文章

  1. 使用两个队列,改进耗时线程引起的性能问题的思路及代码
  2. 有无3C认证的电源价格差别说明什么?
  3. 刷机包提取hex和mbn方法_小米平板2刷lineage os与remix os及其体验
  4. linux 命令行美化
  5. c++ 中 try catch throw异常
  6. 局域网如何找路由器外的计算机,用路由组建小局域网,怎么使局域网之外的计算机共享到打印机?...
  7. linux缓冲设备,Linux设备驱动程序缓冲策略
  8. SpringCloud 微服务 (七) 服务通信 Feign
  9. LNMP架构 源码安装nginx+mysql+php+memcache+论坛
  10. Jquery 学习笔记一