eql 框架

Posted xdsuannai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eql 框架相关的知识,希望对你有一定的参考价值。

在刚进入公司的时候,在service层的框架用的是eql,是公司内的大佬封装的,作为一个小白,真的是折磨。公司内没有任何的文档,只能靠着自己一步一步的摸索。

后来用习惯了,发现这个框架确实有自己的独到之处。

首先在resource将先建一个文件eql-DEFAULT.properties ,并对数据库连接信息(如URL,密码和用户名)进行一些更改(mysql和oracle都可以使用eql)

driver=oracle.jdbc.driver.OracleDriver

url=jdbc:oracle:thin:@127.0.0.1:49161:xe

user=system

password=system

再创建一个.eql文件(com/test/EqlDemo.eql)

技术图片

创建一个类(com/test/EqlDemo.java)

技术图片

 

 

 运行结果如下:

技术图片

 

在java代码里的demo对应eql文件里的demo,从这一步做到了映射

 

 技术图片

 

 

以上就是最简单的一个示例, 在平时工作中操作sql语句的完整代码应该如下:

new Eql().useSqlFile(EQL_FILE).selectFirst("demo2").params().returnType().execute();
在returnType里不写入任何返回值时,selectFirst可以返回的类型有string,map,bean。且返回的是第一条记录。除了selectFirst外查询的代码还有一个select。如下:
new Eql().useSqlFile(EQL_FILE).select("demo2").params().returnType().execute();
该方法返回的类型是List , List<Map> ,List<Bean>等,总而言之,返回的是list类型

eql中映射方式(参数params) List<Map> applyDetail = new Eql(MonitorConst.DS_MALL.PROC_ORACLE).useSqlFile(EQL_FILE) .select("queryApplyNameDetail") .params(RMap.asMap("postCityNameAddShi", postCityNameAddShi)) .execute();
技术图片eql文件中参数写法如下:
AND C.CITY_NAME = #postCityNameAddShi#
或者
List<Map> applyDetail = new Eql(MonitorConst.DS_MALL.PROC_ORACLE).useSqlFile(EQL_FILE)   
        .select("queryApplyNameDetail")
        .params(postCityNameAddShi)
        .execute();
eql文件中参数写法如下:
AND C.CITY_NAME = #1#

for循环 --isNotEmpty productInfos AND T.PRODUCT_ID IN --for item=item index=index collection=productInfos open=( separator=, close=) #item# --end --end 其中productInfos是前段传过来的一个数组,item代表的是productInfos数组里的各个成员,就是一个别名,而index则是一个迭代的次数,简单的说就是找item找了几次

除了以上的例子,eql文件还提供了if,switch等动态传参,分页支持等等。



参考文档:https://github.com/bingoohuang/eql/blob/master/ChineseReadme.md




 

 

技术图片

 

以上是关于eql 框架的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch - EQL;SQL(十三)

js函数 eql,equal,equalp

sql поискпочтовыхадресовконтрагента#EQL

如何重构这组庞大的 if 语句?

csharp EQL - поисквсехзадачпоспискуэкземпляровпроцесса

邮箱正则校验