springmvc+mybatis序列化json数据出现双引号等问题解决

    我们系统架构采用springboot(springmvc)+mybatis,用mybatis查寻mysql数据后,直接放到List<Map>这样的结构中,这样做非常简单,无需定义实体类,通过springmvc的@ResponseBody注解可以直接将其序列化成json数据,然后返回给前段js来处理。但是,这里遇到了一些问题。

1、强制转换异常:

       如果用List<Map<String,String>>这种结构来接受的化,如果sql中带有运算,mybatis会自动按照运算后的结果(sql中没有运算,默认按照数据库类型)放到Map中。所以在service中从map中取数据进行处理时,有的时候会发生类型转换错误,例如:提示Double类型无法转成String...,

如果我们直接String str = map.get("avgNum");如果avgNum是一个mysql计算出的一个double类型数,那么就会报Double无法转成String。所以,我们通常会用String str = String.valueOf(map.get("avgNum"));这么再次强转,但还是会有风险:

for (Map<String,String> map:minuteChartDatas) {
			//1.legned
			String date = map.get("day");
			if (!legend.contains(date)) {
				legend.add(date);
			}
			//2.xAxis
			String hour = String.valueOf(map.get("hour"));
			String minute = String.valueOf(map.get("minute"));
			if (!axisDatas.contains(hour+":"+minute)) {
				axisDatas.add(hour+":"+minute);
			}
		}

解决方法:定义一个实体类,mybatis会自动将运算或者默认数据库类型适配成实体对应属性的类型。

2、返回给前段json,数组带有双引号:

如果List<Map>这种结构中,map又嵌有数组,那么在进行@ResponseBody注解序列化时,会按照字符串处理,将数组加上双引号。这样前段js就无法识别。例如:

{"name":"a","data":"[1,2,3]"}

解决方法:将map换成实体,这样使用@ResponseBody注解序列化时,就不会出现上面的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,基于Spring+SpringMVC+Mybatis+Mybatis plus等开源框架技术,我可以开发一个基于WEB的物流管理系统。下面是系统的一些功能: 1. 货物管理:包括货物的添加、修改、删除、查询等操作,可以对货物进行分类管理,以便进行更加精细的管理和查询。 2. 订单管理:包括订单的添加、修改、删除、查询等操作,可以对订单进行状态管理,以便进行更加精细的订单管理和查询。 3. 配送管理:包括配送员的管理、配送路线的规划、配送状态的管理等操作,可以对配送过程进行实时监控和管理。 4. 仓库管理:包括仓库的添加、修改、删除、查询等操作,可以对仓库进行分类管理,以便更好地进行库存管理和调度。 5. 用户管理:包括用户的添加、修改、删除、查询等操作,可以对用户进行权限管理,以便分配不同的操作权限给不同的用户。 针对这些功能,我可以使用Spring框架来实现系统的IOC和AOP功能,使用SpringMVC框架来实现系统的MVC架构,使用Mybatis框架来实现系统的ORM功能,使用Mybatis plus框架来进一步简化数据操作。 同时,我还可以使用其他开源技术来实现一些特定的功能,例如使用Redis实现缓存,使用Kafka实现消息队列等等,以提高系统的性能和可扩展性。 最终,开发出的物流管理系统将具备高效、稳定、安全、易扩展等特点,能够帮助企业实现物流管理的自动化和信息化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值