sql打印表结构_0行代码写服务之,利用markdown实现自定义sql动态模板

通过markdown实现自定义动态sql拼接,实现通过sql配置完成接口开发发布

整体框架还是依据0行代码写服务的框架不清楚的看一下前几篇文章,这里我们为了满足复杂查询利用动态sql拼接的方式去实现具体实现如下:

首先来看一下自定义的markdown sql文件:test.md

5c80772ddb15d1c7bb147ec390bd6f06.png

文件真实内容如下:

第一步配置sql文件:

首先我们根据“;”定义每一条sql的结尾,用“===”分割sql的标记名称和具体执行的sql,用“@”符号来确定出动态sql的部位,根据传的值是否为空去动态拼接sql

selectlike

===

select * from test where 1=1

@times

and times = #times#

@name

and instr(name, #name#)

selectpage

===

select * from test where 1=1

@times

and times = #times#

@name

and name = #name#

delete

===

delete from test where 1=1

@times

and times = #times#

@name

and name = #name#

@id

and id = #id#;

myselect

===

select p.province_name,p.province_id,c.city_id,c.city_name,c.lat,c.lon from b_china_provice p LEFT JOIN b_china_city c on p.province_id=c.province_id where 1=1

@name

and p.province_name in(#name#)

第二步接口服务注册:

为了和框架保持一致性,表结构完全采用以前框架的结构,我们把sql文件写好之后在这个表里面配置需要执行的方法名如“moreConditionsSearch”,这个参数是暴露给前端的参数,他对应的sqls为"test.selectlike",也就是我们后台需要执行的sql,test是sql文件的名称,selectlike是我们对应test.md文件中具体要执行的那一条sql

435dfe682604803f248e2377e52b677c.png

第三步调用已配置通用化的数据服务接口:

以上两步配置我们的通用接口地址如下:

/commapi?m=q&k=moreConditionsSearch

这个接口对应的动态sql为

selectlike

===

select * from test where 1=1

@times

and times = #times#

@name

and instr(name, #name#)

也就是这个sql里可以传递的参数有timesname。那么我们分别执行以下看一下结果

1、不带参数:/commapi?m=q&k=moreConditionsSearch

3e1a1eb6f7b7beeff15fd4261fc23fc1.png

解析结果

3bd967b470e661324983308b11604492.png

执行返回结果

2.携带一个参数name;/commapi?m=q&k=moreConditionsSearch&name=王

c1604061f28b3eb480a4126954615b87.png
a8dd4ec24596cad304a61db7870be03f.png

3.携带一个参数name和times两个参数;

/commapi?m=q&k=moreConditionsSearch&name=王&times=3

442f8936b1106c9cb5448bdd6140ed85.png
9fc87969af15629fce858066e71f187a.png

4.携带一个参数name和times两个参数并且加上分页;

/commapi?m=q&k=moreConditionsSearch&name=王&times=3&page=1&size=1

e3726a980ea9acc85a06812f66a85e1c.png

如果此处携带分页参数,则实际执行sql为加了分页后的,这里打印打印的执行sql并不是最终的执行sql 。最终的执行sql会变成"select * from test where 1=1 and times = 3 and instr(name, '王') limit 1,1"

483b2f4c0816cb0bad99228626c71040.png

5.只携带分页参数;

/commapi?m=q&k=moreConditionsSearch&page=1&size=1

d70e2936dc260524ecde546e4a594b8e.png
9e609c8ee541ef85e0aa7e065579d80d.png

复杂sql:动态拼接参数:

问同时要了一个比较长的sql如下

5126c2deadbe7c5226ba69ce86b56380.png
3e484c1293123574953de1a267d0a553.png

这个sql是个查询的,我们可以看到这里有两个参数我们做成动态传入:

最终解析结果如下:

66039af80278e634588489f894c0cbad.png

下片文章演示删除和修改相关执行测试结果,新增动态接口正在开发中,欢迎讨论交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值