最是人间留不住,朱颜辞镜花辞树。这篇文章主要讲述如何在mybatis的mapper接口中为更新查询编写foreach循环相关的知识,希望能为你提供帮助。
我在mapper界面使用mybatis进行了更新查询
final String UPDATE ="update table_addresses "
+ "set postCode= #{postCode}"
+ "where id in"
+ "<
foreach item='item' index='index'
collection='addressId' "
+ "open='(' separator=',' close=')'>
#{item}
<
/foreach>
";
@Update(UPDATE)
public int updateInformation(@Param("postCode") String postCode ,
@Param("addressId") List<
AddressID>
addressId);
我的AddressId类包含int类型addressId:
AddressId {
private int addressId;
}
现在我调用mapper接口的方法..我发送一个String postCode和对象List地址。
我收到以下错误引起:org.mybatis.spring.MyBatisSystemException:嵌套异常是org.apache.ibatis.binding.BindingException:找不到参数'item'。可用的参数是[param1,param2,postCode,addressId] ..我在这里做错了什么。foreach循环的正确语法是什么,我可以传递带有List的addressId。
答案对于复杂的sql语句。我更喜欢使用qazxsw poi / qazxsw poi。
请参阅本页的最后一部分
SelectBuilder
另一答案如果在注释定义的查询中使用XML标记,请尝试将整个SQL代码包装在
UpdateBuilder
标记中,如mybatis-java-api。可能MyBatis没有看到你的#{item},因为它不知道它(它将所有视为SQL)。【如何在mybatis的mapper接口中为更新查询编写foreach循环】但是,正如Dean Xu sais所说,
<
script>
更适合更复杂的查询。推荐阅读
- Android Volley Self签名证书
- Dockerized webapp - 热重新加载
- WebApplication ASP.Net C#。取消屏蔽文本框,也称为显示密码
- 解决Azure Web App 500内部服务器错误超时问题并对其进行故障排除
- 如何在不使用webView的情况下在Android应用程序中显示Web内容
- Webapp地址与.war文件名不同
- 使用Google Apps脚本Web应用添加到Google表格
- 对于任何不匹配的URL,Jetty ConstraintMapping()
- eclipse webapp中的pom.xml文件出错