Java 迭代Ibatis中的对象列表
我有一个对象列表,我想在其中迭代并访问iBATISSQL中的特定字段 前 我将作为参数传递Student objectListStudent的列表 并迭代访问每个对象bean的id。如何做到这一点?一个简单的例子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
<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') )