我有一個對象列表,我想迭代並訪問ibatis sql中的特定字段。在Ibatis中迭代對象列表
Ex。
public Class Student
{
String id;
String name;
}
我將通過爲參數Student對象(名單(學生))
的名單,做迭代訪問ID爲每個對象的bean。我該怎麼做呢?
我有一個對象列表,我想迭代並訪問ibatis sql中的特定字段。在Ibatis中迭代對象列表
Ex。
public Class Student
{
String id;
String name;
}
我將通過爲參數Student對象(名單(學生))
的名單,做迭代訪問ID爲每個對象的bean。我該怎麼做呢?
The foreach -tag是你在找什麼。示例:
<select id="selectPostIn" resultType="domain.blog.Post">
SELECT *
FROM POST P
WHERE ID in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
有關更多信息,請參見user guide「動態sql」一章。
順便說一句,iBatis不再被開發和凍結,現在被稱爲「MyBatis」,整個開發團隊從Apache移動到new MyBatis home。
一個簡單的例子。
<select id="selectFewStudents" resultMap="MyMap" parameterClass="list">
select * from student_table where student_id in
<iterate open="(" close=")" conjunction=",">
#[]#
</iterate>
</select>
有關更多信息,請參閱iBatis documentation。
正如塞勒指出的是,Java相當於將
<select id="selectFewStudents" resultType="MyMap">
select * from student_table where student_id in
<foreach item="currentRow" index="rowNum" collection="list" open="(" separator="," close=")">
#{currentRow}
</foreach>
</select>
iBatis的讓你的變量項目和索引,你可以在循環中使用。
嘗試類似:
<select id="StudentsQry" parameterClass="list">
select * from STUDENTS where
(id, name) in
<iterate open="(" close=")" conjunction="," >
(#[].id# , #[].name#)
</iterate>
<select>
其中id
和name
是Student
類的字段和我parameterClass
是List<Student>
。
爲我工作。
動態生成的SQL的樣子:
select * from STUDENTS where (id, name) in ((1,'a'), (2,'b'))
自我解釋,很好。 – Saif 2014-08-26 09:43:01
如何在parameterClass屬性中指定包含'<' and '>'的類? – RyanHennig 2016-05-03 20:50:30
謝謝。我會試着看看這是否存在於ibatis2中,也許會改爲mybatis。 – cedric 2010-08-02 04:10:32