mybatis传入两个String的参数的时候

本文详细解析了MyBatis框架中参数传递的问题及解决方案,包括如何正确使用@Param注解避免BindingException错误,以及在数据库操作中遇到的SQLException异常处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到了一个传参问题,报错信息是类似于下面那样:

org.apache.ibatis.binding.BindingException: Parameter 'code' not found. Available parameters are [FVALUE, FCODE, param1, param2]

问题1:

因为在dao层没有在参数上加上@Param注解,然后导致mybatis找不到参数报错

修改之前

public OpsOrderReturnItem queryReturnItemByOrderItemIdAndCode(String orderItemId,String materialCode);

xml:

    <select id="queryReturnItemByOrderItemIdAndCode"  resultType="OpsOrderReturnItem">
        SELECT  
            <include refid="opsOrderReturnItemColumns"/> 
        FROM ops_order_return_item a 
        WHERE 
            a.del_flag = 0 
        and
            order_item_id=#{orderItemId} 
        and 
            commodity_code=#{materialCode}
    </select>

 

修改之后

public OpsOrderReturnItem queryReturnItemByOrderItemIdAndCode(@Param("orderItemId")String orderItemId,@Param("materialCode")String materialCode);

xml:

    <select id="queryReturnItemByOrderItemIdAndCode" parameterType="java.lang.String" resultType="OpsOrderReturnItem">
        SELECT  
            <include refid="opsOrderReturnItemColumns"/> 
        FROM ops_order_return_item a 
        WHERE 
            a.del_flag = 0 
        and
            order_item_id=#{orderItemId} 
        and 
            commodity_code=#{materialCode}
    </select>

总结一下:一个参数可以不用@Param

但是多个参数必须使用,切记!!!

另外,多个参数推荐用map传值

问题2:

异常:### Cause: java.sql.SQLException: Field 'id' doesn't have a default value

错误原因

 

原因: 由于id在数据库表中是作为主键,但是在插入的过程中,没有给予数值,并且没有让其自增

 

解决办法  :修改数据库表中的id,让其自增(在插入的过程中,不插入id数据时)

以后注意

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值