您好,我是myBatis的新手。
我使用MyBatis和Spring和mybatis-spring。
如何将两种不同类型的对象作为参数传递,如何在查询中使用它们的属性?
<update id="update" parameterType="A, B"> <!-- @@? -->
UPDATE SOME WHERE x=A.x AND y=B.y <!-- @@? -->
</update>
答案 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。
(编辑)如果您需要传递多个对象,则有多种选择:
再次,请阅读手册......