日期:2014-05-20  浏览次数:21500 次

怎样读取sql语句中的占位符?
比如有:

select   *   from   tb_person  
where  
        1=1  
        /*IF   name!=null   &&   ! " ".equals(name)*/
              and   personname   =   like   '%/*name*/% '
        /*END*/


要怎么读取/*IF...             /*name*/这些占位符?

------解决方案--------------------
参考ibatis源代码。。。
------解决方案--------------------
使用正则
"/*(.*?)*/"
------解决方案--------------------
使用动态sql吧,或者在ibatis的配置文件中用:[CDATA].
------解决方案--------------------
可以参考一下代码:
Java code

    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*/