比如现在我有一个test.xml文件,
文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<xml-body>
<sql id="1">
select filed1,filed2 from test1
</sql>
<sql id="2">
select filed1,filed2  from test2
</sql>
<sql id="3">
select filed1,filed2  from test3
</sql>
</xml-body>
现在就是我程序中的所有sql语句都写在这个文件中。
在web工程启动的时候将这个文件加载,然后在调用sql语句时,通过id来查找那个sql语句
查询出结果之后,将字段作为map中的key键,值作为value
请问具体的实现方法。

解决方案 »

  1.   

    个人建议:不应该问具体实现,应该问思路。
    思路是写个xml解析规则,用dom、sax或dom4j来解析他,存在web工程的上下文中。
    然后整一个工程启动即运行的监听器,把上面的逻辑套进去。
    最后在配置文件里把监听器配起来。
      

  2.   

    将程序和SQL分离可以用框架,如hibernate,ibatis,你说的这很像ibatis
      

  3.   

    我前面做那个项目,ibatis框架就是把所有的sql放到一个配置文件中的,然后在impl实现类中用id指向你配置文件中写的那条sql语句,就可以实现你想要的sql与java代码分离,你可以看看ibatis相关的知识,这个上手比较快,基本的东西几天就学会了
      

  4.   

    嗯 iBatis/MyBatis 就是干这个的,不要自己写了
      

  5.   

    如果LZ你不是j2ee的新手的话,
    那我觉得楼主是要学习这种模式。
    如果LZ是新手那可以如上面很多人所说去学习学习ibaits
    其实整个实现过程跟ibaits差不多
    思路:配置监听器linsten 在web中配置该监听器
    该监听器便是解析xml文档的。把对应的sql语句读到内存中。如楼主说要用id来访问就用map集合保存。id保存key sql语句就是值。
    需要用到时便从map中取值。。
      

  6.   

    ibatis很适合做这个,它主要就是用来写sql语句的e
      

  7.   

    是啊
    楼主ibatis就是做这个的,而且可以在XML中动态拼接SQL关于SSI的整合我博客有。
      

  8.   

    这你用ibatis这个框架 就得了!
    它就是SQL和java文件分离了的!
    挺好用的
      

  9.   

    弱弱的问一句:ibatis是服务启动的时候就把sql读进内存了吗?那<if test="userId == null and userId == ''"> and userId = #{userId}</if>是怎么处理的? 没想通俺的想法是在一个servlet的init(ServletConfig servletConfig)中取得XML文件路径,DTD验证后map.put(namespace,rootElement);要调用的时候再分析……不知道对不对,求高手解答。