您当前的位置: 首页 >  sql

ITKEY_

暂无认证

  • 0浏览

    0关注

    732博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

仿mybatis的SQL解析器实现思路

ITKEY_ 发布时间:2022-04-15 23:45:00 ,浏览量:0

带表达式的SQL配置如下:

select * from t_sqlapi where minId=#{minId}
 
 and maxId=#{maxId}
 
 and 1==1
 
 and name=#{name}
 

参数如下:

 Map map = new HashMap();
 map.put("minId", 100);
 map.put("maxId", 500);
 map.put("name", "itkey");

期待的转换结果如下:

select * from t_sqlapi where minId=? and maxId=? and 1==1 and name=? 

------参数:------ 100,500,itkey

转换思路 第1步:text转dom对象

把整个带表达式的sql脚本,通过dom4j工具转成dom对象方便后面数据的解析

第2步:解析标签

标签中的表达式test='maxId !=null’使用OGNL表达式工具解析其内容。如果表达式的结果是true,则标签的内部的子元素则生。

第3步:替换#{xxx}为占位符?

需要把变量的部分#{xxx},替换成sql中的占位符?,然后把参数的值按变量摆放的顺序传参。

关注
打赏
1665243900
查看更多评论
立即登录/注册

微信扫码登录

0.0379s