如上图,若依发送请求时带有了params参数,后端controller用TruePredict实体类来接收参数。
@PreAuthorize("@ss.hasPermi('testmodule:truepredict:list')")
@GetMapping("/list")
public TableDataInfo list(TruePredict truePredict)
{
System.out.println(truePredict);
startPage();
List<TruePredict> list = truePredictService.selectTruePredictList(truePredict);
return getDataTable(list);
}
但是对应的实体类仅有dataId,trueData,predictData。
public class TruePredict extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 数据id */
private Long dataId;
/** 真实值 */
@Excel(name = "真实值")
private String trueData;
/** 预测值 */
@Excel(name = "预测值")
private String predictData;
}
那么params去哪了呢?mapper层查询的时候势必要用到params参数,如下,可以看到用了params参数。
<select id="selectTruePredictList" parameterType="TruePredict" resultMap="TruePredictResult">
<include refid="selectTruePredictVo"/>
<where>
<if test="trueData != null and trueData != ''"> and true_data = #{trueData}</if>
<if test="predictData != null and predictData != ''"> and predict_data = #{predictData}</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where>
</select>
在controller层System.out.println(truePredict);得到如下结果,可见无params参数。
com.ddd.truepredict.domain.TruePredict@590ca3f3[
dataId=<null>
trueData=23
predictData=28
createTime=<null>
updateTime=<null>
createBy=<null>
updateBy=<null>
]
这是由于,TruePredict继承自BaseEntity
public class TruePredict extends BaseEntity
而BaseEntity中有params参数:
public class BaseEntity implements Serializable
{
private static final long serialVersionUID = 1L;
...省略多个属性
/** 请求参数 */
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private Map<String, Object> params;
}
因此TruePredict实际上是能接受到params参数的,自然能在mapper层使用params参数。
但是为什么System.out.println(truePredict);无法得到params的输出呢?
这是因为System.out.println实际上调用的是toString方法,而TruePredict中的toString方法没有写params参数,自然打印不出来。
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("dataId", getDataId())
.append("trueData", getTrueData())
.append("predictData", getPredictData())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("createBy", getCreateBy())
.append("updateBy", getUpdateBy())
.toString();
}
在后面加上
.append("params", getParams())
再打印,就能看到params参数了。
注:gerParams方法是在BaseEntity中定义的