mybatis: nested exception is org.apache.ibatis.binding.BindingException:

免責聲明:轉載僅僅因爲解決了我的問題,如果對你無效,麻煩出門右拐別瞎在評論裏怨天尤人。

 

異常
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'seckillId' not found. Available parameters are [1, 0, param1, param2]
1
分析
異常的大概意思就是,mapper方法的參數綁定異常,然後看看我的mapper.xml和mapper.java文件:

SuccessKilled queryByIdWithSeckill(long seckillId, long userPhone);
1
 <insert id="insertSuccessKilled">
        INSERT ignore INTO success_killed(seckill_id,user_phone,state)
        VALUES (#{seckillId},#{userPhone},0)
    </insert>

這個異常的產生原因是因爲,當mapper接口方法有多個參數時,java不會保存行參的記錄,java在運行的時候會把方法中的參數(long seckillId, long userPhone)變成這樣:(int arg0,int arg1),這樣我們就沒有辦法去傳遞多個參數(注意,在多個參數時纔會發生)

解決
需要在mapper接口中指定參數名稱:

SuccessKilled queryByIdWithSeckill(@Param("seckillId")long seckillId, @Param("userPhone") long userPhone);

這樣才能使我們的MyBatis識別offset和limit兩個參數,將Dao層方法中的這兩個參數與xml映射文件中sql語句的傳入參數完成映射

點贊 5
————————————————
版權聲明:本文爲CSDN博主「JeffCoding」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jeffleo/article/details/55803548

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章