How can I pass multiple parameters and use them?

前端 未结 3 1916
执笔经年
执笔经年 2021-02-07 05:41

Hi I\'m new to myBatis.

I\'m using MyBatis and Spring with mybatis-spring.

How can I pass two different types of objects as parameters, and how can I use their p

相关标签:
3条回答
  • 2021-02-07 06:23

    Do not specify parameterType but use @Param annotation on parameters in mapper:

    @Mapper
    public interface MyMapper {
    
        void update(@Param("a") A a, @Param("b") B b);
    
        ...
    }
    

    Then reference them in mapping:

    <update id="update" > 
       UPDATE SOME WHERE x=#{a.x} AND y=#{b.y}
    </update>
    
    0 讨论(0)
  • 2021-02-07 06:29

    Use parameterType="map" and @Param annotation.

    Method declared in interface:

    void mapCategoryAndPage(@Param("categoryLocalId") Long categoryLocalId, @Param("pageLocalId") Long localId);
    

    It is not required that value of @Param annotation must be equal to name of parameter

    <insert id="mapCategoryAndPage" parameterType="map">
        INSERT INTO
            category_page_mapping (
                page_local_id,
                category_local_id)
        VALUES
            (#{pageLocalId},
             #{categoryLocalId});
    </insert>
    
    0 讨论(0)
  • 2021-02-07 06:31

    I would suggest reading the MyBatis documentation - it is pretty comprehensive and accurate.

    Lets take an example: updating a customer's name from a com.mycompany.Customer POJO instance, which has a getFirstName() getter.

    1. Pass an instance of your Customer class as the parameter
    2. Set the parameterType= "com.mycompany.Customer". But check out the alias facility - then you can use the shorthand version parameterType="Customer"
    3. Use the standard MyBatis syntax in the SQL: ... set FIRST_NAME = #{firstName}

    (Edit) If you need to pass multiple objects there are various options:

    1. Pass a map containing the multiple objects
    2. Create a utility class the aggregates your multiple classes, and pass this as the parameter.

    Again, please read the manual...

    0 讨论(0)
提交回复
热议问题