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

Jin*_*won 14 spring ibatis mybatis

嗨,我是myBatis的新手.

我正在使用MyBatis和Spring和mybatis-spring.

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

<update id="update" parameterType="A, B"> <!-- @@? -->
  UPDATE SOME WHERE x=A.x AND y=B.y <!-- @@? -->
</update>
Run Code Online (Sandbox Code Playgroud)

Rom*_*val 39

不要在mapper中指定参数parameterType但使用@Param注释:

@Mapper
public interface MyMapper {

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

    ...
}
Run Code Online (Sandbox Code Playgroud)

然后在映射中引用它们:

<update id="update" > 
   UPDATE SOME WHERE x=#{a.x} AND y=#{b.y}
</update>
Run Code Online (Sandbox Code Playgroud)


Tur*_*ral 6

使用parameterType ="map"和@Param注释.

接口中声明的方法:

void mapCategoryAndPage(@Param("categoryLocalId") Long categoryLocalId, @Param("pageLocalId") Long localId);
Run Code Online (Sandbox Code Playgroud)

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

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