2010-03-18 18 views
20

द्वारा POJO वापस करने के लिए सेट मैं iBATIS उपयोग कर रहा हूँ MSSQL सर्वर पर एक संग्रहीत प्रक्रिया कॉल करने के लिए, इनपुट पैरामीटर एक POJO कि नक्शा करने के लिए रखा जाता है पर गुण हैं पैरामीटर को प्रक्रिया में इनपुट के रूप में सही ढंग से सेट किया गया है, इसलिए वहां कुछ भी गलत नहीं है। लेकिन पैरामीटर में से एक आउटपुट-पैरामीटर है और मैं उम्मीद कर रहा था कि इसे पीओजेओ पर वापस सेट किया जाए, लेकिन इसके बजाय एक अतिरिक्त मानचित्रण "obj.new"=false को आईबीएटीआईएस द्वारा मानचित्र रखा गया है।संग्रहित प्रक्रिया उत्पादन पैरामीटर iBATIS

<procedure id="save"> 
    {<include refid="Core.returned_value" /> 
    CALL SPRC_ARTICLE_NAME_SAVE (
     <include refid = "Core.common_fields" /> 
     @pArticle_id = #obj.art_id# 
    , @pArtname = #obj.artname# 
    , @pNewArticleName_flg = #obj.new,mode=INOUT# 
    )} 
</procedure> 

प्रक्रिया मैं नक्शे में दो मैपिंग है कॉल करने के बाद iBATIS के लिए पारित:

  • "obj"=POJO
  • "obj.new"=False
यहाँ मूल विचार दिखा मानचित्रण का एक सरलीकृत संस्करण है

अब मुझे लगता है कि iBatis documentation ने कहा "संग्रहीत प्रक्रिया निष्पादित करते समय res - iBATIS OUTPUT पैरामीटर के लिए ऑब्जेक्ट्स बनाएगा " इसलिए यह समझ में आता है। लेकिन मेरा सवाल यह है कि अगर आईबीएटीआईएस को निर्देश देने का कोई तरीका प्रक्रिया के बाद पीओजेओ को बुलियन मूल्य वापस डाल देता है? मैं मानचित्र के मूल्य को प्राप्त करने के अतिरिक्त काम नहीं करता हूं और इसे अपने स्वयं के POJO पर सेट करता हूं।

// Uhlén

+0

मैं जब मैं एक ऐसी ही समस्या का सामना बहुत उपयोगी हो करने के लिए इस http://groups.google.com/group/mybatis-user/browse_thread/thread/14826bc31c9f143d पोस्ट करने के लिए इस जेफ बटलर का जवाब देने के लिए जेफ बटलर का जवाब मिल गया (हालांकि एक अद्यतन के बजाय एक चयन कथन के साथ) –

उत्तर

1

आप एक स्पष्ट पैरामीटर मानचित्र का उपयोग कर सकते हैं। Page 21 of the manual

इसकी बजाय वर्बोज़ लेकिन यह अतीत में मेरे लिए काम करता है।

<parameterMap id="swapParameters" class="map" > 
    <parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> 
    <parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/> 
</parameterMap> 

<procedure id="swapEmailAddresses" parameterMap="swapParameters" > 
    {call swap_email_address (?, ?)} 
</procedure> 
संबंधित मुद्दे