实战概述

开发模式

接口文件

环境搭建

1.准备数据库

Postgressql的sql案例脚本


-- 用户表(需用双引号包裹关键字 "user")
CREATE TABLE "user" (
                        id SERIAL PRIMARY KEY,  -- SERIAL 替代 auto_increment(证据 ) SERIAL 类型:自动生成唯一自增整数
                        username VARCHAR(20) NOT NULL UNIQUE, -- 强制账户唯一性
                        password VARCHAR(32), -- 预留密码哈希空间
                        nickname VARCHAR(10) DEFAULT '', -- 空字符串默认值 (DEFAULT '') 替代 NULL 值,避免空指针异常
                        email VARCHAR(128) DEFAULT '',
                        user_pic VARCHAR(128) DEFAULT '',
                        create_time TIMESTAMP NOT NULL,  -- datetime 转为 TIMESTAMP 强制审计追踪
                        update_time TIMESTAMP NOT NULL
);
-- 添加表注释 独立于表结构的注释存储,不影响 DDL 执行效率
COMMENT ON TABLE "user" IS '用户表';
COMMENT ON COLUMN "user".id IS 'ID';
COMMENT ON COLUMN "user".username IS '用户名';
COMMENT ON COLUMN "user".password IS '密码';
COMMENT ON COLUMN "user".nickname IS '昵称';
COMMENT ON COLUMN "user".email IS '邮箱';
COMMENT ON COLUMN "user".user_pic IS '头像';
COMMENT ON COLUMN "user".create_time IS '创建时间';
COMMENT ON COLUMN "user".update_time IS '修改时间';

-- 分类表 建立与用户表的 1:N 关系,限制分类创建者必须存在于用户表
CREATE TABLE category (
                          id SERIAL PRIMARY KEY,
                          category_name VARCHAR(32) NOT NULL,
                          category_alias VARCHAR(32) NOT NULL,
                          create_user INTEGER NOT NULL,
                          create_time TIMESTAMP NOT NULL,
                          update_time TIMESTAMP NOT NULL,
    -- 外键约束(证据 [[6]][[9]])
                          CONSTRAINT fk_category_user
                              FOREIGN KEY (create_user) REFERENCES "user"(id)
                                  ON DELETE NO ACTION ON UPDATE NO ACTION --阻止删除关联用户
);
-- 添加表注释
COMMENT ON TABLE category IS '分类表';
COMMENT ON COLUMN category.id IS 'ID';
COMMENT ON COLUMN category.category_name IS '分类名称';
COMMENT ON COLUMN category.category_alias IS '分类别名';
COMMENT ON COLUMN category.create_user IS '创建人ID';
COMMENT ON COLUMN category.create_time IS '创建时间';
COMMENT ON COLUMN category.update_time IS '修改时间';

-- 文章表
CREATE TABLE article (
                         id SERIAL PRIMARY KEY,
                         title VARCHAR(30) NOT NULL,
                         content TEXT NOT NULL, -- 无长度限制且存储更高效
                         cover_img VARCHAR(128) NOT NULL,
                         state VARCHAR(3) DEFAULT '草稿'
                             CHECK (state IN ('已发布', '草稿')),  -- 检查约束确保状态值(证据 )
                         category_id INTEGER,
                         create_user INTEGER NOT NULL,
                         create_time TIMESTAMP NOT NULL,
                         update_time TIMESTAMP NOT NULL,
    -- 外键约束(证据 [[1]][[6]])
                         CONSTRAINT fk_article_category
                             FOREIGN KEY (category_id) REFERENCES category(id)
                                 ON DELETE SET NULL ON UPDATE CASCADE,  -- 分类删除时设为 NULL
                         CONSTRAINT fk_article_user
                             FOREIGN KEY (create_user) REFERENCES "user"(id)
                                 ON DELETE CASCADE ON UPDATE CASCADE  -- 用户删除时级联删除文章
);
-- 添加表注释
COMMENT ON TABLE article IS '文章表';
COMMENT ON COLUMN article.id IS 'ID';
COMMENT ON COLUMN article.title IS '文章标题';
COMMENT ON COLUMN article.content IS '文章内容';
COMMENT ON COLUMN article.cover_img IS '文章封面';
COMMENT ON COLUMN article.state IS '文章状态: 只能是[已发布]或[草稿]';
COMMENT ON COLUMN article.category_id IS '文章分类ID';
COMMENT ON COLUMN article.create_user IS '创建人ID';
COMMENT ON COLUMN article.create_time IS '创建时间';
COMMENT ON COLUMN article.update_time IS '修改时间';

SELECT * FROM big_event.public."user"

2.创建工程

利用手动创建的方式创建SpringBoot框架

首先创建maven工程

补齐资源文件夹resources

补齐配置文件application.yml

我们需要让当前工程集成一个父工程

添加web起步依赖,postgresql驱动,mybatis依赖

3.配置文件

配置mybatis的配置信息

查看url

4.创建包结构准备实体类

包结构

实体类

package com.zwh.pojo;


import java.time.LocalDateTime;

public class Article {
    private Integer id;//主键ID
    private String title;//文章标题
    private String content;//文章内容
    private String coverImg;//封面图像
    private String state;//发布状态 已发布|草稿
    private Integer categoryId;//文章分类id
    private Integer createUser;//创建人ID
    private LocalDateTime createTime;//创建时间
    private LocalDateTime updateTime;//更新时间
}
package com.zwh.pojo;

import java.time.LocalDateTime;

public class Category {
    private Integer id;//主键ID
    private String categoryName;//分类名称
    private String categoryAlias;//分类别名
    private Integer createUser;//创建人ID
    private LocalDateTime createTime;//创建时间
    private LocalDateTime updateTime;//更新时间
}
package com.zwh.pojo;



import java.time.LocalDateTime;

public class User {
    private Integer id;//主键ID
    private String username;//用户名
    private String password;//密码
    private String nickname;//昵称
    private String email;//邮箱
    private String userPic;//用户头像地址
    private LocalDateTime createTime;//创建时间
    private LocalDateTime updateTime;//更新时间
}

提供启动类

运行测试

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐