多条件查询时只能第一个条件可以为空,其他不能为空?

问题遇到的现象和发生背景

环境:IDEA,mysql,springboot,layui
问题:多条件查询有两个条件,要求可以不输入,但运行时第一个可以留空,但第二个不能为空。查询模块是一个项目里别的模块复制过来再改的,有关的部分都已复制已改过,但结果就不一样。原模块可以实现各查询条件为空,但复制过来的不能实现。如下:

问题相关代码,请勿粘贴截图
fieldset>

<blockquote class="layui-elem-quote">
    <form class="layui-form" method="post" id="searchFrm">
        <div class="layui-form-item">
            <div class="layui-inline">
                <label class="layui-form-label">患者姓名:label>
                <div class="layui-input-inline">
                    <input type="text" name="reportName" autocomplete="off" class="layui-input">
                div>
            div>
            <div class="layui-inline">
                <label class="layui-form-label">患者ID:label>
                <div class="layui-input-inline">
                    <input type="text" name="reportId" autocomplete="off" class="layui-input">
                div>
            div>
            
            <div class="layui-inline">
                <button type="button" class="layui-btn layui-btn-normal  layui-icon layui-icon-search" id="doSearch">查询button>
                <button type="reset" class="layui-btn layui-btn-warm  layui-icon layui-icon-refresh">重置button>
            div>
        div>
    form>
blockquote>



运行结果及报错内容

img

img

img

img

我想要达到的结果

需要实现多条件查询,各条件都可以为空,全空查询所有数据,谢谢!

不改数据类型的话,前端就加个判断,这个值为空的时候,不传到后台就行,但是后台的int类型还是会默认为0,所以改类型是最好的解决办法

这玩意儿贴前端代码没有任何意义,空不空是后端的事;
用int肯定是不行的,要支持可以为空可以换成Integer

原因已找到,因为我第二个条件是int格式。
求解决方法?

Field error in object 'reportVo' on field 'reportId': rejected value []; codes [typeMismatch.reportVo.reportId,typeMismatch.reportId,typeMismatch.int,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [reportVo.reportId,reportId]; arguments []; default message [reportId]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'reportId'; nested exception is java.lang.NumberFormatException: For input string: ""]]

"参数定义时,定义数值,应使用Integer,如果用int定义,当入参为NULL时,程序会报空指针错误。原因是JAVA 中 int 是值类型,非对象,不可以设置为 NULL,integer 是对象类型,可以设置为NULL"

改成integer已解决,谢谢各位!

提供下后台代码
后台查询时应该判断不为null时过滤,为null时则不过滤

[Failed to convert property value of type 'java.lang.String' to required type 'int' for property 'reportId'; nested exception is java.lang.NumberFormatException: For input string:]这个错误意思是前端传递的时候reportId是string,但是后端设置的类型是int.string和int类型转换失败。可以用这个在调用mapper之前转换一下

img