怎样读取sql语句中的占位符?
比如有:
select * from tb_person
where
1=1
/*IF name!=null && ! " ".equals(name)*/
and personname = like '%/*name*/% '
/*END*/
要怎么读取/*IF... /*name*/这些占位符?
[解决办法]
参考ibatis源代码。。。
[解决办法]
使用正则
"/*(.*?)*/"
[解决办法]
使用动态sql吧,或者在ibatis的配置文件中用:[CDATA].
[解决办法]
可以参考一下代码:
public static void main(String[] args) throws Exception{ String sql = "select * from tb_person where 1=1 /*IF name!=null && !\"\".equals(name)*/ and personname = like '%/*name*/%' /*END*/"; Matcher m = Pattern.compile("/\\*.+?\\*/").matcher(sql); while(m.find()){ System.out.println(m.group()); } }打印结果:/*IF name!=null && !"".equals(name)*//*name*//*END*/