तो मुझे पता चला कि यह कैसे करना है। बाकी डेटा प्रकारों के लिए बीनप्रॉपर्टीरोमैपर को नियंत्रण सौंपने से पहले मैंने कुछ कस्टम कोड के माध्यम से BeanPropertyRowMapper और हैंडलर बूलियन प्रकारों का विस्तार किया।
नोट:यह मेरे लिए काम करता है क्योंकि मैं ऑरैकल का उपयोग करता हूं और सभी 'बूलियन' प्रकार के कॉलम 'y', 'yes', 'n' और 'no' टाइप वैल्यू वाले स्ट्रिंग हैं।
जो लोग संख्यात्मक 1,0 या अन्य प्रारूपों का उपयोग करते हैं, वे संभावित रूप से इसे एक वस्तु हाँ मानचित्र के माध्यम से सामान्य बनाकर और परिणाम से वस्तुओं को प्राप्त करके और उन्हें इस मानचित्र में देखकर इसे और बेहतर बना सकते हैं। आशा है कि यह मेरी जैसी स्थिति में किसी और की मदद करेगा।
आयात करें .apache.commons.lang3.StringUtils;import org.springframework.jdbc.core.BeanPropertyRowMapper;/** * बूलियन फ़ील्ड के लिए अनुमति देने के लिए BeanPropertyRowMapper का विस्तार करता है * सही ढंग से सेट होने के लिए 'Y,'N' टाइप कॉलम में मैप किया जाता है। स्टॉक का उपयोग करना BeanPropertyRowMapper * एक SQLException फेंक देगा। * */सार्वजनिक वर्ग ExtendedBeanPropertyRowMappergetColumnValue
को ओवरराइड करें। * * @param rs डेटा धारण करने वाला परिणामसेट है * @param अनुक्रमणिका स्तंभ अनुक्रमणिका है * @param pd बीन गुण है कि प्रत्येक परिणाम वस्तु से मेल खाने की उम्मीद है * (या null
यदि कोई निर्दिष्ट नहीं है) * @ऑब्जेक्ट मान लौटाएं * @ निष्कर्षण विफलता के मामले में SQLException फेंकता है * @ देखें org.springframework.jdbc.core.BeanPropertyRowMapper#getColumnValue(java.sql.ResultSet, int, PropertyDescriptor) */ संरक्षित ऑब्जेक्ट getColumnValue(ResultSet rs, int index , प्रॉपर्टी डिस्क्रिप्टर पीडी) SQLException फेंकता है {कक्षा> आवश्यक टाइप =pd.getPropertyType (); if (boolean.class.equals(requiredType) || Boolean.class.equals(requiredType)) {स्ट्रिंग stringValue =rs.getString(index); if(!StringUtils.isEmpty(stringValue) &&TRUE_SET.contains(stringValue.toLowerCase ())){ रिटर्न ट्रू; } और झूठी वापसी; } रिटर्न super.getColumnValue(rs, index, pd); }}