企业应用:应用层查询接口设计
需求
显示的列
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
企业应用:应用层查询接口设计相关推荐
- 企业工商信息查询接口
一.接口介绍 模糊搜索.精确搜索企业信息,通过企业名字或者id查询企业工商基本信息. 二.接入点功能 企业搜索 可以使用:公司名称.人名.产品名称.老板名称.高管名称.联系方式.工商注册号.组织机构代 ...
- 如何设计一个通用的查询接口
临近放假,手头的事情没那么多,老是摸鱼也不好,还是写写博客吧. 今天来聊聊:如何设计一个通用的查询接口. 从一个场景开始 首先,我们从一个简单的场景开始.现在,我需要一个订单列表,用来查询[我的订单] ...
- 利用MyBatis的动态SQL特性抽象统一SQL查询接口
1. SQL查询的统一抽象 MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射 ...
- 金蝶云星空对接打通旺店通·企业奇门调拨单查询接口与创建其他出库单接口
数据源平台:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理 ...
- 企业如何挑选和使用快递查询接口?
电商订单履行的过程中充满了英文首字母缩写词.从WMS到FBA再到ERP,人们常常会感觉到零售商们坐在一碗字母汤里游泳!在这些行话中,有一个缩写词可以将它们连接在一起那就是:API. API可以帮助线上 ...
- 金蝶云星空对接打通旺店通·企业奇门组装拆卸单查询接口与创建其他出库单接口
源系统:金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式:通过标准的业务架构:多会计准则.多币别.多地点.多组织.多税制应用框架等,有效支持企业的运营管理:K ...
- 微信企业付款到零钱,查询接口报错<err_code_des><![CDATA[参数错误:必须输入商户号]]></err_code_des>
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><! ...
- 腾讯技术分享:微服务接口设计原则
来源|腾讯技术工程(ID:Tencent_TEG) 本文结合自身后台开发经验,从高可用.高性能.易维护和低风险(安全)角度出发,尝试总结业界常见微服务接口设计原则,帮助大家设计出优秀的微服务. 1.前 ...
- 电子商务系统的设计与实现(五):账务系统的功能接口设计
2019独角兽企业重金招聘Python工程师标准>>> 电商系统.p2p网贷系统.第三方支付都可以有自己的账务系统, 账务系统与用户系统可以完全独立,不需要用户ID等信息,只提供给其 ...
- 论企业集成平台的架构设计
来自软考论文 论企业集成平台的架构设计 三.选择合适的应用集成平台 (介绍)目前,开放式(开源)企业应用集成的规范和平台的主流技术有两种: - 种是微软公司的COM+(组件对象模型)规范和Window ...
最新文章
- DPU(Data Processing Unit)数据处理器
- TAJ齐发力 互联网巨头抢滩“区块链+票据”市场
- 服务器重装后怎么装系统,服务器如何安装系统,小编教你如何安装
- Dynamipsgui入门教程
- 破解vba工程密码——VBA代码
- 机器学习在电商应用中的三个境界:爆款模型、转化率模型及个性化模型
- 提供风声无组件上传类V2.11下载 解决图片尺寸读取问题
- 澳大利亚麦考瑞大学计算机系杨坚教授团队招收2022-2023年博士研究生
- 一位大佬对学习哲理的思考
- 【DIY】手把手教你爆改一台手机制作掌上游戏机
- 制作我自己的桌面小机器人Zbot(遇到的问题总结)
- TensorFlow实现非线性回归
- 卡方分布上侧α分位数的近似公式及其证明
- Android Studio仿QQ界面实现简单的功能
- @ConfigrationProperties + @EnableConfigrationProperties
- adb 前摄像头 调用_android: 调用摄像头拍照
- springboot+springsecurity+阿里云短信服务验证实现注册登录
- copy failed: file not found in build context or excluded
- 各个光纤光学元件的传输函数
- 电脑网络正常,网页都可以上,但是QQ登陆不上,报错代码00001
热门文章
- 使用两个队列,改进耗时线程引起的性能问题的思路及代码
- 有无3C认证的电源价格差别说明什么?
- 刷机包提取hex和mbn方法_小米平板2刷lineage os与remix os及其体验
- linux 命令行美化
- c++ 中 try catch throw异常
- 局域网如何找路由器外的计算机,用路由组建小局域网,怎么使局域网之外的计算机共享到打印机?...
- linux缓冲设备,Linux设备驱动程序缓冲策略
- SpringCloud 微服务 (七) 服务通信 Feign
- LNMP架构 源码安装nginx+mysql+php+memcache+论坛
- Jquery 学习笔记一