带有可选参数的MyBatis存储过程调用

时间:2012-02-08 11:24:37

标签: mybatis

我想知道如何在带有可选参数的mybatis xml存储过程调用中进行描述。 例如:

DAO

public List getMethod1(Object arg1) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("arg1", arg1);
        return selectList("myBatisSelect", map);
}

public List getMethod1(Object arg1, Object arg2) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("arg1", arg1);
        map.put("arg2", arg2);
        return selectList("myBatisSelect", map);
}

XML

    <select id="myBatisSelect"
            parameterType="map"
            resultType="MyResultObject">
          CALL sql_stored_procedure
            (
                @arg1= #{arg1}
                <!-- How to add optional parameter here??-->
            )       

    </select>

1 个答案:

答案 0 :(得分:2)

您可以使用条件逻辑来动态生成您的SQL。

<select id="myBatisSelect"
        parameterType="map"
        resultType="MyResultObject">
      CALL sql_stored_procedure
        (
            @arg1= #{arg1}
            <if test="arg2 != null">
                    ,#{arg2}
            </if>
        )       

</select>

MyBatis3 User Guide有更多信息。