ibatis遍历数组:ParameterObject or property was not a Collection, Array or Iterator.

这个问题在使用ibatis的<iterate></iterate>时出现的,很简单,但是蛋疼了很久,记下来

首先从错误提示看,明显意思是你给出ibatis的参数不对路,人家不认识,我也是被这个提示误导了

1.先来个小学的

//传入的参数只有数组/集合/迭代器的时候
public List findall(SqlMapClient sqlMap, String[] ids) throws SQLException{
        return sqlMap.queryForList("findall",ids)
    }
<!--传入值唯一数组,所以甚至这么干就行-->
<statement id="findall" resultClass="..User"> select * from user_table where id in <iterate open="(" close=")" conjunction=","> #[]# </iterate> </statement>

<!--r如果是list需要加个参数类型,然后指定下-->
<statement id="findall" resultClass="..User" parameterClass="java.util.List">        
        select * from user_table where id in
        <iterate open="(" close=")" conjunction=",">
            #ids[]#
        </iterate>
    </statement>

 2.来个中学的(倒在这里了)

//传入对象,那么User中有个属性叫爱好  hobbies[]  同时form传递来的字段叫hobby
public List findAll(SqlMapClient sqlMap,User user){
    return   sqlMap.queryForList("findall",user);  

}
//
<statement id="findall" parameterClass=="...User" resultClass="...User">
select * from table_user where 1=1 <isNotEmpty property="org_ids" prepend="and">
hobby in
<iterate property="hobbies" open="(" close=")" conjunction=","> #hobbies[]# </iterate> </isNotEmpty>
</statement>

3.还没用过大学的map遍历 对象遍历 就不说了

 

慢慢看这个

http://hongzhguan.iteye.com/blog/1222353

转载于:https://www.cnblogs.com/of-course/p/8336740.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值