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

博客系统(一)

  • 博客系统
  • 一、创建项目
  • 二、建立数据库
    • 结构
    • 链接服务器和数据库和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=1spring.session.store-type=redis#过期时间
server.servlet.session.timeout=1800spring.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.hqwc.cn/news/107609.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL与ES数据同步的四种方案及实践演示

文章目录 一、同步双写优点缺点双写失败风险项目演示 二、异步双写(MQ方式)优点缺点项目演示 三、基于Datax同步核心组件架构图支持的数据源及操作项目演示 四、基于Binlog实时同步实现原理优点缺点项目演示 一、同步双写 也就是同步调用,这…

绘图(一)弹球小游戏

很多程序如各种小游戏都需要在窗口中绘制各种图形,除此之外,即使在开发JavaEE项目时, 有 时候也必须"动态"地向客户 端生成各种图形、图表,比如 图形验证码、统计图等,这都需要利用AWT的绘图功能。 组件绘图…

骨传导耳机对人体有危险吗?会损害听力吗?

如果在使用骨传导耳机的时候控制好时间和音量,是不会对人体带来危险和造成伤害的。 下面跟大家解释一下为什么骨传导耳机对人体没有危害,最大的原因就是骨传导耳机不需要空气传导,而是通过颅骨传到听觉中枢,传输过程中几乎没有噪…

电子游戏冷知识

电子游戏一直在试图用技术还原一个真实或虚幻的世界,并在其中演绎和倾诉人类种种的情感和欲望。 对信息技术发展的贡献 游戏推动了芯片、网络、VR/AR等领域的技术进步和创新。根据中科院的研究报告,游戏技术对芯片产业的科技进步贡献率是14.9%&#xff…

win11设置固定IP

1 3. 4.设置ip 5.点击保存就大功告成拉

2023-9-10 集合-Nim游戏

题目链接&#xff1a;集合-Nim游戏 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_set>using namespace std;const int N 110, M 10010;int n, m; int s[N], f[M];int sg(int x) {if(f[x] ! -1) return f[x];//…

什么样的护眼灯好?盘点五款好用的护眼台灯

随着技术的发展&#xff0c;灯光早已成为每家每户都需要的东西。但是灯光不好可能会对眼睛造成伤害是很多人没有注意到的。现在随着护眼灯产品越来越多&#xff0c;市场上台灯的选择越来越多样化&#xff0c;如何选择一个对眼睛无伤害、无辐射的台灯成为许多家长首先要考虑的问…

工厂除静电除尘设备--离子风枪

静电无处不在&#xff0c;区别在于静电的多少而已。特别是工业生产过程中&#xff0c;大量的静电会有很多危害。 静电的危害有几点&#xff1a;1.引起电子设备的故障或误动作&#xff0c;造成电磁干扰。2.击穿集成电路和精密的电子元件&#xff0c;或使元件老化&#xff0c;拉…

华为云云耀云服务器L实例评测|急速上手,零基础,两小时完成搭建属于自己的个人网站

本期测评产品的相关参数 区域 华北-北京四2核2G 系统盘 50GiB 流量包 600GB 峰值带宽 4Mbit/s 预装系统&#xff1a;企业建站系统 WordPress 6.2.2 产品名称 &#xff1a; 华为云云耀云服务器L 目录 一&#xff0c;服务器的选购和相关的配置二&#xff0c;华为云服务器的基本配…

LINUX 网络管理

目录 一、NetworkManager的特点 二、配置网络 1、使用ip命令临时配置 1&#xff09;查看网卡在网络层的配置信息 2&#xff09;查看网卡在数据链路层的配置信息 3&#xff09;添加或者删除临时的网卡 4&#xff09;禁用和启动指定网卡 2、修改配置文件 3、nmcli命令行…

socket编程

网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。一般系统网络协议包括五个部分&#xff1a;通信环境&#xff0c;传输服务&#xff0c;词汇表&#xff0c;信息的编码格式&#xff0c;时序、规则和过程。 Socket是应用层和TIP/IP协议簇通信…

VSCODE 使用技巧

vscode批量去掉代码中空行的方法 1、在vscode中使用ctrl f组合快捷键打开替换窗口. 2、输入下面的正则表达式 ^\s*(?\r?$)\n https://mp.weixin.qq.com/s/ZKV2sZWszxBLNTNLEWhsng