文章目录
- 前言
- 一、传入Integer值参数
- 二、传入String值参数
前言
目的:在前端传入一个参数对所选的结果进行分页过滤,这应该是非常常见的一个需求吧,但是如何传Integer值使用mybatis-plus却无法被解析,认为参数为空,以下是一个用例说明。
下面案例可供参考
一、传入Integer值参数
1、请求传参
{
"keyword": "",
"metricName": "",
"pageNo": 1,
"pageSize": 10,
"processTag": 0
}
mybatis-plus后端SQL解析:
JsqlParserCountOptimize sql=SELECT
...
FROM t_alarm_history
WHERE 1
order by create_time desc
==> Preparing: SELECT COUNT(1) FROM t_alarm_history WHERE 1
==> Parameters:
<== Columns: COUNT(1)
<== Row: 170
我的mapper解析if判断如下:
<select id="queryPage" resultType="com.x.AlarmHistoryDTO"
parameterType="com.x.AlarmHistoryQueryDTO">
SELECT
*
FROM t_alarm_history
WHERE 1
<if test="queryDTO.metricName != null and queryDTO.metricName !='' ">
AND metric_name =
</if>
<if test="queryDTO.processTag != null and queryDTO.processTag !='' ">
AND process_tag =
</if>
<if test="queryDTO.keyword != null and queryDTO.keyword.trim() != '' ">
AND ( date_time LIKE
</if>
order by create_time desc
</select>
看起来mapper没有什么问题,但是在传入processTag=0的情况下无法被解析到,遂尝试使用String类型。
二、传入String值参数
- 请求参数
{
"keyword": "",
"metricName": "",
"pageNo": 0,
"pageSize": 0,
"processTag": "0"
}
- 解析后的SQL如下:
JsqlParserCountOptimize sql=SELECT
。。。
FROM t_alarm_history
WHERE 1
AND process_tag = ?
order by create_time desc
==> Preparing: SELECT COUNT(1) FROM t_alarm_history WHERE 1 AND process_tag = ?
==> Parameters: 0(String)
<== Columns: COUNT(1)
<== Row: 1
可以看到此时SQL的入参被正确解析,而我无非是更改了对应的传参类型,既
private Integer processTag; =》 private String processTag;
如果你知道什么原因,欢迎留言,Thanks♪(・ω・)ノ
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)