比如:我在XML中读到<if test="userName != null and userName != ''"> and user_name = #{userName} </if>这个Element; 我要在在java中以
if(null != userName && !"".equals(userName))

      sql.append(" and user_name = ").append(map.get("userName"));
}
的方式处理。
XML中test可能有and 也可能没有 也可能是or 那么在java中就用||各位大大们给个思路,或者贴段代码上来。呵呵 谢谢各位了

解决方案 »

  1.   

    1、如果在WEB环境中,可以解析xml得到test和value值后,传到(jsp)页面中,使用javascript的eval()函数得到结果
    2、单纯java环境,可以使用可以使用com.sun.tools.javac.Main 动态编译为临时类,然后通过反射,执行得到结果
    3、最笨的方法,通过String解析字符串
      

  2.   

    灰常感谢这位大大!这个不错 可以实现效果。
    俺是写jar包,所以暂时考虑纯java环境,动态编译是个办法,但是我xml中有很多个<if> 循环处理的话感觉性能上会有点折扣。。还有别的办法么?
      

  3.   

    你只是用来拼接sql吗?可以参考下ibatis的源代码
      

  4.   

    唉。。最后发现逻辑错了。。不应该这么实现滴。。
    不过现在问题解决了。
    我其实是想实现ibatis一部分功能,但是XML只支持
    <mapper namespace="Mor_Public_File">
    <select id="queryList" cacheName="testCache" cacheKey="test" flushCache="true">
    SELECT * FROM T_APP_FILE WHERE 1=1 
      <if test="USER_ID != null and USER_ID != ''"> AND ID = #{USER_ID}</if>
      <if test="USER_NAME != null and USER_NAME != ''"> AND USER_NAME = #{USER_NAME}</if>
    </select>
    这几个element和attribute
      

  5.   

    ibatis没用过。。也没看过源代码 只是看到一个ibatis的xml文件 想自己试着写个简单的东东 
    前台用velocity 缓存用ehcache DAO用dbutils pool用proxool
    这个XML只用来保存SQL语句