Foreach注射剂对mybatis无效 [英] foreach injection is not working in mybatis

查看:22
本文介绍了Foreach注射剂对mybatis无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮助我将标签注入@Delete查询。

@Delete({"<script>","${__sql}","</script>"})
public int Delete(String __sql, List<Map<String, Object>> list);

__SQL:

DELETE FROM MYTABLE WHERE KEY IN (<foreach collection='list' item='item' seperator=','> #{item.key} </foreach>)

我收到以下错误:

Caused by: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'item' not found. Available parameters are [__sql, list, param1, param2]

${}中的

推荐答案

标记不计算。
您需要将SQL provider@Lang一起使用。

public interface YourMapper {
  @Lang(XMLLanguageDriver.class)
  @DeleteProvider(type = YourSqlProvider.class, method = "deleteSql")
  int Delete(String sql, List<Map<String, Object>> list);

  class YourSqlProvider {
    public String deleteSql(String sql) {
      return "<script>" + sql + "</script>";
    }
  }
}

这需要MyBatis 3.5.1或更高版本,IIRC。

这篇关于Foreach注射剂对mybatis无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆