oracle long转为string,实现全局拦截前端传入的Long类型id转String

1遇到的问题

在开发过程中存在这样一种问题,我们使用的id主键主要有long类型和varchar类型

当主键id为long类型并且长度超过16位,当返回给前端时,前端会出现js解析的参数如果是Long类型的并且长度过大就会出现精度丢失。这就会造成后台返回的值与前端拿到的不一致问题。

2解决思路

根据加固项目采用Spring+springMVC+mango的架构设计前后端参数传递都有统一出入口,

根据FastJsonHttpMessageConverter实现了HttpMessageConverter对于后台返回的Java对象解析为outStream后返回给前端,在配置中实现拦截。

在 SpringMVC进入readString方法前会根据@requestBody选择HttpMessageConverter,http请求是基于文 本的浏览器和服务器通过交换原始文件进行通信这就意味着需要将我们的Java对象序列化和反序列化,及将Java对象解析到String变量中,当执行 readString方法时绑定string参数输出响应报文。

(响应时)springmvc-----java对象------HttpMessageConverter----outStream----响应报文

3实例说明

加固项目applicationContext-http.xml部分配置

application/json;charset=UTF-8

text/plain;charset=UTF-8

在Java对象转为json对象时会被FastJsonHttpMessageConverter这个处理类拦截,拦截时会触发自己配置的toStringSerializer处理类,该类中可以自定义所需要处理返回给前端的数据。

public class ToStringSerializer implements ValueFilter {

@Override

public Object process(Object object, String name, Object value) {

if(value != null && value instanceof Long) {

if(((Long) value).longValue()>=10000000000000000L) {

value = value+"";

}

}

return value;

}

}

自定义类ToStringSerializer 实现了ValueFilter 继承了SerializeFilter接口重写了process方法

该方法有三个参数:json对象,对象key,对象value当key对应的值为long类型且长度超过十六位此时统一在处理类中将该值转为字符串类型然后返回给前端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340010.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot 多线程_redis官方推荐:SpringBoot用这个,一键多线程

Lettuce是一个可伸缩的线程安全的Redis客户端,提供了同步,异步和响应式使用方式。 如果多线程避免阻塞和事务操作(如BLPOP和MULTI / EXEC),则多个线程可共享一个连接。 Lettuce使用通信使用netty。 支持先进的Redis功能,如Sentine…

oracle查询最高一条记录,oracle 查询已有记录,上一条记录,下一条记录

oracle可以使用 lead、lag 函数来查询已有记录的下一条、上一条记录。表结构如下:如要查询Staffno是6-1102的前一条记录select * from staff where staff_no(select c.p from (select staff_no,lag(staff_no,1,0) over (order by staff_no) as p from staff) c wh…

使用Maven进行增量构建

这是2020年,如果您要启动任何新的基于Java的项目,则应优先选择gradle,但由于某些原因,如果您仍然对Maven感兴趣,那么您可能会发现这篇文章有用。 Maven Java / scala编译器插件对增量编译提供了不错的支持&#xff0c…

夏末浅笑_2014年夏末大Java新闻

夏末浅笑正如即将到来的JavaOne那样 ,最近在Java社区中已经有很多重大新闻。 这篇文章简要地引用了其中的三个项目(Java SE 8更新,Java SE 9和Java EE 8),并对我发现是我在类路径/类加载器问题上见过的更清晰的文章之一…

php删除菜单栏,如何删除WordPress站点健康状态面板和菜单项

下面由WordPress教程栏目给大家介绍删除WordPress站点健康状态面板和菜单项的方法,希望对需要的朋友有所帮助!删除 WordPress 站点健康状态面板和菜单项WordPress站点健康功能始于 5.2 版,如不想显示这玩意,可以使用本文的方法删除…

colspan会影响内部单元格宽度失效_电感失效分析

电感失效分析01电感的作用我们通常所说的电感指的是电感器件,它是用绝缘导线(例如漆包线,沙包线等)绕制而成的电磁感应元件。在电路中,当电流流过导体时,会产生电磁场,电磁场的大小除以电流的大小就是电感。电感是衡量线圈产生电磁…

linux清空redis命令,使用Linux管道批量删除Redis的key

------------------------------------------------------Redis并没有提供批量删除记录的方法,这有时候很不方便,特别是重新初始化数据的时候。一般有两种做法:如果业务场景明确,可以通过DBID进行区分,Redis默认的DBID…

ZeptoN正在将程序放入Java

1.简介 Java编程语言或“ Java”于1995年引入。然而,在近25年的时间里,它增加了最初不是核心语言所具有的功能。 此类功能包括枚举,泛型,对基本C样式功能开关语句的许多增强,断言等。 Java是一种编程语言,随…

深入理解python面向对象_转:Python3 面向对象,较为深入的两个理解

一,1. 类的声明和创建对于 Python 函数来说,声明与定义类没什么区别,因为他们是同时进行的,定义(类体)紧跟在声明(含 class 关键字的头行[header line])和可选(但总是推荐使用)的文档字符串后面。同时,所有的方法也必须…

linux循环脚本while循环,Shell脚本while、until循环语句简明教程

一、while循环while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:while 命令docommand1command2...commandNdone命令执行完毕,控制返回循环顶部,从头开始直至测试条件为假。以…

分披萨问题_比萨问题–建造者与装饰者

分披萨问题问题陈述 我们需要为一家披萨公司构建软件,该公司想要准备不同类型的披萨,例如鸡肉披萨,扁平面包,意大利辣香肠披萨和特制奶酪,并在上面放些配料。 让我们尝试看看哪种设计模式适合该问题说明以及在哪种情况…

用python随机生成5000个网址_使用Python脚本生成随机IP的简单方法

需求在某应用中,需要根据一定的规则生成随机的IP地址,规则类似于192.168.11.0/24这样的CIDR形式给出。实现经过艰苦卓绝的调试,下面的代码是可以用的:RANDOM_IP_POOL[192.168.10.222/0]def __get_random_ip():str_ip RANDOM_IP_P…

linux应用程序安装PPT免费序,linux下应用程序安装的总结

linux下应用程序安装的总结上一篇 / 下一篇 2009-04-20 14:45:37 / 个人分类:技术我解查看( 203 ) / 评论( 0 ) / 评分( 0 / 0 )一、常用的Linux应用软件的安装包有2种:1. tar包,如software-1.2.3-1.tar.gz。它是使用linux系统的打包工具tar打…

Quarkus入门

Quarkus – 一个为OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈,它是从最佳Java库和标准中精制而成的。 –是一个容器优先的框架,针对快速启动时间和低内存消耗进行了优化。 该框架基于许多流行的Java库构建,并且为构建标准RES…

vmware6.5.2序列号_教你如何查询苹果序列号,查询是否为官换机、激活时间等

如何查询你刚买的苹果设备是否为官换机?或想知道它的激活日期?保修时间?那么赶紧收藏本篇教程吧!众所周知,在苹果官网查询苹果设备,是查询不到具体的信息(比如激活日期、保修日期、是否为官换机…

linux 几个文件夹作用,linux下每一个文件夹的作用.docx

目录结构及主要内容“/"根冃录部分有以F子冃录:/usr 口录包含所有的命令、程序库、文档和英它文件。这些文件在正常操作中不会被改变的。这个目录也包含你的Linux 发行版本的主要的应用程序,辔如,Netscape0/var目录包含在1E常操作中被改…

参数化测试 junit_JUnit中的参数化测试运行器

参数化测试 junit我们都有书面的单元测试,其中在一个测试中针对不同的可能的输入输出组合进行测试。 让我们以一个简单的斐波那契数列示例为例,看看它是如何完成的。 以下代码针对提到的元素数量计算斐波那契数列: import java.math.BigInt…

python中dataframe合并列名日期到季度_python – 如何在特定日期范围内的pandas列DataFrame中对某些值求和...

我有一个大型的DataFrame,看起来像这样:df UPC Unit_Sales Price Price_Change Date0 22 15 1.99 NaN 2017-10-101 22 7 2.19 True 2017-10-122 22 6 2.19 NaN 2017-10-133 22 7 1.99 True 2017-10-164 22 4 1.99 NaN 2017-10-175 35 15 3.99 NaN 2017-10-096 35 17…

linux环境变量自动配置,Linux进入系统时自动配置 环境变量的要领

用Export命令能够配置环境变量,但是假如每回进入系统之后都要重新配置一遍环境变量就很烦人。Linux给大众提供了自动配置环境变量的要领,那就是修改.bashrc 文件。 通常说来,有两个文件能够提供这种“进入系统时自动配置”的功能,…

金融模型python_盘点金融领域里常用的深度学习模型

作者 | Sonam Srivastava ,译者 | sambodhi ,编辑 | Vincent ,AI前线出品| ID:ai-front在今天我们发布的这篇文章中,作者 Sonam Srivastava 介绍了金融中的三种深度学习用例及这些模型优劣的证据。我们跟随…