博客系统(升级(Spring))(一)创建数据库,创建实例化对象,统一数据格式,统一报错信息

news2024/11/25 12:23:11

博客系统(一)

  • 博客系统
    • 创建项目
  • 建立数据库
    • 结构
    • 链接服务器和数据库和Redis
  • 创建实例化对象
  • 统一数据结构
    • 结构
  • 统一报错信息

博客系统

博客系统是干什么的?
CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统,这是一个较为简单的博客系统,但是主要功能一个不缺,不过就是 UI 有些 low,我学习前端是为了写后端更加顺手。不至于前后端完全分离,但是有个问题设计的 web 页面不是很好看。

首先我将整体的业务流程展现
在这里插入图片描述

创建项目

有考试的同学不会创,可以看我的 Spring 相关的文章。里面有详细的说明
在这里插入图片描述
在这里插入图片描述

创建目录:
在这里插入图片描述
common:这里放的是公共的组件
config:这里放的配置
Controller·:控制层
model:放的实例化类
service:服务层
mapper:数据层

建立数据库

结构

在这里插入图片描述

创建一个sql文件
在这里插入图片描述
在文件中编写sql语句
创建数据库-----myblog

drop database if exists myblog;
create  database myblog default character  set utf8;

创建用户表----userinfo

drop table if exists userinfo;
create table userinfo(
    `uid` int primary key auto_increment,
    `username` varchar(100) not null,
    `password` varchar(32) not null ,
    `photo` varchar(500) default '',
    `createtime` datetime default now(),
    `updatetime` datetime default now(),
    `state` int default 1
);

创建文章表----articleinfo

drop table if exists articleinfo;
create table articleinfo(
    `aid` int primary key auto_increment,
    `title` varchar(100) not null ,
    `content` text not null ,
    `createtime` datetime default now(),
    `updatetime` datetime default now(),
    `uid` int not null ,
    `readcount` int not null default 1,
    `state` int default 1
);

插入一些测试数据

insert into userinfo(uid, username, password, photo, createtime, updatetime, `state`)
 values (1,'admin','admin','','2023-9-9 21:54','2023-9-9 21:54',1);

insert into articleinfo (aid, title, content, uid) values (1,'中庸','大学中庸',1);

链接服务器和数据库和Redis

(不使用也是可以的,看自己的需求)如何安装使用Redis,具体看我的Redis文章
在这里插入图片描述

spring.datasource.url=jdbc:mysql://localhost:3306/mycnblog?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=xietian1314
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#这里可以不添加
mybatis.mapper-locations=classpath:mybatis/*Mapper.xml
mybatis.configuration.map-underscore-to-camel-case=true
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
logging.level.com.example.demo=Debug

#redis 配置
#设置Redis连接信息
spring.redis.host=8.130.80.152
spring.redis.port=6379
spring.redis.password=
spring.redis.database=1

spring.session.store-type=redis

#过期时间
server.servlet.session.timeout=1800

spring.session.redis.flush-mode=on_save
#用户登录的session存在这个目录下
spring.session.redis.namespace=spring:session

创建实例化对象

在model包下建立两个类,Userinfo ,Articleinfo ,并且在包下创建一个vo的包。
再vo的包中创建一个UserinfoVO,这个包继承于Userinfo ,相当于对Userinfo 进行了扩充
注意:

  1. Serializable 这个接口作用是序列化和反序列化 ,java 提供的接口。用来将一个对象进行二进制化。
  2. @Data,相当于自己构建getter,setter

创建一个用户的实例化—Userinfo

@Data
public class Userinfo implements Serializable {
    private int uid;
    private String username;
    private String password;
    private String photo;
    private LocalDateTime createtime;
    private LocalDateTime updatetime;
    private int state;
}

创建一个文章的实例化—Articleinfo

@Data
public class Articleinfo implements Serializable {
    private int aid;
    private String title;
    private String content;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm",timezone = "GMT+8")
    private String createtime;
    private String updatetime;
    private int uid;
    private int readcount;
    private int state;
}

在vo包下创建一个扩充的Userinfo

@Data
public class UserinfoVO extends Userinfo implements Serializable {
    private String chekcode;
    private int artCount;
}

在这里插入图片描述

统一数据结构

结构

在这里插入图片描述

我们约定数据的交互一ajax形式传输。
规定:

  • 传输成功返回一个code==200,并且数据完好
  • 传输失败返回一个code 非 200 的数,且返回一个错误信息
/**
 * 统一前后端的数据对象
 */
@Data
public class ResultAjax {
    private int code;
    private String msg;
    private Object data;

    public static ResultAjax success(Object data){
        ResultAjax resultAjax= new ResultAjax();
        resultAjax.setCode(200);
        resultAjax.setMsg("");
        resultAjax.setData(data);
        return resultAjax;
    }
    public static ResultAjax fail(int code,String msg){
        ResultAjax resultAjax= new ResultAjax();
        resultAjax.setCode(code);
        resultAjax.setMsg(msg);
        resultAjax.setData(null);
        return resultAjax;
    }
    public static ResultAjax fail(int code,String msg,Object data){
        ResultAjax resultAjax= new ResultAjax();
        resultAjax.setCode(code);
        resultAjax.setMsg(msg);
        resultAjax.setData(data);
        return resultAjax;
    }
}

在这里插入图片描述

统一报错信息

简单而言就是整个系统出现的错误通过这个类进行捕捉

注意:

  • @ExceptionHandler:这个方法就会处理类中其他方法(被@RequestMapping注解)抛出的异常。
/**
 * 统一错误信息
 */
public class ExceptionAdvice {
    @ExceptionHandler(Exception.class)
    public ResultAjax doException(Exception e){
        return ResultAjax.fail(-1,e.getMessage());
    }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/994686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP中的新旧事务码

SAP中的新旧事务码 SAP随着新版本的发布,我们知道sap已经更新了很多的程序和TCODE。sap提供了很多新的TCODE来替换旧的TCODE,新TCODE有很多的新特性和新功能。在这个这种情况下,很多旧TCODE就会被废弃。我们如何查找这个替换呢? …

如何使用OpenGL画出ROS rviz那样的点云可视化效果

【请尊重原创!转载和引用文章内容务必注明出处!未经许可上传到某文库或其他收费阅读/下载网站赚钱的必追究责任!】 ROS rviz可以将点云以多种形式渲染出来比较漂亮,尤其是根据intensity渲染点云不同的色彩和亮度的功能比较好&…

List集合详解

目录 1、集合是什么? 1.1、集合与集合之间的关系 2、List集合的特点 3、遍历集合的三种方式 3.1、foreach(增强佛如循环遍历) 3.2、for循环遍历 3.3、迭代器遍历 4、LinkedList和ArrayList的区别 4.1、为什么ArrayList查询会快一些? 4.2、为什么LinkedLi…

2023大数据挑战赛全国六强团队获奖经验+ppt分享(五)

团队名称 会魔法的老人 团队成员 刘克林(重庆邮电大学) 敖宇(重庆邮电大学) 杨敏(重庆邮电大学) 团队名次 全国第二名 赛题描述说明介绍 2023大数据挑战赛赛题说明决赛评分标准回顾 参赛分享与收获 本次大赛…

x86体系结构(WinDbg学习笔记)

寄存器 eaxAccumulator累加器ebxBase register基寄存器ecxCounter register计数器寄存器edxData register - can be used for I/O port access and arithmetic functions数据寄存器-可用于I/O端口访问和算术函数esiSource index register源索引寄存器ediDestination index reg…

第50节:cesium 绘制指定类型区域(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><el-button-group class="top_item"><el-button type=

fatedier/frp内网穿透详细安装及使用教程

《参考地址》 fatedier/frp是一款开源的主要使用Go语言开发的内网穿透工具。主要分为服务端&#xff08;frps&#xff09;和客户端&#xff08;frpc&#xff09;。 简单理解&#xff1a;服务端&#xff08;frps&#xff09;就是部署到公网ip服务器提供给客户端&#xff08;frpc…

MySQL中的字符集和排序规则

关键字: 字符集&#xff0c;utf8mb4&#xff0c;emoj 众所周知&#xff0c;mysql的utf8是假的utf8&#xff0c;没法存emoj等字符。要设置为utf8mb4... 问题 同事给了一段Update语句&#xff0c;更新某张表idxxx的某个字段; CREATE TABLE table_name ( id int(11) NOT NULL AUT…

OLED透明屏厚度:引领未来显示技术的革命

OLED透明屏作为一种未来显示技术&#xff0c;其薄度在整个行业中具有重要意义。 在这篇文章中&#xff0c;尼伽将详细介绍OLED透明屏厚度的优势、技术挑战以及应用案例&#xff0c;旨在为读者全面了解OLED透明屏的发展前景。 一、OLED透明屏厚度的优势 OLED透明屏采用柔性基板…

在FPGA上快速搭建以太网

在本文中&#xff0c;我们将介绍如何在FPGA上快速搭建以太网 &#xff08;LWIP &#xff09;。为此&#xff0c;我们将使用 MicroBlaze 作为主 CPU 运行其应用程序。 LWIP 是使用裸机设计以太网的良好起点&#xff0c;在此基础上我们可以轻松调整软件应用程序以提供更详细的应用…

zemax多重结构仿真分光板

光路中的分光板需要使用多重结构来仿真 首先做一个倾斜的分光板&#xff0c;然后用多重结构表现两个光路 基础设置&#xff1a; 效果&#xff1a; 设置平板倾斜45度&#xff1a; 1、表面设置为倾斜面 2、y方向正切设置为1 效果&#xff1a; 设置多重结构&#xff0c;这里是…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理(删除填充插值,数据类型转换,去重,连接与合并)

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…

数学分析:势场

首先从散度的物理解释开始。首先&#xff0c;在球内的向量场的散度的积分&#xff0c;等于它在球边界上的流量的积分。所以根据积分中值定理&#xff0c;我们可以这么理解散度&#xff0c;它就是这个体积内的速度场的平均密度。而速度场只和源有关&#xff0c;所以它表示的某个…

Prometheus+Grafana 搭建应用监控系统

一、背景 完善的监控系统可以提高应用的可用性和可靠性&#xff0c;在提供更优质服务的前提下&#xff0c;降低运维的投入和工作量&#xff0c;为用户带来更多的商业利益和客户体验。下面就带大家彻底搞懂监控系统&#xff0c;使用Prometheus Grafana搭建完整的应用监控系统。 …

Leetcode---361周赛

题目列表 2843. 统计对称整数的数目 2844. 生成特殊数字的最少操作 2845. 统计趣味子数组的数目 2846. 边权重均等查询 一、统计对称整数的数目 这题看一眼数据范围&#xff0c;直接就可以开始暴力求解了&#xff0c;按照题目要求模拟就行&#xff0c;代码如下 class Solu…

使用纯C语言定义通用型数据结构的方法和示例

文章目录 前言以实现优先队列来描述实现思想基本类型的包装类型比较函数演示总结 前言 最近一段时间在复习数据结构和算法&#xff0c;用的C语言&#xff0c;不得不说&#xff0c;不学个高级语言再回头看C语言根本不知道C语言的强大和完美&#xff0c;不过相比之下也有许多不便…

Linux内核分析与应用

Linux 内核分析与应用[1] 蜻蜓点水,可作抛砖引玉 1.概述 用到的几个命令: insmod dmesg[2] lsmod[3] 章节测试: 部分可参考[4] <1>. Linux得以流行&#xff0c;是因为遵循了GPL协议&#xff0c;并不是因为遵循POSIX标准 (错) linux操作系统概述[5] linux概述[6] <2>…

建站系列(三)--- 网络协议

目录 相关系列文章前言一、定义二、术语简介三、协议的组成要素四、网络层次划分五、常见网络协议划分六、常用协议介绍&#xff08;一&#xff09;TCP/IP&#xff08;二&#xff09;HTTP协议&#xff08;超文本传输协议&#xff09;&#xff08;三&#xff09;SSH协议 相关系列…

robotframework 获取当前时间

1、获取年月日时分秒格式的数据 命令&#xff1a;${time} Get Current Date result_format%Y%m%d%H%M%S 日期时间显示结果显示形式&#xff1a;20230908102553 2、获取时间戳形式的数据 命令&#xff1a; ${time} Get Current Date result_formattimestamp …

私有gitlab的搭建和配置教程

文章目录 1. 说明2. 安装操作2.1 依赖项2.2 gitlab-ce2.3 简要配置2.4 网页操作2.5 中文配置2.6 其他操作 3. 配置https3.1 配置证书3.2 url配置3.3 网页访问3.4 认证错误 4. ssh操作4.1 生成文件4.2 web配置4.3 额外操作 1. 说明 此教程基于Ubuntu22.04进行阐述&#xff0c;只…