当前位置: 首页 > news >正文

【MyBatis】MyBatis把空字符串转换成0的问题处理方案(96)

先看问题:
Postman入参:
在这里插入图片描述
MyBatis采用map循环插入:

	// Mapper接口层void addPar(@Param(value = "question") Map<String, Object> paramMap);<!-- 新增:参数 --><insert id="addPar" parameterType="map">INSERT IGNORE INTO xxx_list_dic<if test = "null != question and question.size > 0"><foreach collection="question.entrySet()" index="key" separator="," open="(" close=")">${key}</foreach>VALUES<foreach collection="question.entrySet()" item="value" separator="," open="(" close=")">#{value}</foreach></if></insert>

数据库数据:
在这里插入图片描述
问题: 前台传参dicValueSecond为空字符串,怎么数据库这个字段值变为0了;
原因: 数据库这个字段是int类型,MyBatis会把空字符串转为0 处理;
问题原因清楚了,怎么解决这种问题呢?
方式一: 前台传参处理: 判断如果为空字符串的时候传null;
方式二: 后端处理;
接口层处理:

@Overridepublic Result addOrModifyConfig(Map<String, Object> paramMap) {String addOrModify = String.valueOf(paramMap.get("addOrModify"));if(addOrModify.equals("add")){paramMap.remove("addOrModify");  // 数据库无该字段,MyBatis采用循环插入数据,需从入参删除数据库没有的字段// 解决MyBatis传值空字符传转为0的处理:Iterator<Map.Entry<String, Object>> it = paramMap.entrySet().iterator();while(it.hasNext()){Map.Entry<String, Object> entry = it.next();String key = entry.getKey();String value = String.valueOf(entry.getValue());if(value.equals("")){paramMap.put(key,null);}}xxxtMapper.addPar(paramMap);}else if(addOrModify.equals("modify")){xxxMapper.modifyPar(paramMap);}return Result.success().result(null);}

测试:
入参:
在这里插入图片描述
数据库:
在这里插入图片描述
OK , 问题解决 !
实际开发中,可将此方法抽取为公共函数,所有用到的地方可以统一处理 !

http://www.lryc.cn/news/108617.html

相关文章:

  • OpenLayers实战,OpenLayers获取移动端精确定位,OpenLayers适配App混合H5方式调用手机定位位置并定位到指定点
  • Go指针取址问题:循环后每次都拿到相同内容
  • 用Rust实现23种设计模式之简单工厂
  • SpringBoot + minio实现分片上传、秒传、续传
  • logback 里面设置 自动删除3天之前的日志
  • 对于数据库查询索引和查字典索引的理解
  • git删除已经提交的大文件
  • 【数据分析】pandas 一
  • 题解 | #G.Gcd# 2023牛客暑期多校6
  • 苍穹外卖day10——订单状态定时处理(Spring Task)、来单提醒和客户催单(WebSocket)
  • 【多线程初阶】多线程案例之单例模式
  • 跨境选品怎么选?建议独立站卖家收下这份利基产品查找攻略!
  • [C++项目] Boost文档 站内搜索引擎(1): 项目背景介绍、相关技术栈、相关概念介绍...
  • opencv-32 图像平滑处理-高斯滤波cv2.GaussianBlur()
  • Windows 环境Kubernetes安装
  • 自建类ChatGPT服务:本地化部署与远程访问教程
  • 常用SQL语句总结
  • arm交叉编译lmbench
  • ExtJs 7.7.0 下载方法与去除trial水印
  • Android11开发规划
  • 活动隔断在现在酒店运用的方式
  • Jenkins工具系列 —— 插件 钉钉发送消息
  • LeetCode 26 题:删除有序数组的重复项
  • 优雅地切换node版本(windows)
  • 反诈:吴明军、黄亮领导的WIN生活资金盘,大家警惕防范此类诈骗
  • shell、bash的关系及bash的特性(一)
  • 【问题随记】
  • Stable Diffusion AI绘画学习指南【常用模型,采样器介绍】
  • pycharm——漏斗图
  • RISC-V基础之浮点指令(包含实例)