【问题标题】:How to get a specific Object from HashMap in MyBatis foreach?如何从 MyBatis foreach 中的 HashMap 中获取特定对象?
【发布时间】:2016-03-09 06:07:46
【问题描述】:

如何在 MyBatis foreach 循环中获取特定对象?我写了以下代码:

<select id="getResult" resultMap="myResultMap" parameterType="java.util.HashMap">

    SELECT a.myselectfield_1, a.myselectfield_2                      
    FROM   ${mySchema}.test_a a    
    WHERE  a.field_x = 007
     AND   a.test_b IN 
             <foreach item="item" index="index" collection="#{map.get('myItems')}" open="(" separator="," close=")">
                #{item}         
            </foreach>
    ORDER BY a.myselectfield_1

</select>

这是Java HashMap,与SQL 语句相关:

HashMap<String, Object> myMap = new HashMap<String, Object>();
myMap.put("mySchema", mySchema);
myMap.put("myItems", myArrayList);

我收到以下错误消息:

Error querying database. Cause: java.lang.NullPointerException: target is null for method get

如何在 MyBatis foreach 中从 Java HashMap 中读取特定值?我正在使用 1.1.1 版

【问题讨论】:

    标签: java foreach mybatis


    【解决方案1】:

    您不需要使用 get 方法来访问 map 元素,您可以在 foreach 标记中简单地编写 collection="myItems" 或 collection="map.myItems",这取决于您定义映射器接口的方式(后者假定您使用了 @Param("map") 注释)。

    【讨论】:

    • 抱歉,您的解决方案无法正常工作。我收到同样的错误信息!
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 2022-08-15
      • 2015-09-26
      相关资源
      最近更新 更多