一个关于Spring中使用SQL的问题,有难度!

phddcg 2006-06-19 05:06:19
TABLE test:
========================
ID Date_
------- --------------
1 2006-01-01
2 2006-01-02
3 2006-01-03
4 2006-01-04
5 2006-01-05

我继承MappingSqlQuery:
...
super(ds, "select * from test where Date_ in (?)");
declareParameter(new SqlParameter(Types.VARCHAR));
compile();
...

现在的问题是,如果我想实现如下的逻辑:
select * from test where Date_ in ('2006-01-01','2006-01-02');
按照上面的方法是不可以的,因为对于占位符(?)我绑定了一个VARCHAR参数,但是实际上'2006-01-01','2006-01-02'
这是两个VARCHAR参数,按照SQL的理解,上面的语句应该是:
select * from test where Date_ in (''2006-01-01','2006-01-02''),
大家可以看出来,我们的数据库里面并没有'2006-01-01','2006-01-02'这样的一条记录,所以返回的就是空记录。
实在没有办法,只能连接SQL语句,用JdbcTemplate来实现了,但是这样我又享受不了MappingSqlQuery的乐趣,
所以请问继承MappingSqlQuery来实现,怎么样做呢?注意:有一种扫描全表的方法,但是效率超级低,受不了!
谢谢!在线等。。。。。。
...全文
251 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
0xTonyWang 2006-06-22
  • 打赏
  • 举报
回复
这种情况,你不用考虑了,用JdbcTemplate.
aChinese 2006-06-21
  • 打赏
  • 举报
回复
然后在案
while(...){
加上参数值
}
aChinese 2006-06-21
  • 打赏
  • 举报
回复
拼SQL, "select * from test where Date_ in ("?
while(...)
{
+",?"
}
+ ")"

然后在案
while(...){

}
caijingjing 2006-06-21
  • 打赏
  • 举报
回复
顶~~~~~~~~~~
phddcg 2006-06-21
  • 打赏
  • 举报
回复
呵呵,没办法,我也直接用了JdbcTemplate.
Saro 2006-06-20
  • 打赏
  • 举报
回复
MappingSqlQuery提供的是编程式的sql-object mapping,适合静态的sql,你这种需求是动态的sql查询,用jdbctemplate好了。
phddcg 2006-06-19
  • 打赏
  • 举报
回复
顶!

67,514

社区成员

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

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