Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代Ibatis中的对象列表_Java_Sql_Ibatis - Fatal编程技术网

Java 迭代Ibatis中的对象列表

Java 迭代Ibatis中的对象列表,java,sql,ibatis,Java,Sql,Ibatis,我有一个对象列表,我想在其中迭代并访问iBATISSQL中的特定字段 前 我将作为参数传递Student objectListStudent的列表 并迭代访问每个对象bean的id。如何做到这一点?一个简单的例子 <select id="selectFewStudents" resultMap="MyMap" parameterClass="list"> select * from student_table where student_id in <itera

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

我将作为参数传递Student objectListStudent的列表 并迭代访问每个对象bean的id。如何做到这一点?

一个简单的例子

<select id="selectFewStudents" resultMap="MyMap" parameterClass="list">
    select * from student_table where student_id in
    <iterate open="(" close=")" conjunction=",">
       #[]#
    </iterate>
</select>
有关更多信息,请参阅

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

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>
有关更多信息,请参阅动态sql一章

顺便说一句,iBatis已经不再开发,并且已经被冻结,它现在被称为MyBatis,整个开发团队都从Apache转移到了IBM。

尝试以下方法:

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

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

<select>

这对于.NET iBatis是正确的,但是对于Java iBatis是错误的。在Java中,foreach标记用于迭代集合。我不认为.NET和Java有什么区别,而是ibatis2和ibatis3有什么区别。我在Java中使用ibatis2并使用iterate标记。还使用[]语法而不是{}语法。。您只打印一个值,它是对象吗?我不懂这个例子谢谢。我将尝试查看ibatis2中是否存在这种情况,并可能更改为mybatis.self explained,nice。如何指定parameterClass属性中包含的类?能否共享构建数组和初始化对象的代码
<select id="StudentsQry" parameterClass="list">

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

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