1 | startID=>start: 开始 |
未命名
graph TD 0((0)) --- 1((1)) --- 3((3)) 1((1)) --- 4((4)) 0((0)) --- 2((2))
未命名
MySQL约束
MySQL 约束详解:保障数据完整性的六大机制
约束(Constraint)是 MySQL 中用于限制表中数据的规则,通过强制数据满足特定条件,确保数据库的完整性、一致性和准确性。MySQL 支持六大类约束,虽然部分约束在实现上有局限,但仍是设计可靠数据表的核心工具。
六大约束类型及作用
| 约束类型 | 作用描述 | MySQL 支持情况 |
|---|---|---|
| NOT NULL | 限制字段值不能为 NULL(必须填写)。 |
完全支持 |
| DEFAULT | 为字段设置默认值,当插入数据时未指定该字段则使用默认值。 | 完全支持 |
| PRIMARY KEY | 主键约束,唯一标识表中的每行记录,要求字段值唯一且非空。 | 完全支持(单字段或复合主键) |
| UNIQUE | 唯一约束,保证字段值在表中唯一,但允许为 NULL(NULL 可重复)。 | 完全支持 |
| CHECK | 检查约束,限制字段值必须满足指定条件(如 age > 0)。 |
MySQL 8.0.16+ 支持,低版本仅语法兼容但不生效 |
| FOREIGN KEY | 外键约束,限制两个表的关系,确保从表字段值必须来自主表的关联字段。 | 支持,但需存储引擎为 InnoDB(MyISAM 不支持) |
约束的使用方法
1. NOT NULL(非空约束)
确保字段必须有值,禁止插入 NULL。
1 | CREATE TABLE student ( |
2. DEFAULT(默认约束)
为字段设置默认值,简化插入操作(未指定字段时自动填充)。
1 | CREATE TABLE employee ( |
3. PRIMARY KEY(主键约束)
主键是表的 “唯一标识符”,具有以下特性:
springmvc处理模型数据
Spring MVC 模型数据处理详解:4 种核心方式与错误处理
在 Spring MVC 开发中,将业务数据传递到视图(如 JSP、Thymeleaf)是核心需求之一。Spring MVC 提供了 ModelAndView、Map/Model、@SessionAttributes、@ModelAttribute 四种灵活的模型数据处理方式,覆盖从 “单次请求数据传递” 到 “跨请求数据共享” 的全场景。从 “数据传递原理→使用场景→实战示例” 三个维度,彻底讲透模型数据的处理逻辑。
核心概念:模型数据的本质
Spring MVC 中的 “模型数据” 本质是 键值对(Key-Value),存储在 Model 或 ModelMap 中,最终会通过 HttpServletRequest.setAttribute() 绑定到请求域(Request Scope),视图技术(如 JSP 的 EL 表达式 ${key})可直接访问这些数据。
- 作用域分类:
- 请求域(Request Scope):数据仅在当前请求有效(默认,如 ModelAndView、Map 传递的数据);
- 会话域(Session Scope):数据在当前用户会话中有效(需通过
@SessionAttributes显式设置)
方式 1:ModelAndView —— 视图与数据的统一载体
ModelAndView 是 Spring MVC 早期最常用的模型数据处理方式,同时封装 “视图信息” 和 “模型数据”,适合需要明确指定视图且传递数据的场景。
1. 核心原理与源码解析
ModelAndView 内部维护两个核心变量,分别对应 “视图” 和 “数据”:
1 | public class ModelAndView { |