mybatis mysql foreach_记录使用mybatis 「foreach」中 index一个坑

本意是想用mybatis 中 index作为mysql语句中select的一个字段,但是最后生成mysql语句这个所有循环中的index值都是foreach循环最后一次时对应的个值。例子如下:

SELECT

#{ind} hour,

rest_space spaceCount

FROM

table_eg

WHERE

park_code = #{parkCode}

AND stats_date = #{date}

这个hourList长度为24,index正常应该是0开始,23结束,理想中结果应该是:

SELECT

0 hour,

rest_space spaceCount

FROM

table_eg

WHERE

park_code = 'parkCode'

AND stats_date ='date'

union

SELECT

1 hour,

rest_space spaceCount

FROM

table_eg

WHERE

park_code = 'parkCode'

AND stats_date ='date'

...

结果最终的sql语句中,#{ind}这个取值在每个循环中都取到了23,所以最后实际结果是:

SELECT

23 hour,

rest_space spaceCount

FROM

table_eg

WHERE

park_code = 'parkCode'

AND stats_date ='date'

union

SELECT

23hour,

rest_space spaceCount

FROM

table_eg

WHERE

park_code = 'parkCode'

AND stats_date ='date'

...

最后考虑可能#{}的问题,mybatis中针对index标签的取值将#{}改为${},结果正常了,即改成

SELECT

${ind} hour,

rest_space spaceCount

FROM

table_eg

WHERE

park_code = #{parkCode}

AND stats_date = #{date}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值