代码之家  ›  专栏  ›  技术社区  ›  Jin Kwon

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

  •  20
  • Jin Kwon  · 技术社区  · 10 年前

    嗨,我刚认识巴蒂斯。

    我正在使用MyBatis和Spring以及MyBatis Spring。

    如何传递两种不同类型的对象作为参数,以及如何在查询中使用它们的财产?

    <update id="update" parameterType="A, B"> <!-- @@? -->
      UPDATE SOME WHERE x=A.x AND y=B.y <!-- @@? -->
    </update>
    
    3 回复  |  直到 10 年前
        1
  •  53
  •   Roman-Stop RU aggression in UA    10 年前

    不指定 parameterType 但使用 @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>
    
        2
  •  8
  •   Tural    10 年前

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

    接口中声明的方法:

    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>
    
        3
  •  -4
  •   kiwiron    10 年前

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

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

    1. 传递Customer类的实例作为参数
    2. 设置 parameterType=“com.mycompany.Customer” “.但请查看别名工具-然后可以使用速记版本 parameterType=“客户”
    3. 在SQL中使用标准MyBatis语法: …设置FIRST_NAME=#{firstName}

    (编辑)如果需要传递多个对象,有多种选项:

    1. 传递包含多个对象的贴图
    2. 创建一个实用程序类来聚合多个类,并将其作为参数传递。

    再次,请阅读手册。。。