解决springboot中Map集合key中不能使用英文小数点问题
在插入数据的时候,如果map key中包含.
,会导致mongodb发生错误。因此需要替换key中的.
。会导致错误的数据如:
{"A.b": "dfsf"
}
解决方法:添加配置类
/*** @auther kelly* @since 2021/5/18* key中如果有英文小数点使用时会替换成正则表达式;*/
@Configuration
public class MongoConfig {@Autowiredprivate MappingMongoConverter converter;@PostConstructpublic void setUpMapKeyDotReplacement(){converter.setMapKeyDotReplacement("-\\*dot\\*-");}
}
需要注意的地方
mapKeyDotReplacement会在发生convert的两个地方用到。写入和读取。写入时,利用string的replaceAll通过正则表达式替换掉key中的所有的.
。读取时,也是利用正则表达式,将mapKeyDotReplacement替换成.
。因此需要注意的是mapKeyDotReplacement中如果有正则表达特殊字符需要转义(如解法方法中的\\*
)。
按照解决方法所给的-\\*dot\\*-
的字符串替换,预计mongoDB里边存储的key应是-\*dot\*-
。但实际却是-*dot*-
。这与mongo对转义字符的处理有关。
如果是非法的转义字符,如\*
,\m
等,会直接删除忽略掉\
。
解决springboot中Map集合key中不能使用英文小数点问题相关推荐
- 在java商城开发中map集合的应用
在java商城开发中map集合的put方法(Object key, Object value)添加一个"值"(想要得东西)和与"值"相关联的"键&qu ...
- java 中map_Java中Map集合
1. Java中Map集合 1. Map中value可以重复,key不能重复.对于重复的key值来说,后放置的值对覆盖前放置的值. import java.util.HashMap; public c ...
- java map遍历_Java中Map集合的两种遍历方式
Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...
- java中两种遍历集合的方式_Java中Map集合的两种遍历方式
Java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下Java中Map集合的两种遍历方式! 关于遍历Map集合的几 ...
- containskey java_Java Map.containsKey()方法:判断Map集合对象中是否包含指定的键名
搜索热词 Java 集合类中的 Map.containsKey() 方法判断 Map 集合对象中是否包含指定的键名.如果 Map 集合中包含指定的键名,则返回 true,否则返回 false. 语法: ...
- java对list中map集合中某个字段排序
java对list中map集合中某个字段排序 适用于字符串排序,数字对比不可用,以下示例,当把sort的值改为74,66,142时排序不对看示例2 示例1 List<Map<String, ...
- Java中Map集合如何理解(四)——精简
目录 引言 概念 Map集合实现类 HashMap LinkedHashMap TreeMap 默认排序 自定义排序方式 常用API 遍历Map集合 键找值 键值对 Lambda表达式 结束语 引言 ...
- JAVA中Map集合的使用举例
首先创建一个Emp类,再将几个Emp对象添加到Map集合中. Emp的id作为Map的键,并将id为"005"的对象从集合中删除. package com.han;import j ...
- java中map集合的修改_map集合修改其中元素(示例代码)
packagecom.swift.lianxi;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importj ...
最新文章
- 一文完全理解定时器实现技术
- Sql查询一个列对应多个列
- android retrofit入门,Android开发 retrofit入门讲解
- yii2 basic版 MVC 部分
- 图像颜色迁移《color transfer between images》
- 仿花生小说蓝色小说网站导航网站源码
- 《Android开发从零开始》——26.数据存储(5)
- 如何使用Windows OVERLAPPED优化你的应用
- error LNK2005: void * __cdecl operator new(unsigned int) (??2@YAPAXI@Z) already defined in LIBCMT.
- 如何在windows server 2008上配置NLB群集
- 软件架构发展的几个阶段
- RAID (HP)双循环
- Java精品源码第83期在线旅游网站系统(推荐)
- 蓝桥杯,基础练习 Fibonacci数列(斐波那契数列) C++
- 电影《五十度灰》主题曲《Love me like you do》——尽你所能爱我Ellie Goulding(埃利·高登)——【英文小清新歌曲推荐】
- 大学物理实验空气比热容比的计算
- dfuse for EOSIO 架构剖析:架构总览
- 路由在电话网和计算机网中的区别,光猫能替代路由器吗 光猫和路由器有什么区别【详解】...
- 剪不断理还乱的前端和交互
- 第十五天 11-常见的网络相关命令