首页 > 其他分享 >基于Expression Lambda表达式树的通用复杂动态查询构建器——《剧透一下》

基于Expression Lambda表达式树的通用复杂动态查询构建器——《剧透一下》

时间:2023-05-29 20:56:03浏览次数:39  
标签:lg 前端 查询 JSON 剧透 表单 Expression Lambda

前篇《https://www.cnblogs.com/ls0001/p/17437225.html》有大佬在评论里剧透了,这里就来一遍剧透。

  通常,前后端分离的系统要在前端查询数据是提交一个带着查询条件参数的表单,比如A=1,B=2,类似样,后端接收到表单需要将这些条件参数拼接成查询需要写代码,并且表单结构通常是不带查询逻辑属性的,只能用and来联接这些条件,给查询的灵活性带来了局限。

本框架就是要提供更灵活的,后端不需要写代码的一个查询能力。

其中一个主要的应用场景正是实现实现只需前端传递JSON格式的查询条件到后端,后端无需写查询代码就能进行查询。

其流程如下图所示:

举个例子:

前端提交来的查询JSON:

 { 
     "lg": "", "filters":
     [ 
        { 
            "lg": "", "Predicates": 
            [ { "lg": "", "Name": "id", "Op": ">", "Value": 1 } ]
        }, 
        { 
            "lg": "and", "Predicates": 
            [ { "lg": "", "Name": "id", "Op": "<", "Value": 10 } ] 
        },
        {
            "lg": "and",
            "Predicates":
            [
                {"lg": "","Name": "name",  "Op": "=", "Value": "MyName"},         
                {"lg": "or","Name": "name","Op": "=","Value": "HisName"}
            ]
        }
    ]
}

 

后端只要如下代码就可以了:

Query.Where(QueryFilterBuilder.CreateFilterExpression<Entity>(上面的JSON));
​

 

尽管前端JSON的构造也需要一个轮子,后续再说,本篇暂且先到这。

 

标签:lg,前端,查询,JSON,剧透,表单,Expression,Lambda
From: https://www.cnblogs.com/ls0001/p/17441637.html

相关文章

  • C# Lambda及DataTable AsEnumerable()的使用
    Lambda是延迟执行的,实际上什么都没有发生,当真正使用对象的时候(例如调用:First,Single,ToList….的时候)才执行。 1.Wherevarvar_dtTable=dtTable.AsEnumerable().Where<DataRow>(W=>W["NAME"].ToString()=="张三");intcount=var_dtTable.Count<DataRow>();//获取dtT......
  • C#学习笔记 -- 匿名方法、Lambda表达式
    匿名方法前面的情况是方法被某个结构或者类的成员,可以调用方法如果方法只调用一次,用来实例化委托,在这种情况下,除了创建委托的语法需要,没有必要创建独立的具名方法,使用匿名方法即可匿名方法是实例化委托时内联声明的方法.classProgram{  delegatei......
  • 基于Expression Lambda表达式树的通用复杂动态查询构建器——《原型篇一》[已开源]
    续接上编,本篇来讲讲俄罗斯套娃的设计与实现。首先简单地完善一下前面提到的例子,代码如下:测试实体类//测试实体类publicclassTable{publicintA;publicintB;}独立条件类//独立条件:publicclassField{publicLogicalLogical{get;set;} ......
  • From Java To Kotlin:空安全、扩展、函数、Lambda很详细,这次终于懂了
    FromJavaToKotlin,空安全、扩展、函数、Lambda概述(Summarize)Kotlin是什么?可以做什么?Android官方开发语言从Java变为Kotlin,Java有哪些问题?Kotlin的优点Kotlin特性(Features)Kotlin是什么?Kotlin出自于捷克一家软件研发公司JetBrains,这家公司开发出很多优秀的......
  • 最全剧透丨南京水博会即将启幕,计讯物联明星阵容给你看个够
    2023中国水博览会暨第十八届中国(国际)水务高峰论坛将于6月7日–9日在江苏·南京国际展览中心举行中国水博览会暨中国(国际)水务高峰论坛作为水利行业内集政策宣贯落实、行业发展分析、先进技术研讨、产学研用对接为一体的行业交流平台,汇集了涉水新产品、新技术、新材料、新工艺,将......
  • python系列教程209——复杂的lambda语句
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......
  • java函数式编程stream流操作lambda表达式使用方法引用用法等练习
    java函数式编程stream流操作lambda表达式使用方法引用用法等练习 @Testvoidtest01(){System.out.println("111");List<Author>authors=getAuthor();//stream流打对象中一个字段authors.stream().distinct().forEach(author......
  • 【转载】Mybatis Plus QueryWrapper结合lambda表达式使用distinct的方法
    MybatisPlusQueryWrapper的lambda用起来感觉挺爽的,有点JPA的感觉,也不需要拼很多字符串,可以利用IDE的代码检查功能,总之好处多多,停不下来。最近遇到一个问题,需要对SQL查询的结果做去重处理,自然想到了使用distinct。对于复杂的SQL语句,一般使用自定义XML的方式,但是这么个小问题,XML......
  • 基于Expression Lambda表达式树的通用复杂动态查询构建器——《构思篇一》
    在上一篇中构思了把查询子句描述出来的数据结构,那么能否用代码将其表达出来,如何表达呢?再次回顾考察,看下面的查询子句:Id>1andId<10如上所示,有两个独立的条件分别为Id>1和Id<10,用一个逻辑操作符and连接起来。再看下面这条,后面也是两个独立条件通过操作符or连接,并包在括号......
  • 学习笔记-Java8新特性-第二节-Lambda表达式
    Lambda表达式Lambda表达式是什么Lambda是一个匿名函数是一段可以传递的代码是一种语法糖使用Lambda可以写出更简洁、更灵活的代码如果要使用Lambda表达式,需要函数式接口的支持Lambda的语法格式基础语法Java8中引入了一个新的操作符->称为箭头操作符或La......