如何传递多个参数并使用它们?

时间:2014-07-26 06:06:10

标签: spring mybatis ibatis

您好,我是myBatis的新手。

我使用MyBatis和Spring和mybatis-spring。

如何将两种不同类型的对象作为参数传递,如何在查询中使用它们的属性?

<update id="update" parameterType="A, B"> <!-- @@? -->
  UPDATE SOME WHERE x=A.x AND y=B.y <!-- @@? -->
</update>

3 个答案:

答案 0 :(得分:32)

不要指定parameterType,而是在mapper中对参数使用@Param注释:

@Mapper
public interface MyMapper {

    void update(@Param("a") A a, @Param("b") B b);

    ...
}

然后在映射中引用它们:

<update id="update" > 
   UPDATE SOME WHERE x=#{a.x} AND y=#{b.y}
</update>

答案 1 :(得分:5)

使用parameterType =“map”和@Param注释。

在interface:

中声明的方法
void mapCategoryAndPage(@Param("categoryLocalId") Long categoryLocalId, @Param("pageLocalId") Long localId);

不要求@Param注释的值必须等于参数名称

<insert id="mapCategoryAndPage" parameterType="map">
    INSERT INTO
        category_page_mapping (
            page_local_id,
            category_local_id)
    VALUES
        (#{pageLocalId},
         #{categoryLocalId});
</insert>

答案 2 :(得分:-3)

我建议阅读MyBatis文档 - 它非常全面和准确。

让我们举一个例子:从com.mycompany.Customer POJO实例更新客户名称,该实例具有getFirstName()getter。

  1. 将Customer类的实例作为参数
  2. 传递
  3. 设置 parameterType =&#34; com.mycompany.Customer &#34;。但请查看别名工具 - 然后您可以使用简写版 parameterType =&#34;客户&#34;
  4. 在SQL中使用标准MyBatis语法: ...设置FIRST_NAME =#{firstName}
  5. (编辑)如果您需要传递多个对象,则有多种选择:

    1. 传递包含多个对象的地图
    2. 创建一个实用程序类,聚合多个类,并将其作为参数传递。
    3. 再次,请阅读手册......