सबसे पहले समस्या: मैं XML- परिभाषित क्वेरी का उपयोग कर रहा हूं और SQL में तालिका नाम के हिस्से के रूप में डेटाबेस नाम शामिल है। उदाहरण के लिए: SELECT * from mydb.bar
। दुर्भाग्य से, डेटाबेस सभी जगहों पर बनाए/नामित होते हैं और mudb
भाग वास्तव में गतिशील है और किसी भी समय बदल सकता है। तो मैं एक संपत्ति से बदलने के लिए तो यह SELECT * FROM ${dbname}.bar
कैसा दिखेगा चाहता था और फिर मैं mybatis-config.xml में निम्न अनुभाग में परिभाषित किया गया:MyBatis - वैश्विक पैरामीटर को परिभाषित करना
<properties>
<property name="dbname" value="mydb"/>
</properties>
लेकिन जब मैं क्वेरी चलाने ${dbname}
शून्य पर मूल्यांकन करता है। वही होता है यदि मैं गुण फ़ाइल में इस संपत्ति को परिभाषित करता हूं। मैं इसे प्रत्येक कॉल पैरामीटर के हिस्से के रूप में पास करने से नफरत करता हूं क्योंकि यह वास्तव में एक वैश्विक संपत्ति है। क्या यह किया जा सकता है? और यदि हां - कैसे?
धन्यवाद! दुर्भाग्य से मैं वसंत से अमूर्त MyBatis का उपयोग कर रहा हूं और मेरी सभी कॉन्फ़िगरेशन applicationContext.xml में परिभाषित हैं। मुझे आश्चर्य है कि अगर इन चरों का खुलासा किया गया है और इसे एप्लीकेशन कॉन्टेक्स्ट.एक्सएमएल में एक्सएमएल कॉन्फ़िगरेशन के माध्यम से सेट किया जा सकता है, तो यह – Bostone
में देखने जा रहा है ऐसा लगता है कि इसे काम करना चाहिए। मैंने SqlSessionFactoryBean के लिए स्रोत कोड देखा, ऐसा प्रतीत होता है कि वे गुणों को चर सेट करते हैं। मैंने वसंत एकीकरण के साथ काम नहीं किया है, लेकिन मैं यह देखने के लिए कि यह गुण कहां लोड कर रहा है, एसक्लूसशन फैक्ट्रीबीन में buildSqlSessionFactory विधि को डीबग करने का प्रयास करूंगा। – Andy
गुणों को 'SqlSessionFactoryBean.setConfigurationProperties()' को पास किया गया है MyBatis कॉन्फ़िगरेशन में चर के रूप में सेट करें। आप स्प्रिंग एक्सएमएल में एक प्रॉपर्टी बनाने में सक्षम होना चाहिए और फैक्ट्री बीन को कॉन्फ़िगर करते समय इसका इस्तेमाल करना चाहिए। – AngerClown