日期:2014-05-16  浏览次数:20419 次

spring jdbc template和 ant sql task的小随笔

,目的,spring 可以填充数据到sql中,而ant sql task 可以批量执行sql,两者是否可兼得。

,探索:

使用spring 框架中的sql template的实质,是spring 向jdbc传去sql和sql参数值,这里的sql里包含很多变量,而这些变量将被jdbc驱动使用后面随附的参数替换掉。故,spring并没有生成真正的带有参数值sql,而是将变量替换为参数值的过程交给了jdbc来完成。因为jdbc规范说,jdbc一次只能接收一个sql语句,所以,使用spring框架不可能同时替换两个sql,如一个文件中的两个sql.

使用ant sql task可以执行sql文件中的多个sql,但是其本质还是一次给jdbc传一个sql语句,分多次传罢了。

如果用ant sql task来将包括多个sql语句的sql文件解析成多个sql,那么什么时候做替换呢?

-----------

,解决方法:第一步,检查ant sql task 是否支持向jdbc传递“带参sql”+“值序列”的动态sql语句?

目前使用的是$username,$password类似,即所需替换的变量前加$.

那么,将原始sql中的真实值,替换为$companyName类似,形成新的sql字符串或流,传递给ant sql task