有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Ibatis中对象的java迭代列表

我有一个对象列表,我想在其中迭代并访问iBATISSQL中的特定字段

public Class Student
{
String id;
String name;
}

我将作为参数传递学生对象列表(列表(学生))
并迭代访问每个对象bean的id。我该怎么做


共 (3) 个答案

  1. # 1 楼答案

    foreach的标签就是你要找的。例如:

    <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

  2. # 2 楼答案

    一个简单的例子

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

    有关更多信息,请参阅iBatis documentation

    正如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允许您在循环中使用变量项和索引

  3. # 3 楼答案

    试试这样:

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