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

项目1总结其一

做好一个项目,数据库的设计尤为关键。
这里补充回忆一下数据库三大范式

  1. 1NF:每一列都不可分,是独立的
  2. 2NF:非主键列完全依赖于主键,eg:商品单价只跟商品编号有关,而如果在订单表里则不能将单价写上,否则不满足2nf
  3. 3NF:非主键列直接依赖于主键,跟2nf区别是,2NF下,只要信息跟主键有关就行,但是3NF光有关还不行,必须得独立的有关,也就是说编号性质的一般可以符合,但是像属性这种东西,即使符合在主键下是唯一的,如果也受另一非主键影响的话,就不是3NF

我们设计数据库,尽量在2NF及以上。仅仅满足1NF是混乱的

我的数据库共有9张表:
在这里插入图片描述
预期目标是创建一套逻辑闭环的F1经理模拟系统

说一下我自认为的巧思:

1、利用用户表来模拟一个用户操纵多个车队的情况
2、利用request里的content存储json数据,将非管理员用户的申请数据保存在里面,就可以实现一个简单的审批流
3、每张表保留着createdAt和updatedAt这两个自动生成的字段,严谨
4、每个表完全依赖于主键

数据库是项目立足的根本之一,因此要着重注意其设计。

转到后端设计上,选择SpringBoot作为开发脚手架,注解解释型的开发,面向接口的编程,逻辑性强的同时开发速度也快!
在这里插入图片描述

立项之初就是这些思考吧,当然导入一些工具包工具类的也要做,这些就不用思考了

首先看pom文件
1、spring-boot-starter-web Web应用项目基础
2、mybatis-spring-boot-starter 操作数据库
3、java-jwt 用于生成jwt密钥
4、jasypt 用于加解密数据库字段
5、fastjson2 序列化反序列化JSON操作
6、spring-boot-starter-validation 验证属性
7、easy-captcha 验证码
8、spring-boot-starter-cache spring官方缓存
9、spring-boot-starter-data-redis redis缓存
10、spring-boot-starter-aop 面向切面编程,是许多操作的基础
11、mybatis-plus-jsqlparser mybatis-plus-spring-boot3-starter 简化mybatis对于单表的复杂
12、spring-boot-devtools 热加载
13、mysql-connector-j 数据库连接核心
14、lombok 简化DTO层开发
15、spring-boot-starter-test 测试
16、mybatis-spring-boot-starter-test 同上
17、spring-boot-starter-data-jpa 集成数据库事务以及枚举类型声明


以下是返回给后端数据的封装类

@Data
@ToString
@NoArgsConstructor
public class Result{/*** 状态码*/private Integer code;/*** 消息*/private String msg;/*** 数据*/private Object data;/***/public static Result success() {return success(0, null, null);}/***/public static Result success( int code) {return success(code, null, null);}/***/public static Result success( String msg) {return success(0, msg, null);}/***/public static Result success( Object data) {return success(0, null, data);}/***/public static Result success( String msg, Object data) {return success(0, msg, data);}/***/public static Result success( int code, String msg, Object data) {Result result = new Result();result.setCode(code);result.setMsg(msg);result.setData(data);return result;}/***/public static Result error() {return error(-1, "服务器发生错误, 请求联系管理员");}/***/public static Result error( String msg) {return error(-1, msg);}/***/public static Result error( int code, String msg) {Result result = new Result();result.setCode(code);result.setMsg(msg);return result;}// 将当前对象转换成JSON格式的字符串public String toJson() throws JsonProcessingException {ObjectMapper mapper = new ObjectMapper();return mapper.writeValueAsString(this);}
}

自定义异常:

public class F1Exception extends RuntimeException {public F1Exception(String message) {super(message);}
}
http://www.dtcms.com/a/340883.html

相关文章:

  • 49 C++ STL模板库18-类模板-pair
  • ROS 2系统Callback Group概念笔记
  • 突发!DeepSeek刚刚开源V3.1-Base
  • UTF-8 编解码可视化分析
  • 【Day 30】Linux-SQL语句
  • C/C++ 与嵌入式岗位常见笔试题详解
  • MYSQL为什么会发生死锁,怎么解决
  • 第三阶段数据-3:数据库脚本生成,备份与还原,分离与附加
  • configtx通道配置文件
  • RHCA08内存管理
  • 对称加密算法
  • 数据库DML语言(增、删、改)
  • 闪电赋能全链路:领码SPARK一体化创新平台
  • 基于HTTP3的WebTransport实践
  • 基于 Java 和 MySQL 的精品课程网站
  • 在完全没有无线网络(Wi-Fi)和移动网络(蜂窝数据)的环境下,使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本2)
  • Ubuntu 重连usb设备(断电和不断电方案)亲测可行
  • 亚马逊新品爆单策略:从传统困境到智能突破
  • LeetCode热题100--101. 对称二叉树--简单
  • C++ 力扣 438.找到字符串中所有字母异位词 题解 优选算法 滑动窗口 每日一题
  • 《数据之舞》
  • GitHub宕机生存指南:从应急协作到高可用架构设计
  • QT-图像灰度处理时QImage.setPixel方法存在的坑
  • 在QT中动态生成控件造成界面卡顿时的鼠标处理
  • Qt设置软件使用期限【新版防修改系统时间】
  • 一个 WPF 文档和工具窗口布局容器
  • GitHub宕机应急指南:无缝协作方案
  • Eclipse 里Mybatis的xml的头部报错
  • 软考高级--系统架构设计师--案例分析真题解析
  • Java项目基本流程(五)