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

【SpringBoot_Project_Actual combat】 Summary of Project experience_需要考虑的问题

无论是初学者还是有经验的专业人士,在学习一门新的IT技术时,都需要采取一种系统性的学习方法。那么作为一名技术er,你是如何系统的学习it技术的呢。

一、DB Problems

  1. 数据库数据类型与java中数据类型对应问题?
    MySql数据库和java中数据类型的对应关系:
    类型名称

从 JDBC 类型映射到 Java 类型http://t.csdn.cn/AqkMY
source
笔记:MySql数据库和java中数据类型的对应关系
( ఠൠఠ )ノ~source-笔记:MySql数据库和java中数据类型的对应关系

关于Mysql中如何选用这BigDecimal和double

  1. 首先与java不同的是mysql是用来持久化数据的,而java中使用的数据一般更多的是过一下内存;
  2. 数据库都要除了指定数据类型指外还需要指定精度,因此在DB中Double计算时精度的丢失比Java高得多;
    因为Java默认精确到15-16位了;
  3. 更改数据类型的成本,Mysql比Java代码要难得多;考虑到以上与java中不同几点,做点个人使用总结:
  4. 与商业金融相关字段要使用Decimal来表示,如金额,费率等字段;
  5. 参与各类计算如加,减,乘,除,sum,avg等等,也要使用Decimal;
  6. 经纬度,可以使用double来表示,这个可参考Java,只要保证精度范围即可;
  7. 如果确实不确定使用什么double或Decimal哪种类型合适,那最好使用Decimal,毕竟稳定,安全高于一切;

原文链接
贴贴-java.sql.Types,数据库字段类型,java数据类型的对应关系

二、关于“创建时间”&&“更新时间”问题

MySQL数据库之MySQL自动设置字段create_timeupdate_time
reference structure

create table `product`(
`id` BIGINT(20) not null AUTO_INCREMENT COMMENT '',
`name` varchar(20) DEFAULT NULL COMMENT  '',   
`price`  decimal(10,2)DEFAULT NULL COMMENT  '', 
`description`  varchar(255) DEFAULT NULLCOMMENT '', 
`create_time` datetime DEFAULT NULL COMMENT '创建时间',  
`update_time` datetime DEFAULT NULL COMMENT '更新时间', 	PRIMARY KEY
(`id`) );  

Scheme 1

当我们创建业务表的时候 通常都需要设置create_time 和 update_time 但是通常需要在代码中设置好时间后再插入数据库;

  • CURRENT_TIMESTAMP 字段设置后 当insert数据时 mysql会自动设置当前系统时间 赋值给该属性字段

  • ON UPDATE CURRENT_TIMESTAMP 字段设置后 当update数据时 并且 成功发生更改时 mysql会自动设置当前系统时间 赋值给该属性字段

  • create_time 设置 CURRENT_TIMESTAMP属性

  • update_time 设置 ON UPDATE CURRENT_TIMESTAMP属性

我们在代码中 就无需再手动给这两个参数赋值 节省了一定代码量
————————————————

直接在数据库中设置默认字段

创建的时候设置当前时间

·DEFAULT CURRENT_TIMESTAMP
更新的时候设置更新时间为当前时间

DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

Scheme 2

编写代码实现;需要编写代码

通常用于表建好了,突然发现还需要给字段自动设置系统时间,此时可使用代码来实现此功能/效果。

  1. 在product实体类中添加新属性 private Timestamp mqttTime;
  2. 获取当前时间存入数据库:
Date date=new Date();
String nowTime=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
Timestamp timestamp = Timestamp.valueOf(nowTime);//时间转换 java.util.Date是java.sql.Date的父类
  1. 然后把这个timestamp 存入数据库
objectName.setMqttTime(timestamp);

application sence

应用场景:
1、在数据表中,要记录每条数据是什么时候创建的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录创建时间;

2、在数据库中,要记录每条数据是什么时候修改的,不需要应用程序去特意记录,而由数据数据库获取当前时间自动记录修改时间;

achievement

实现方式:
1、将字段类型设为 TIMESTAMP

2、将默认值设为 CURRENT_TIMESTAMP
article–mysql

tips

在 MySQL 中,datetime 数据类型支持使用 CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。
例如,您可以在创建表时将 CURRENT_TIMESTAMP 用作默认值:

CREATE TABLE my_table (id INT PRIMARY KEY,created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

在这个例子中,如果没有为 created_at 列提供值,则会将当前时间作为默认值添加到该列中。 您还可以在定义列时使用 ON UPDATE
CURRENT_TIMESTAMP,以在更新行时自动将当前时间添加到 datetime 类型的列中:

CREATE TABLE my_table (id INT PRIMARY KEY,updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

在这个例子中,每次更新行时都会将当前时间添加到 updated_at 列中。如果未更新 updated_at 列,则其值将保持不变。
请注意,在 MySQL 5.6.5 及更高版本中,timestamp 类型也支持使用 DEFAULT CURRENT_TIMESTAMP 和
ON UPDATE CURRENT_TIMESTAMP。但是,timestamp 类型与 datetime
类型略有不同,因此使用时需要特别小心.

datetime 和 timestamp 区别

datetime 和 timestamp 都是 MySQL
中用于存储日期和时间的数据类型。它们都可以存储相同的日期和时间值,但它们有一些关键的区别。

存储空间:在 MySQL 中,timestamp 类型采用 4 字节存储空间,而 datetime 类型采用 8 字节。

范围:datetime 类型可以存储从 1000 年到 9999 年的日期和时间,而 timestamp 类型仅能存储从 1970 年到
2038 年的日期和时间。这是因为 timestamp 类型使用 Unix 时间戳来存储日期和时间,并且 Unix 时间戳只能表示从
1970 年 1 月 1 日至 2038 年 1 月 19 日之间的时间

精度:datetime 类型的精度为秒级别,而 timestamp 类型的精度为毫秒级别。

综上所述,如果您需要存储较早或较晚的日期和时间,则应该使用 datetime 类型。另外,如果您需要更高的精度,则应该使用
timestamp 类型。如果您不确定哪种类型更适合您的需求,请根据您的具体情况进行选择。

三、学习时的具体操作

提示:可介绍你是如何建立基础知识、实际操作、进行整理和总结的

四、如何巩固学习

提示:可阐述你是如何形成更系统和清晰的知识体系并进行回顾的

提醒:以上内容仅做参考,可自行发散。在发布作品前,请把不需要的内容删掉。

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

相关文章:

  • 恒容容器放气的瞬时流量的计算与合金氢化物放氢流量曲线的计算
  • 网络编程_UDP通信
  • windows修改Pycharm的右键打开方式
  • Python入门(十四)函数(二)
  • Allure测试报告定制全攻略,优化你的Web自动化测试框架!
  • 推荐系统算法详解
  • 企业网站架构部署与优化之LAMP
  • 攻防世界安卓逆向练习
  • 自然语言处理从入门到应用——自然语言处理的语言模型(Language Model,LM)
  • 【MySql】InnoDB一棵B+树可以存放多少行数据?
  • 【综述】视频无监督域自适应(VUDA)的小综述
  • 《深入理解计算机系统(CSAPP)》第9章虚拟内存 - 学习笔记
  • 信息论与编码 SCUEC DDDD 期末复习
  • windows安装python开发环境
  • java idea常用的快捷方式
  • lwIP 开发指南
  • RabbitMQ消息属性详解
  • shader 混合模式
  • 【大数据工具】Hive 安装
  • Android9.0 iptables用INetd实现app某个时间段禁止上网的功能实现
  • webpack.config.js基础配置(五大核心属性)
  • 【华为OD机试】阿里巴巴找黄金宝箱(IV)【2023 B卷|200分】
  • Qt6 C++基础入门2 文件结构与信号和槽
  • 常用模拟低通滤波器的设计——契比雪夫II型滤波器
  • SSM 如何使用 Redis 实现缓存?
  • uin-app如何获取微信昵称和头像的博客
  • 第六十七天学习记录:对陈正冲编著《C 语言深度解剖》中关于变量命名规则的学习
  • matlab 计算点云的线性指数
  • SpringBoot集成ElasticSearch
  • 分治入门+例题