如何使用 ? mybatis parameterType是map,地图有一个列表

时间:2014-03-20 06:20:48

标签: mybatis

像这样的代码 如何使用 ? mybatis parameterType是map,地图有一个列表

Map<String,List<String>> map = new HashMap<String, Object>();
List list = new arrayList();
list.add("1");
list.add("2");
map.put("category", list)

service.updateByList(map)

   //xml like this
   <update id="updateByList" parameterType="java.util.Map">
        update hs_esl
        set
        category = #{?}
        where id in
        <foreach collection="list" item="item" index="index" open="(" separator=","
     close=")">
            (#{?})
        </foreach>
   </update>

1 个答案:

答案 0 :(得分:0)

如果你有同一列的多组,我没有找到一个案例。因此,相信hashMap是没用的。因此,您可以创建一个具有字段类别和列表的对象,如下所示。

<强> KPData.java     公共类KPData {

    private String category;
    private List<Integer> sal;

    public String getCategory() {
        return category;
    }

    public void setCategory(String category) {
        this.category = category;
    }

    public List<Integer> getSal() {
        if (sal == null) {
            return new ArrayList<Integer>();
        } else {
            return sal;
        }
    }

}

您的sqlmap文件看起来像

<update id="setKP1" parameterType="kPData">

        update KPDATA
            set CATEGORY= #{kp1.category}
            where SAL in
            <foreach item="item1" index="index" collection="kp1.sal" open="("
                separator="," close=")">
                #{item1}
            </foreach>
</update>

和您的界面文件

public void setKP1(final @Param(“kp1”)KPData kp1)抛出异常;

如果您仍想使用hashmap,请参阅链接here