如何通过代码获得模板的指令信息

如何通过代码获得模板的指令信息,如下:
select * from girl where age > #para(age) and weight < #para(weight)
如何通过Java代码解析这个SQL语句,获得para的信息


评论区

Aa789

2022-11-15 15:44

如何通过代码获得模板的指令信息,如下:
select * from girl where age > #para(age) and weight < #para(weight)
如何通过Java代码解析这个SQL语句,获得para的信息

杜福忠

2022-11-16 09:21

@Aa789 Object[] para = Db.templateByString(sql, kv).getSqlPara().getPara();

yiditushe

2022-11-16 09:36

有点好奇,para不是自己传进去的么 就是kv?是啥场景要反过来获取para?

Aa789

2022-11-16 11:18

@杜福忠 我想在传入之前行校验,sql是变化的

Aa789

2022-11-16 11:18

@杜福忠 我想在传入之前行校验,sql是变化的,能不能解析后获取,看了一下源码,好像没有接口

Aa789

2022-11-16 11:35

@yiditushe 我想在传入之前行校验,sql是变化的,能不能解析后获取,看了一下源码,好像没有接口

杜福忠

2022-11-16 15:51

@Aa789 估计DruidPlugin这个类里面的addFilter 是你想要的。不如说说整体需求,搞不好有现成的方案

Aa789

2022-11-18 21:31

@杜福忠 做一个通用的api,前端通过传入表面 字段等信息,直接查询数据库,但是需要对前端传入的字段进行校验

杜福忠

2022-11-18 21:38

@Aa789 组装SQL的时候,就是校验最方便的节点了。比如表名,字段,条件,排序等等,组装拼接SQL的时候就可以校验了包括权限等等。所以不需要从SQL里面解析,而是组装SQL的时候就处理

杜福忠

2022-11-18 21:46

@Aa789 以前做过一个类似项目也是由前端传入参数,后端组装SQL的。分享出来的代码是去掉了权限处理的Service。是可以继承DbService重写里面的方法,实现各个方法的校验。
https://gitee.com/yun_final/JFinal-API/blob/v1.0/src/main/java/com/yunfinal/api/service/db/DbService.java

Aa789

2022-11-27 21:57

热门反馈

扫码入社