## sqlTools使用文档
#### 1.sqlTools介绍
sqlTools是数据挖潜项目研发过程中,从大量重复业务代码中抽离出来的前端基于SQL进行后台接口配置的配置工具,该工具极大简化了编写重复的CRUD接口,将研发人员从写重复的业务接口中解放出来。sqlTools配置的接口方便管理,方便修改,支持热部署。sqlTools配置好项目和分组模块,可以支持多个项目并行使用。以下是sqlTools具有的主要特征:
> * 免除后台Java写接口,直接使用sql进行接口配置,默认会配置接口地址,前端直接将配置好的接口进行调用,就像访问后台一样。支持POST/GET传参请求,接口类型具有:增、删、改、查。
> * 支持可变参数,配置的查询接口可以自定义参数是否必传\可传,后台会自动通过参数优化sql语句。
> * 支持登录授权和密钥授权,登录授权需要将sqlTools后台模块嵌入项目中,将自动获取项目登录的授权,仅支持项目的shiro鉴权框架,密钥授权需要绑定配置的密钥。
> * 支持数据源配置,选择不同数据源,将默认给该数据源配置接口。
> * 支持sql里面请求的参数自动解析。
> * 支持复杂的多条件、多表关联、统计查询,但是需要满足一定的sql编写格式。格式如下3.1.
#### 2.sqlTools的使用场景
sqlTools最大的优势在于用配置sql的方式简化接口调用模式,将原来的前后端项目访问模式,既前端携带参数通过HTTP请求后台接口,后台通过SpringMVC在Controller层进行业务处理再调用DAO层,DAO层在Service里面封装MyBatis的Mapper文件,利用MyBatis框架组装定义的sql来和数据库交互,再返回结果数据,Controller层将数据进行进一步的处理、封装再响应给前端。这种模式每一个接口都需要后台各层之间的调用,定义接口方法,实现接口方法,注入接口类等等。各级之间最后形成调用链和数据库交互,重复过程非常多。<br>
基于上面的后台编写普通的CRUD接口模式,尤其是像可视化项目,需要后台提供各种统计接口来支持前端各种图表的展现,各种报表的查询,各种普通数据的插入、更新、删除等操作。就需要大量简单的、重复的后台接口,编写这些接口非常费时费事,会大大延期项目。因此,在这种情况下,使用sqlTools工具,给前端提供居于sql的配置接口,就非常有利。<br>
**不适合的场景**:如果后台需要复杂的业务逻辑处理,比如:工作流、自动化任务处理、定时任务、第三方服务调用、高并发情况下的缓存中间件使用等。都不适合使用直接配置工具,因为业务逻辑复杂,sql不可能直接代替掉后台的逻辑处理。这种情况下,就不合适再来配置接口。
#### 3.sqlTools的sql配置注意事项:
sqlTools配置的sql需要满足后台的校验规则,来进行非必要参数的过滤和sql的预定义检查。所以需要满足以下格式:
> 1.编写sql的时候,sql函数格式如:`yyyy-mm-dd hh24:mi:ss`,在写的时候,中间空格使用‘?’代替,既写成:`yyyy-mm-dd ?hh24:mi:ss`不要在日期格式中间出现空格<br>
>2.`where` 后面的条件表达式是一个整体的部分,比如:`a.disposaltime>=to_date('#{#starttime}','yyyy-mm-dd?hh24:mi:ss')`,中间不能出现空格部分,不能写成
<br> `a.disposaltime>=to_date('2017-05-04 00:00:00','yyyy-mm-dd?hh24:mi:ss' ) `<br>
或者 `a.disposaltime>= to_date( '#{#starttime}','yyyy-mm-dd?hh24:mi:ss' )`<br>或者`a.disposaltime > = to_date( '#{#starttime}','yyyy-mm-dd?hh24:mi:ss' )`<br>
> 3.查询字段如果是通过传入的参数控制的,那么必须起别名,中间使用AS连接,如: `SELECT '#{#jdname}' AS jdname FROM ... `。<br>
> 4.`group by`的聚合字段如果是通过传入的参数控制的,那么当不用的时候,默认传入参数为:1, 例如`GROUP BY 1,1,1,1,1`,这个表示符号必须要写上。<br>
5.动态传递的参数使用'#{#parame}'控制,比如: `where id='#{#id}'` ,这里的`id`就是传递的参数,所以使用`#{#id}`来控制,注意:中间不能有空格。
#### 4.sqlTools的操作步骤:
> 注: 以数据挖潜正式环境配置截图演示为例,sqlToos工具前后台代码皆上传至公司gitlab,上传地址:,如果有项目需要,请自行下载运行。
##### 4.1 登录地址:
`http://10.101.19.216:8100/formconfig/#/login`<br>
> 注:目前sqltools在数据挖潜部署中,并没有做单独的权限系统,所以管理项目,需要注意保密,后期维护会添加单独的登录模块。
## DSG