数据从前端传到后端入库过程分析
概述
积累了一些项目经验,成长为一个老程序员了,自认为对各种业务和技术都能得心应手的应对了,殊不知很多时候我们借助了搜索引擎的能力,当然现在大家都是通过AI来武装自己。
今天要分析的话题是数据从前端传到后端再到插入数据库的数据类型转换过程。
有哪些数据类型
前端
在前端开发中,JavaScript 是最常用的编程语言之一。JavaScript 拥有多种数据类型,这些数据类型可以分为基本数据类型和引用数据类型。
基本数据类型
基本数据类型是存储在栈内存中的简单数据段,占用的内存较小,可以直接操作它们的值。JavaScript 的基本数据类型包括:
-
String:字符串,用于表示文本值,例如 "Hello, World!"1。
-
Number:数字,可以是整数或浮点数,例如 42 或 3.142。
-
Boolean:布尔值,有两个值:true 和 false2。
-
Null:表示空值,是一个特殊的关键字,表示变量没有值1。
-
Undefined:表示未定义,是一个特殊的关键字,表示变量未赋值1。
-
Symbol:ES6 引入的一种新的原始数据类型,表示独一无二的值3。
-
BigInt:可以表示任意大的整数,超过了 Number 的安全整数限制1。
引用数据类型
引用数据类型是存储在堆内存中的对象,变量中保存的是一个指针,指向内存堆中的实际值。JavaScript 的引用数据类型包括:
-
Object:对象,是一种复合数据类型,可以包含多个键值对2。
-
Array:数组,是一种特殊的对象,用于存储有序的元素集合3。
-
Function:函数,是一种可调用的对象,用于封装可执行的代码块3。
-
RegExp:正则表达式,是一种用于匹配字符串模式的特殊对象3。
-
Date:日期对象,用于处理日期和时间
后端
这里主要以Java为例来进行讲解,Java语言中的数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括四种整数型、两种浮点型、一种字符型和一种布尔型。引用数据类型则包括类(Class)、接口(Interface)和数组(Array)。
基本数据类型
基本数据类型是Java语言预定义的,它们的大小和值的范围是固定的。Java定义了以下几种基本数据类型:
-
整数型:包括byte(1字节)、short(2字节)、int(4字节)和long(8字节)。
-
浮点型:包括float(4字节)和double(8字节)。
-
字符型:char(2字节),用于表示单个字符。
-
布尔型:boolean,用于表示真(true)或假(false)。
每种基本数据类型都有对应的包装类,例如Integer是int的包装类,Double是double的包装类。包装类提供了一些方法来操作基本数据类型的值,同时也允许使用泛型。
引用数据类型
引用数据类型指向一个对象,它们引用的是对象在内存中的地址。Java中的引用数据类型主要包括:
-
类(Class):定义了一组具有相同属性(变量)和行为(方法)的对象的模板。
-
接口(Interface):定义了一组方法规范,由实现接口的类去具体实现。
-
数组(Array):用于存储固定大小的同类型元素。
引用数据类型的默认值是null,表示它们没有指向任何对象。
数据库
这里主要以MySQL为例进行讲解,MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。
数值类型
日期和时间类型
字符串类型
上面罗列了前后端以及数据库支持的数据类型,下面整理了一些数据的对应关系:
实践分析
本小节通过实践demo来对所有数据类型进行分析,通过实践案例讲解的方式来深入理解各数据类型的转换机制。
首先创建了一个如下涵盖大部分mysql数据类型的表:
然后创建了一个穷举所有数据类型的实体对象:
之后我们编写一个测试方法:
准备完毕之后我们开始进行debug实验,接口传参如下:
Controller层接参如下:
可以看到参数都能够正确接收到,并且根据实体对象类型进行了转换,入库之后如下所示:
这是一个很有趣的小实验,很多人在开发者懵懵懂懂的,感觉自己都会了,但是一单严格问就答不上来了,如果前后端到入库数据类型对应关系没搞清,又怎么能够写出优雅的代码,所以建议大家都是实际验证一下自己的猜想,巩固好基础知识点。
总结
本篇博客构思的挺久才开始下笔,出品一篇文章的确来之不易,从有了想法之后开始构思和收集材料,另外技术文章尽可能具备实战性,所以最后我都习惯配合实践demo来说明,希望大家看完文章有所收获。
时光荏苒,已经是25年了,新的一年大家继续加油!