微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mybatis中foreach报错:_frch_item_0 not found的解决方法

这篇文章主要给大家介绍了mybatis中foreach报错:_frch_item_0 not found的解决方法文章通过示例代码介绍了详细的解决方法,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。

发现问题

在mybatis的动态sql中最常见的错误就是使用,比如:_frch_item_0 not found

There is no getter for property named 'states' in 'class com.xingguo.model.User'

等等。

一般在使用时出现问题是由以下几种错误使用方式造成的:

       1.参数类型不是List,特别当参数为实体类一个属性为list时,注意collection的名字。

       2.遍历时属性的名字或者字段错误

       3.多个参数时没有使用@param进行命名,在sql中顺序混乱

下面从MysqL的源码中看下对于list参数是如何解析的。

首先看到DefaultsqlSession.Java中的wrapCollection()方法

private Object wrapCollection(final Object object) { if (object instanceof Collection) { StrictMap map = new StrictMap(); map.put("collection", object); if (object instanceof List) { map.put("list", object); } return map; } else if (object != null && object.getClass().isArray()) { StrictMap map = new StrictMap(); map.put("array", object); return map; } return object; }

所以从上面可以看到中认情况下写的array和list,也就是collection认的是array和list。

总结

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐