java.lang.String cannot be cast to java.lang.Integer

项目场景:

Controller层 使用Map<String, object> params 接参,使用swaager进行传参,参数类型String


问题描述:

结果报错在mybatisplus的条件构造器里,出现类型转换异常,java.lang.String cannot be cast to java.lang.Integer
private Wrapper<YhcsPayOrder> getEntityWrapper(Map<String, Object> params) {
        String orderNo = (String) params.get("orderNo");
        Integer orderType = (Integer) params.get("orderType");
        return new EntityWrapper<YhcsPayOrder>()
	        .like(StringUtils.isNotEmpty(orderNo), "order_no", orderNo)
	        .eq(orderType != null, "order_type", orderType)
	        ;
    }

}

原因分析:

类型转换问题

解决方案:

ps:尝试了百度,参考过热门文章的解决方案,没能解决问题,为了应急还写一个条件查询sql语句。
最后解决方法以及解决过程:

private Wrapper<YhcsPayOrder> getEntityWrapper(Map<String, Object> params) {
        String orderNo = (String) params.get("orderNo");
//        Integer orderType = (Integer) params.get("orderType");
//        Integer orderType =  Integer.parseInt(params.get("orderType").toString()); //  String -> Integer 有值,错误为java.lang.String cannot be cast to java.lang.Integer 无值,空指针异常 java.lang.NullPointerException
//        Integer orderType = Integer.valueOf(String.valueOf(params.get("orderType"))); // 报错 空指针移除.  直接搜索Integer转换为String, 将参数转为String,再转为Integer.
        // 无值报错:java.lang.NumberFormatException: For input string: "null"   有值,不会报错. 不符合需求.
       String orderType = (String)(params.get("orderType");
        return new EntityWrapper<YhcsPayOrder>()
                .like(StringUtils.isNotEmpty(orderNo), "order_no", orderNo)
                .eq(orderType != null, "order_type", orderType)
                ;
    }

}
备用方法:使用mybatis方式写一个条件查询语句也行。

总结

提示:这里对文章进行总结:
1,String类型的传值作为查询条件不影响Integer类型属性(int类型字段);

思考

1,尝试过多种类型转换方式都没有成功?
2,使用mybaits书写的时候,是否可以考虑一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值