利用Ibatis的Iterate标签可以循环遍历List的每个元素来动态做成SQL文,但是如果传入的是一个嵌套List的时候,
该怎么用Iterate来遍历呢,笔者经过大量的实验,终于找到了这种方法。代码如下
<iterate property="csvData">
INSERT INTO $dbname$.K_XXX (CD, KNO, MSNO, data_no
<iterate property="entryMsItem" close=") ">
, $entryMsItem[]$
</iterate>
SELECT #Cd#, #kno#, #msNo#, ZEROIFNULL(MAX(DATA_NO)) + 1
<iterate property="csvData[]" >
, #csvData[].[]#
</iterate>
FROM $dbname$.K_XXX
WHERE CD =#Cd#
AND KNO = #kno#
AND MSNO = #msNo#
;
</iterate>
以上代码中,csvData是一个嵌套List,即它里面的内容仍旧是一个List,
用Iterate的遍历的方法的重要点在:
<iterate property="csvData[]" >
, #csvData[].[]#
</iterate>
其中csvData[]代表该List的一个元素,而#csvData[].[]#代表的是List下的List的一个元素。
这样就能遍历一个二层的List对象了。