如何在不创建类的情况下将2个或更多参数传递给SqlSession插入或更新方法?

时间:2011-12-15 09:48:53

标签: mybatis

我想知道是否可以将两个或更多参数传递给mybatis SqlSession插入方法,而无需为此创建新类。我知道resultType =“hashmap”可以用来从select中返回数据,但是如何传递数据呢?还想知道为什么不为多个参数使用varargs插入方法。

提前致谢 Remis B

1 个答案:

答案 0 :(得分:9)

有几种不同的方法。

<强>映射

如果您使用我推荐的Mapper类,您可以执行类似的操作。

interface Mapper
{
   void insertSomeObject(@Param("a") Integer a,  @Param("b") Integer b);
}

然后在您的xml映射器中,您可以使用#{a}#{b}来引用您的参数。

<强> HashMap中

您可以将参数包装在HashMap中。

HashMap map = new HashMap();
map.put("a", 1);
map.put("b", 2);

然后将哈希映射传递给SQL会话插入,并使用键值引用参数。

    session.insert("myInsertStatment", map);

任何收藏

我不确定您的确切需求,但如果您有任意数量的整数传递给insert语句,只需传递List或任何Collection。

   interface Mapper
    {
       void insertSomeObject(@Param("integers") Collection<Integer> integers);
    }

然后在您的xml中,您可以使用for each生成动态xml以满足您的需求。

<foreach collection="integers" item="integer" open="(" close=")" separator=",">
    #{integer}
</foreach>