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

数据从前端传到后端入库过程分析

数据从前端传到后端入库过程分析

概述

        积累了一些项目经验,成长为一个老程序员了,自认为对各种业务和技术都能得心应手的应对了,殊不知很多时候我们借助了搜索引擎的能力,当然现在大家都是通过AI来武装自己。

        今天要分析的话题是数据从前端传到后端再到插入数据库的数据类型转换过程。

有哪些数据类型

前端

在前端开发中,JavaScript 是最常用的编程语言之一。JavaScript 拥有多种数据类型,这些数据类型可以分为基本数据类型和引用数据类型。

基本数据类型

基本数据类型是存储在栈内存中的简单数据段,占用的内存较小,可以直接操作它们的值。JavaScript 的基本数据类型包括:

  1. String:字符串,用于表示文本值,例如 "Hello, World!"

  2. Number:数字,可以是整数或浮点数,例如 42 或 3.14

  3. Boolean:布尔值,有两个值:true 和 false

  4. Null:表示空值,是一个特殊的关键字,表示变量没有值。

  5. Undefined:表示未定义,是一个特殊的关键字,表示变量未赋值。

  6. Symbol:ES6 引入的一种新的原始数据类型,表示独一无二的值。

  7. BigInt:可以表示任意大的整数,超过了 Number 的安全整数限制。

引用数据类型

引用数据类型是存储在堆内存中的对象,变量中保存的是一个指针,指向内存堆中的实际值。JavaScript 的引用数据类型包括:

  1. Object:对象,是一种复合数据类型,可以包含多个键值对。

  2. Array:数组,是一种特殊的对象,用于存储有序的元素集合。

  3. Function:函数,是一种可调用的对象,用于封装可执行的代码块。

  4. RegExp:正则表达式,是一种用于匹配字符串模式的特殊对象。

  5. Date:日期对象,用于处理日期和时间

后端

        这里主要以Java为例来进行讲解,Java语言中的数据类型分为两大类:基本数据类型和引用数据类型。基本数据类型包括四种整数型、两种浮点型、一种字符型和一种布尔型。引用数据类型则包括类(Class)、接口(Interface)和数组(Array)。

基本数据类型

基本数据类型是Java语言预定义的,它们的大小和值的范围是固定的。Java定义了以下几种基本数据类型:

  1. 整数型:包括byte(1字节)、short(2字节)、int(4字节)和long(8字节)。

  2. 浮点型:包括float(4字节)和double(8字节)。

  3. 字符型char(2字节),用于表示单个字符。

  4. 布尔型boolean,用于表示真(true)或假(false)。

每种基本数据类型都有对应的包装类,例如Integerint的包装类,Doubledouble的包装类。包装类提供了一些方法来操作基本数据类型的值,同时也允许使用泛型。

引用数据类型

引用数据类型指向一个对象,它们引用的是对象在内存中的地址。Java中的引用数据类型主要包括:

  1. 类(Class):定义了一组具有相同属性(变量)和行为(方法)的对象的模板。

  2. 接口(Interface):定义了一组方法规范,由实现接口的类去具体实现。

  3. 数组(Array):用于存储固定大小的同类型元素。

引用数据类型的默认值是null,表示它们没有指向任何对象。

数据库

        这里主要以MySQL为例进行讲解,MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值类型

日期和时间类型

字符串类型

        上面罗列了前后端以及数据库支持的数据类型,下面整理了一些数据的对应关系:

实践分析

        本小节通过实践demo来对所有数据类型进行分析,通过实践案例讲解的方式来深入理解各数据类型的转换机制。

        首先创建了一个如下涵盖大部分mysql数据类型的表:

        然后创建了一个穷举所有数据类型的实体对象:

        之后我们编写一个测试方法:

        准备完毕之后我们开始进行debug实验,接口传参如下:

Controller层接参如下:

可以看到参数都能够正确接收到,并且根据实体对象类型进行了转换,入库之后如下所示:

        这是一个很有趣的小实验,很多人在开发者懵懵懂懂的,感觉自己都会了,但是一单严格问就答不上来了,如果前后端到入库数据类型对应关系没搞清,又怎么能够写出优雅的代码,所以建议大家都是实际验证一下自己的猜想,巩固好基础知识点。

总结

        本篇博客构思的挺久才开始下笔,出品一篇文章的确来之不易,从有了想法之后开始构思和收集材料,另外技术文章尽可能具备实战性,所以最后我都习惯配合实践demo来说明,希望大家看完文章有所收获。

        时光荏苒,已经是25年了,新的一年大家继续加油!


http://www.kler.cn/a/523322.html

相关文章:

  • 【深度学习】 UNet详解
  • 构建 QA 系统:基于文档和模型的问答
  • DeepSeek R1学习
  • PPT自动化 python-pptx -7: 占位符(placeholder)
  • Highcharts 柱形图:深入解析与最佳实践
  • 【时时三省】(C语言基础)文件的随机读写
  • 【汽车电子架构】AutoSAR从放弃到入门专栏导读
  • 【2024年华为OD机试】 (C卷,200分)- 根据IP查找城市(JavaScriptJava PythonC/C++)
  • 股指期货的基差套利有什么样的风险?
  • 【后端开发】字节跳动青训营Cloudwego脚手架
  • DeepSeek 突然崛起的原因剖析及对外界的影响
  • 【MySQL】悲观锁和乐观锁的原理和应用场景
  • C基础寒假练习(3)
  • 基础IO相关知识
  • 使用jmeter进行压力测试
  • 安全漏洞扫描与修复系统的高质量技术详解
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-LangGraph-链式处理(一)
  • scratch学习教程
  • 0 基础学运维:解锁 K8s 云计算运维工程师成长密码
  • Lustre Core 语法 - 比较表达式
  • 如果我想设计一款复古风格的壁纸,应该选什么颜色?
  • JMeter插件PerfMon Metrics Collector:全方位服务器性能监控指南
  • 在Scene里面绘制编辑工具
  • 双指针(典型算法思想)——OJ例题算法解析思路
  • 05_任务的删除
  • 【第十天】零基础入门刷题Python-算法篇-数据结构与算法的介绍-两种常见的字符串算法(持续更新)