2010-05-26 8 views
6

मान लें कि मेरे पास दो पैरामीटर - उपयोगकर्ता नाम और पासवर्ड के साथ एक प्रश्न getUser है। मैं इस तरह दिखने वाला मैपर विधि रखना चाहता हूं:iBatis एकाधिक पैरामीटर मैपर विधि

public UserBean getUser(String userName, String password); 

क्या ऐसा कोई तरीका है जिससे मैं कुछ हासिल कर सकता हूं? या शायद मुझे पैरामीटर के मैपर विधि मानचित्र में पास करना चाहिए (और मेरे xml मैपर में कुछ पैरामीटर मैप)?

public UserBean getUser(Map<String, Object> paramMap); 

मैं कुछ संकेतों और स्पष्टीकरणों की प्रतीक्षा कर रहा हूं।

उत्तर

9

किसी विशेष कॉन्फ़िगरेशन के बिना, आप पहले और दूसरे पैरामीटर को क्रमशः # {1} और # {2} के रूप में संदर्भित कर सकते हैं।

यदि आप संख्यात्मक रूप से संदर्भित करने के बजाय पैरामीटर का नाम देना चाहते हैं, तो निम्न कार्य करें: अपने SELECT कथन के लिए XML मैपिंग में, पैरामीटर टाइप करें = "मानचित्र" सेट करें, और इंटरफ़ेस फ़ाइल में, पैरामीटर को एनोटेट करें @param। उदाहरण के लिए, सार्वजनिक UserBean getUser (@Param ("user_name" स्ट्रिंग उपयोगकर्ता नाम, @ पैरा ("पासवर्ड") स्ट्रिंग पासवर्ड); आपको XML मैपिंग में उपयोगकर्ता नाम और पासवर्ड का संदर्भ देने के लिए # {user_name #} और संदर्भित करने की अनुमति होगी। # {पासवर्ड}, क्रमशः

+0

बिंगो! यही वह है जिसे मैं ढूंढ रहा हूं :) बहुत बहुत धन्यवाद :) पूरी तरह से काम करता है :) – jjczopek

1

आपको अपनी डीएओ विधि के हस्ताक्षर को नहीं बदलना चाहिए, इस बात पर विचार करने का एकमात्र मुद्दा यह है कि आप अपना मैपिंग कैसे बनाते हैं। iBatis केवल एक इनपुट पैरामीटर का समर्थन करता है, और आपको अपने दो मूल पैरामीटर को पैक करने के लिए अपनी कक्षा (विशेषता parameterType) तय करनी होगी।

इस परिदृश्य में आप हो सकता है (अन्य विकल्पों के बीच) एक Map में दो पैरामीटर जगह (HashMap, आम तौर पर), या (अगर मापदंडों UserBean वर्ग के गुणों के अनुरूप) एक डमी UserBean सेट उन दो गुणों के साथ गुजरती हैं।

दोनों मामलों में पैकिंग (हैश मैप या डमी यूजरबीन का निर्माण जो दो पैरामीटर रखती है) आपके public UserBean getUser(String userName, String password) विधि के अंदर किया जाएगा।

+0

आपके उत्तर के लिए धन्यवाद। मुझे अपने डीएओ विधियों को बदलने की ज़रूरत नहीं है - जो मैं जानना चाहता था (सामान्य रूप से) iBatis मैपर इंटरफ़ेस विधियों में एकाधिक पैरामीटर का समर्थन करता है :) – jjczopek