Iterate list of Objects in Ibatis

血红的双手。 提交于 2019-11-29 10:28:26

问题


I have a list of object where I want to iterate and access a particular field in ibatis sql.

Ex.

public Class Student
{
String id;
String name;
}

I will pass as parameter a List of Student object(List(Student))
and do iteration accessing the id for each object bean. How do I do this?


回答1:


The foreach-tag is what you are looking for. Example:

<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>

See the user guide for more info, chapter "dynamic sql".

By the way, iBatis is no longer developed and is frozen, it is now called "MyBatis" and the whole developer team moved away from Apache to the new MyBatis home.




回答2:


A simple example.

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

Refer iBatis documentation for more info.

As Sylar pointed out, the java equivalent would be

<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 allows you to variables item and index which you can use inside the loop.




回答3:


Try something like:

<select id="StudentsQry" parameterClass="list">

select * from STUDENTS where 
( id, name ) in 
        <iterate open="(" close=")" conjunction="," >
                ( #[].id# , #[].name# )
        </iterate>

<select>

where id and name are fields of Student class and my parameterClass is List<Student>.

Worked for me.

The sql formed dynamically will look like:

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


来源:https://stackoverflow.com/questions/3360070/iterate-list-of-objects-in-ibatis

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!