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