mybatis动态SQL中不拼装参数问题

前台页面中,查询条件选择不一致或者一致时,分别传0和1,但是后台的SQL中却没有将是否一致的值拼到SQL中。
mybatis动态SQL中不拼装参数问题
SQL打印情况:
mybatis动态SQL中不拼装参数问题
mapper文件:
mybatis动态SQL中不拼装参数问题

经排查发现,查询请求使用的是POST请求,在将值传到后台时,会自动根据类型,将0和1封装为了Integer类型,所以在 mapper的test中 !=’'的判断中,断定为false,故没有将isSame的0和1拼到SQL中去。
前台的value,使用的是数值的0和1:

mybatis动态SQL中不拼装参数问题
后台断点调试中,发现接收时,自动封装为了Integer:
mybatis动态SQL中不拼装参数问题

原因是由于在前台使用了post请求,在后台的@RequestBody注解中封装参数时会分类型封装,如果使用get请求则不会有此种问题,因为get请求会将所有的参数转换为String类型。
get请求会使用HttpServletRequest.getParameterMap()的方式,将取到的map类型转换为map<String,String>,所以在后续的mapper的test判断中就不会出现问题。
mybatis动态SQL中不拼装参数问题

解决方案:
1,将前台的数值类型的0和1改为字符串型:
mybatis动态SQL中不拼装参数问题

2,将post请求,改为get请求。

3,将mapper文件中的test标签的 !=’’ 判断去掉。
mybatis动态SQL中不拼装参数问题