1. 程式人生 > >Java中呼叫儲存過程 -- Mybatis

Java中呼叫儲存過程 -- Mybatis

Java中呼叫儲存過程 -- Mybatis

public interface XXXMapper {
​
    /*
     * 1.沒有出參(返回值,void) 返回不了值,返回值都封裝在入參的實體類或Map中(引用型別)
     *   原因:存過的入參、出參都在java呼叫的入參中
     * 2.Map裡面封裝了出參和入參
     * 3.引用型別可以直接修改裡面的資料,Map屬於引用型別(map中的每個引數,必須是引用型別)
     * 
     * eg:
     * Map<String, String> map = new HashMap<String, String>();
            map.put("hostIp", "XX.XX.XX.XX");
            map.put("outFlag", new String());
            map.put("outServer", new String());
     */
    public void insertTaskNoc(Map<String, String> map);
    
    public void getMinQueueServer(ParamEntity paramEntity);
    
}
​
public class ParamEntity {
    private String outFlag;
    private String outServer;
    ....
}
<!-- 
    說明:
        1.CIDP_BATCH_SERVICE.INSERTTASKNOC:存過名;
        2.call 回撥存過, mode的值代表輸入、輸出
 -->
<select id="insertTaskNoc" statementType="CALLABLE" parameterType="java.util.Map">
    {CALL CIDP_BATCH_SERVICE.INSERTTASKNOC(
        #{hostIp,    mode = IN,  jdbcType = VARCHAR},
        #{outFlag,   mode = OUT, jdbcType = VARCHAR},
        #{outServer, mode = OUT, jdbcType = VARCHAR}
    )}
</select>
​
<select id="getMinQueueServer" statementType="CALLABLE" parameterType="com.itcast.test.ParamEntity">
    {CALL CIDP_BATCH_SERVICE.GETMINQUEUESERVER(
        #{outFlag,   mode = OUT, jdbcType = VARCHAR},
        #{outServer, mode = OUT, jdbcType = VARCHAR}
    )}
</select>