Java教程

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

本文主要是介绍基于Expression Lambda表达式树的通用复杂动态查询构建器——《剧透一下》,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前篇有大佬在评论里剧透了,这里就来一遍剧透。

  通常,前后端分离的系统要在前端查询数据是提交一个带着查询条件参数的表单,比如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的构造也需要一个轮子,后续再说,本篇暂且先到这。

 

这篇关于基于Expression Lambda表达式树的通用复杂动态查询构建器——《剧透一下》的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!