请问将java程序和sql分离怎么实现

biandongfeng 2011-06-11 06:14:43
比如现在我有一个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
请问具体的实现方法。
...全文
296 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
y234239150 2011-06-13
  • 打赏
  • 举报
回复
弱弱的问一句:ibatis是服务启动的时候就把sql读进内存了吗?那<if test="userId == null and userId == ''"> and userId = #{userId}</if>是怎么处理的? 没想通。。。

俺的想法是在一个servlet的init(ServletConfig servletConfig)中取得XML文件路径,DTD验证后map.put(namespace,rootElement);

要调用的时候再分析……不知道对不对,求高手解答。。。。
Spring89 2011-06-12
  • 打赏
  • 举报
回复
这你用ibatis这个框架 就得了!
它就是SQL和java文件分离了的!
挺好用的
coooliang 2011-06-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 bao110908 的回复:]
嗯 iBatis/MyBatis 就是干这个的,不要自己写了
[/Quote]
是啊
楼主ibatis就是做这个的,而且可以在XML中动态拼接SQL

关于SSI的整合我博客有。
爱人间 2011-06-12
  • 打赏
  • 举报
回复
ibatis很适合做这个,它主要就是用来写sql语句的e
JAVA涨薪基地 2011-06-12
  • 打赏
  • 举报
回复
如果LZ你不是j2ee的新手的话,
那我觉得楼主是要学习这种模式。
如果LZ是新手那可以如上面很多人所说去学习学习ibaits
其实整个实现过程跟ibaits差不多
思路:配置监听器linsten 在web中配置该监听器
该监听器便是解析xml文档的。把对应的sql语句读到内存中。如楼主说要用id来访问就用map集合保存。id保存key sql语句就是值。
需要用到时便从map中取值。。
  • 打赏
  • 举报
回复
嗯 iBatis/MyBatis 就是干这个的,不要自己写了
rj0917 2011-06-11
  • 打赏
  • 举报
回复
我前面做那个项目,ibatis框架就是把所有的sql放到一个配置文件中的,然后在impl实现类中用id指向你配置文件中写的那条sql语句,就可以实现你想要的sql与java代码分离,你可以看看ibatis相关的知识,这个上手比较快,基本的东西几天就学会了。。。
romanitc 2011-06-11
  • 打赏
  • 举报
回复
学习了,帮顶一下!
宁波朱超 2011-06-11
  • 打赏
  • 举报
回复
学习。
Spring源码解析 2011-06-11
  • 打赏
  • 举报
回复
将程序和SQL分离可以用框架,如hibernate,ibatis,你说的这很像ibatis
Inhibitory 2011-06-11
  • 打赏
  • 举报
回复
MyBatis就是做这个的
dinghun8leech 2011-06-11
  • 打赏
  • 举报
回复
个人建议:不应该问具体实现,应该问思路。
思路是写个xml解析规则,用dom、sax或dom4j来解析他,存在web工程的上下文中。
然后整一个工程启动即运行的监听器,把上面的逻辑套进去。
最后在配置文件里把监听器配起来。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧