簡體   English   中英

迭代Ibatis中的對象列表

[英]Iterate list of Objects in Ibatis

我有一個對象列表,我想迭代並訪問ibatis sql中的特定字段。

防爆。

public Class Student
{
String id;
String name;
}

我將作為參數傳遞給學生對象列表(列表(學生))
並迭代訪問每個對象bean的id。 我該怎么做呢?

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>

有關詳細信息,請參閱用戶指南 ,“動態sql”一章。

順便說一句,iBatis不再開發並被凍結,它現在被稱為“MyBatis”,整個開發團隊從Apache轉移到新的MyBatis家

一個簡單的例子。

<select id="selectFewStudents" resultMap="MyMap" parameterClass="list">
    select * from student_table where student_id in
    <iterate open="(" close=")" conjunction=",">
       #[]#
    </iterate>
</select>

有關詳細信息,請參閱iBatis文檔

正如Sylar指出的那樣,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>

其中idnameStudent類的字段,我的parameterClassList<Student>

為我工作。

動態形成的sql看起來像:

select * from STUDENTS where ( id, name ) in ( (1,'a'), (2,'b') )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM