2012-12-21 47 views
6

Tôi đang cố gắng lấy giá trị trả về (giá trị nguyên) từ một hàm được lưu trữ trong Oracle 11g.Giá trị trả về Mybatis

Chức năng thêm 10 đến số lượng đầu vào:

FUNCTION ADD_TEN(INPUT IN NUMBER) RETURN NUMBER IS 
BEGIN 
    RETURN INPUT + 10; 
END; 

Trong giao diện mapper của tôi, tôi có dòng:

Integer add(Integer input); 

Và trong tập tin Xml

<select id="add" statementType="CALLABLE" resultType='java.lang.Integer'> 
    {#{output,mode=OUT,jdbcType=NUMERIC,javaType=Integer} = call test_pkg.ADD_TEN( 
    #{input,jdbcType=NUMERIC}) } 
</select>` 

Các cuộc gọi đến phương pháp giống như:

Integer sum = mapper.add(45); 

Nhưng tôi nhận được lỗi sau:

Could not set property 'output' of 'class java.lang.Integer' with value '55' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'output' in 'class java.lang.Integer' 

Tôi đang làm gì sai? Tôi thực sự bị mất với điều này ...

Cảm ơn bạn.

Trả lời

1

Giải pháp: kiểu trả MyBatis phải void . Các tham số kết quả tôi đã tìm kiếm là trong ResultMap rằng chức năng/thủ tục trả về.

Trân trọng.

1

Tại sao bạn chưa xác định cả hai parameterType và resultType như thế này:

parameterType="int" resultType="int" 

Di sản lượng cụ thể và cố gắng làm cho nó như thế này:

<select id="add" parameterType="int" resultType="int" statementType="CALLABLE"> 
    { CALL ADD_TEN(#{input, mode=IN, jdbcType=INTEGER})} 
</select> 
Các vấn đề liên quan