मुझे फ़ूज़ के साथ एक MySQL तालिका मिली है। प्रत्येक फू में एक संख्यात्मक गैर-अद्वितीय कोड और एक नाम होता है। अब मुझे यह पता लगाने की ज़रूरत है कि किसी निश्चित कोड में से किसी एक के साथ कोई फू नाम होता है जो किसी दिए गए स्ट्रिंग से शुरू होता है। सामान्य एसक्यूएल में यह छोटा होगा:जावा स्प्रिंग फ्रेमवर्क के साथ स्ट्रिंग LIKE 'कुछ%' की खोज कैसे करें?
select * from FOO where CODE in (2,3,5) and NAME like 'bar%';
लेकिन अब मैं वसंत में यह कैसे ठीक से करूं? 'पसंद' ऑपरेटर की आवश्यकता के बिना मैं इसे इस तरह करना चाहते हैं:
public List<Foo> getByName(List<Integer> codes, String namePart) {
String sql = "select * from FOO where CODE in (:codes) and NAME=:name"
Map<String,Object> params = new HashMap<String,Object>();
params.put("codes", codes);
params.put("name", namePart);
return getSimpleJdbcTemplate().query(sql, new FooRowMapper(), params);
}
हालांकि, के साथ कुछ भी नहीं काम करने के लिए लगता है 'पसंद': NAME like :name%
, NAME like ':name%'
, या NAME like ?%
जब बजाय प्लेसहोल्डर नाम वाले पैरामीटर का उपयोग कर।
मैं क्रूर हो सकता है और के रूप में
String sql = "select * from FOO where CODE in (:codes) and NAME like '"+namePart+"%'";`
डालें लेकिन स्पष्ट रूप से यह अच्छा की तुलना में अधिक हो सकता है अगर स्प्रिंग इनपुट पैरामीटर ठीक से आदि स्वच्छ होगा, तुम्हें पता है ...
आप लगता है कि वसंत इस तरह का समर्थन करेगा लेकिन मैं इसे समझ नहीं सकता।
यह मेरे लिए काम करता है, तो मैं का उपयोग करें: FOO से "का चयन करें * जहां कोड में (: कोड) और NAME जैसे "+ namePart +" '%' "; – navy