java - Mybatis 參數(shù)類型問題,應(yīng)該是Map,結(jié)果報(bào)錯(cuò).
問題描述
我寫了個(gè)查詢接口,傳入的參數(shù)是個(gè)Map,寫SQL的時(shí)候,我在parameterType填寫java.util.Map,調(diào)用居然報(bào)錯(cuò),類型轉(zhuǎn)換錯(cuò)誤,String轉(zhuǎn)map失敗.我把parameterType改為String就沒報(bào)錯(cuò),結(jié)果出來了,但是我傳入的是2個(gè)值啊!!!!!真崩潰~!代碼如下:接口:
報(bào)錯(cuò)的XML:
修改為這樣就正常了:
但是我SQL里是多個(gè)參數(shù)啊,不應(yīng)該用Map么???求大神解答疑惑
問題解答
回答1:你的map 是null 你可以把錯(cuò)誤貼出來
回答2:因?yàn)槟銢]在 mapper interface 的 method 里指定 @Param 注解,當(dāng)此時(shí)只有一個(gè)參數(shù)的時(shí)候,會(huì)自動(dòng)拆開。Map 類型會(huì)按 <String, Object> 拆開。復(fù)雜數(shù)據(jù)類型會(huì)根據(jù) getter 拆開。
你可以參考一下這個(gè):https://my.oschina.net/triday... 。
回答3:你在接口里面指定一下Map的key value
回答4:可能是接口的Map沒有指定類型的問題,建議做一下修改:
public Module selectByMap(Map<String, Object> map)回答5:
樓主,我現(xiàn)在遇到跟你一樣的問題,按照你的評(píng)論回復(fù)中的說法,mapper文件里面參數(shù)類型改為hashMap,DAO層不用任何注解,sql語句中取值語法跟你一樣,但是仍未取到值,求解
