我正在使用Ibatis 2,并且我问如何打印对象数组(因为官方文档不见了)。这是示例数据,类似于我拥有的数据:
[
{
"firstStr": "D392",
"secondStr": "N3895"
},
{
"firstStr": "D624",
"secondStr": "M2435"
},
{
"firstStr": "T4543",
"secondStr": "K9345"
}
]
此数据定义为ArrayList
。数组内的对象定义为Map
:
Map<String,String> data = new HashMap();
data.put("firstStr","D392");
data.put("secondStr","N3895");
...
ArrayList<Map> insert = new ArrayList<Map>();
insert.add(data);
我需要使用<iterate>
在sql模板中映射此数据(因为在我的版本中foreach不可用)。我目前有什么:
<select parameterClass="ArrayList">
select * from something
where str IN
<iterate property="insert">
#[].firstStr$, #[].secondStr#
</iterate>
</select>
我遇到以下错误:
String index out of range: -1
这个问题可能是什么原因?
编辑:不要要求我更新或使用其他依赖项,因为由于软件限制,这是不可能的!
答案 0 :(得分:1)
实际上,您是对的,您的代码中只有一个小错字。在您的property="insert"
语句中删除<iterate>
:
<select parameterClass="ArrayList">
select * from something
where str IN
<iterate>
#[].firstStr$, #[].secondStr#
</iterate>
</select>