org.apache.ibatis.binding.BindingException: Parameter ‘xxx‘ not found 总结

本文记录了一次在任务提测后遇到的MyBatis XML映射文件中因参数匹配错误导致的问题。错误源于在接口方法中`modifyDt`字段缺少@Param注解,修正后程序恢复正常。提醒开发者在编码时注意参数与XML配置的一致性。
摘要由CSDN通过智能技术生成

阴沟翻船,任务提测之后出现低级错误
在这里插入图片描述
错误信息很明确,字段在mybatis解析的时候找不到。

xml如下(已简化):

   select t.*
        from xxxx t
        <where>
            1=1
            <if test="onlyCreate != null and onlyCreate != ''">
                and t.create_by = #{onlyCreate}
            </if>
            <if test="limitStatus != null and limitStatus.size() > 0">
                and t.task_status in
                <foreach collection="limitStatus" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="request.modifyDt != null ">
                and trunc(t.modify_dt) = trunc(#{modifyDt})
            </if>
        </where>
        order by t.create_dt desc

接口如下:

   List<xxxDto> pageInfo(@Param("request") xxx request, PageRequest pageInfo,
                                           @Param("tenantCode") String tenantCode, @Param("onlyCreate") String onlyCreate,
                                           @Param("limitStatus") List<String> limitStatus);

接口入参如下:

public class xxx implements Serializable {

    @ApiModelProperty(value = "页数")
    private int page = 1;

    @ApiModelProperty(value = "页码")
    private int rows = 10;

    @ApiModelProperty(value = "编码")
    private String id;

    @ApiModelProperty(value = "开始时间")
    private Date startDate;

    @ApiModelProperty(value = "截止时间")
    private Date endDate;

    @ApiModelProperty(value = "tab页面", notes = "1 全部 2 待处理 3 已结束;默认是1")
    private String tab = "1";

    @ApiModelProperty(value = "结束时间")
    private Date modifyDt;
}

解决办法:
1.检查mapper接口,入参有没有对应的字段,或者有没有加对应的注解 @Param


在这里插入图片描述
明显有
2.检查参数对应关系。modifyDt是在实体中的,但是写逻辑的时候,没有加@Param对应的前缀,导致无法yings


把这个改完之后,程序正常。

粗心大意翻大船!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值