【項目日記(一)】夢幻筆耕-數據層實現

?博主主頁: 33的博客?
??文章專欄分類:項目日記??
🚚我的代碼倉庫: 33的代碼倉庫🚚
🫵🫵🫵關注我帶你了解更多項目內容

在這里插入圖片描述

目錄

  • 1.前言
  • 2.后端模塊
  • 3數據庫設計
  • 4.mapper實現
    • 4.1UserInfoMapper
    • 4.2BlogMapper
  • 5.總結

1.前言

當我第一次使用csdn的時候,我完全被它的功能吸引,可以通過別人的文章來解答我們的疑惑,自己也可以記錄學習心得等,當時我就想要是我也能實現一個這樣的網站就好了,現在,當我的知識儲備量達到一定的程度,我也可以簡單實現像csdn的網站了,接下來,我們就一起完成吧!

2.后端模塊

相信大家對csdn的核心功能都是非常熟悉的,那么我們就模擬csdn來實現自己的博客系統,那么一個博客系統的核心功能主要包含前端模塊和后端模塊,而后端需要提供以下功能

  • 1.用戶注冊:當用戶第一次登錄該頁面需要注冊用戶名和密碼。
  • 2.用戶登錄:根據用戶名和密碼,判斷用戶的信息是否正確。
  • 3.博客列表展示:查詢博客列表。
  • 4.作者個人頁:根據用戶id,返回博客信息。
  • 5.博客詳情信息:根據博客ID返回博客信息。
  • 6.博客編輯:根據ID,返回博客,根據用戶輸入信息,更新博客。
  • 7.博客刪除,根據ID,進行博客刪除。
  • 8.寫博客:根據輸入信息進行博客添加。
    再進行分析實體類主要由:用戶實體,博客實體。

3數據庫設計

我們先設計用戶表用于存儲用戶信息和博客信息。
用戶表:

DROP TABLE IF EXISTS java_blog_spring.user;CREATE TABLE java_blog_spring.user(`id` INT NOT NULL AUTO_INCREMENT,`user_name` VARCHAR ( 128 ) NOT NULL,`password` VARCHAR ( 128 ) NOT NULL,`github_url` VARCHAR ( 128 ) NULL,`delete_flag` TINYINT ( 4 ) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY ( id ),UNIQUE INDEX user_name_UNIQUE ( user_name ASC )) ENGINE = INNODB DEFAULT 
CHARACTER 
SET = utf8mb4 COMMENT = '??表';

博客表:

drop table if exists java_blog_spring.blog;CREATE TABLE java_blog_spring.blog (`id` INT NOT NULL AUTO_INCREMENT,`title` VARCHAR(200) NULL,`content` TEXT NULL,`user_id` INT(11) NULL,`delete_flag` TINYINT(4) NULL DEFAULT 0,`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY (id))ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '博客表';

添加信息:

新增??信息
insert into java_blog_spring.user (user_name, 
password,github_url)values("波妞","123456","https://gitee.com/thirtythree-code");insert into java_blog_spring.user (user_name, 
password,github_url)values("龍貓","123456","https://gitee.com/thirtythree-code");insert into java_blog_spring.blog (title,content,user_id) values("第?篇博客
","111我是博客正?我是博客正?我是博客正?",1);insert into java_blog_spring.blog (title,content,user_id) values("第?篇博客","222我是博客正?我是博客正?我是博客正?",2);

根據數據庫屬性實現實體類:

@Data
public class UserInfo {private Integer id;private String UserName;private String password;private String githubUrl;private Integer deleteFlag;private Date createTime;private Date updateTime;
}
@Data
public class BlogInfo {private  Integer id;private  String title;private String content;private Integer userId;private boolean isLoginUser;private Integer deleteFlag;private Date createTime;private Date updateTime; 
}

4.mapper實現

我們先根據上訴信息進行數據層的實現。數據層主要從MySQL中獲取數據用戶信息和博客信息。
我們先創建一個mapper的包,然后在包中創建兩個mapper類:
在這里插入圖片描述
我們使用Mybaitis框架,完成數據庫操作,那么就需要先進行數據庫的配置:

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/java_blog_spring?characterEncoding=utf8&useSSL=falseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:configuration:map-underscore-to-camel-case: true #配置駝峰自動轉換log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #打印sql語句

4.1UserInfoMapper

在UserInfoMapper中主要根據用戶輸入姓名或者id查詢用戶信息:

  @Select("select * from user where delete_flag=0 and user_name=#{userName}")public UserInfo selectByName(String userName);/** 根據用戶ID查詢用戶信息* */@Select("select * from user where delete_flag=0 and id=#{id}")public UserInfo selectById(Integer id);

4.2BlogMapper

只要完成博客系統的核心內容:查詢所有博客,更新博客,發布博客

 /** 查詢博客列表* */@Select("select * from blog where delete_flag=0 order by create_time desc")public List<BlogList> selectAll();@Select("select * from blog where delete_flag=0 and id=#{id}")public BlogInfo selectById(Integer id);/*** 更新博客*/Integer updateBlog(BlogInfo blogInfo);/*** 發布博客*/@Insert("insert into blog (title, content, user_id) values (#{title}, #{content}, #{userId})")Integer insertBlog(BlogInfo blogInfo);

在更新的時候我們采用xml實現,而不采用注解來實現,使用xml的時候我們需要在配置文件中進行路徑的配置。

mybatis:mapper-locations:classpath:mapper/**Mapper.xml

再進行更新操作:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.springblog.mapper.BlogMapper">//實現對應的類<update id="updateBlog">//實現對應的方法update blog<set><if test="title!=null">title = #{title},</if><if test="content!=null">content = #{content},</if><if test="userId!=null">user_id = #{userId},</if><if test="deleteFlag!=null">delete_flag = #{deleteFlag},</if></set> where id=#{id}</update>       
</mapper>

到這里我們已經完成了數據層的數據庫實現。我i嗎可以自動生成測試類進行測試:
在這里插入圖片描述
在這里插入圖片描述
我以selectAll方法測試為例子,可以通過結果了解到它已經查找到數據庫所有內容,同學們可以對其他方法進行測試。

5.總結

這一部分我們主要數數據庫進行了設計,并對數據層進行了實現和測試,在下一篇文章中,我們就對用戶登錄和博客進行實現。

下期預告:項目日記(二)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42266.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

硬件開發筆記(二十四):貼片電容的類別、封裝介紹,AD21導入貼片電容、原理圖和封裝庫3D模型

若該文為原創文章&#xff0c;轉載請注明原文出處 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/140241817 長沙紅胖子Qt&#xff08;長沙創微智科&#xff09;博文大全&#xff1a;開發技術集合&#xff08;包含Qt實用技術、樹莓派、三維、OpenCV…

存儲結構與管理磁盤

前言&#xff1a;本博客僅作記錄學習使用&#xff0c;部分圖片出自網絡&#xff0c;如有侵犯您的權益&#xff0c;請聯系刪除 目錄 一、一切從“/”開始 二、物理設備的命名規則 三、文件系統與數據資料 四、掛載硬件設備 五、添加硬盤設備 六、添加交換分區 七、磁盤容…

如何在 PostgreSQL 中實現數據的增量備份和恢復?

文章目錄 一、增量備份的原理二、準備工作&#xff08;一&#xff09;環境配置&#xff08;二&#xff09;創建測試數據庫和表&#xff08;三&#xff09;插入初始數據 三、全量備份四、基于時間點的增量備份&#xff08;一&#xff09;開啟 WAL 歸檔&#xff08;二&#xff09…

政策公告與提醒

自 2024 年 4 月 3 日起,您將至少有 30 天的時間來更新應用,使其符合下方所述的政策變更。 我們將推出“兒童安全標準”政策,規定社交應用和約會交友應用必須遵循特定標準,并在 Play 管理中心內以自行認證的形式證明合規后才能發布。 為了提高健康相關應用在 Google Play…

docker 重要且常用命令大全

本文將總結一些常見的重要的docker命令&#xff0c;以作備忘。后續如果有新的比較常用重要的也會更新進來。歡迎補充。 docker服務管理 首先我們要解釋一下&#xff1a;systemctl和docker命令的不同 systemctl&#xff1a;是許多 Linux 發行版中默認的初始化系統和服務管理器。…

【ARMv8/v9 GIC 系列 5.4 -- 中斷分組與安全及優先級配置】

請閱讀【ARM GICv3/v4 實戰學習 】 文章目錄 Interrupt grouping and securityGICD_CTRL.DS 為0GICD_CTRL.DS 為 1中斷組優先級配置Common Binary Point Register中斷優先級與二進制點Common Binary Point RegisterInterrupt grouping and security ARM架構提供了兩種安全狀態…

11.常見的Bean后置處理器

CommonAnnotationBeanPostProcessor (Resource PostConstructor PreDestroy) AutowiredAnnotationBeanPostProcessor (Autowired Value) GenericApplicationContext是一個干凈的容器&#xff0c;它沒有添加任何的PostProcessor處理器。 調用GenericApplicationContext.refre…

賽元單片機開發工具SOC_Programming_Tool_Enhance_V1.50 分享

下載地址&#xff1a; SOC_Programming_Tool_Enhance_V1.50(LIB0D30).rar: https://545c.com/f/45573183-1320016694-557ebd?p7526 (訪問密碼: 7526)

docker中實現多機redis主從集群

redis主從集群是每個使用redis的小伙伴都必需知道的&#xff0c;那如何在docker中快速配置呢&#xff1f;這篇來教你快速上手&#xff0c;跟著復制完全就能用&#xff01;&#xff01; 1. 前置準備 1.1 docker安裝 以防有小伙伴沒預先安裝docker&#xff0c;這里提供安裝步驟…

視頻共享融合賦能平臺LnyonCVS國標視頻監控平臺包含哪些功能

隨著國內視頻監控應用的迅猛發展&#xff0c;系統接入規模不斷擴大。不同平臺提供商的接入協議各不相同&#xff0c;導致終端制造商在終端維護時需要針對不同平臺的軟件版本提供不同的維護&#xff0c;資源造成了極大的浪費。 為響應國家對重特大事件通過視頻監控集中調閱來掌…

QListWidget 縮略圖IconMode示例

1、實現的效果如下&#xff1a; 2、實現代碼 &#xff08;1&#xff09;頭文件 #pragma once #include <QtWidgets/QMainWindow> #include "ui_QListViewDemo.h" enum ListDataType { ldtNone -1, ldtOne 0, ldtTwo 1, }; struct ListData…

網絡協議與標準

協議&#xff1a; 語法 &#xff1b;計算機的算法&#xff0c;二進制 語義 &#xff1b;不要有出現歧義的 同步 &#xff1b; 同步還原信息&#xff0c;收發同步 標準&#xff1a; ISO&#xff08;國際標準化組織&#xff09; IEEE(電氣和電子工程師學會) 局域網技術 一.協議…

解決后端限制導致前端配置跨域仍請求失敗報504的問題

文章目錄 問題一、通過配置跨域方式二、直接真實接口請求三、解決方式四、后端這樣做的原因 總結 問題 前端項目設置跨域proxy處理&#xff0c;接口請求不會報跨域&#xff0c;但是接口請求報了504&#xff0c;這種情況如何處理呢&#xff0c;后端又為何要這么做&#xff0c;下…

汽車信息安全--歐盟汽車法規

目錄 General regulation 信息安全法規 R155《網絡安全及網絡安全管理系統》解析 R156《軟件升級與軟件升級管理系統》解析 General regulation 歐洲的汽車行業受到一系列法律法規的約束&#xff0c;包括 各個方面包括&#xff1a; 1.安全要求&#xff1a;《通用安全條例&a…

機器學習筑基篇,?Ubuntu 24.04 快速安裝 PyCharm IDE 工具,無需激活!

[ 知識是人生的燈塔&#xff0c;只有不斷學習&#xff0c;才能照亮前行的道路 ] Ubuntu 24.04 快速安裝 PyCharm IDE 工具 描述&#xff1a;雖然在之前我們安裝了VScode&#xff0c;但是其對于使用Python來寫大型項目以及各類配置還是比較復雜的&#xff0c;所以這里我們還是推…

AWS CloudWatch 權限管理指南

在 AWS 環境中,有效管理 CloudWatch 權限對于維護系統安全和優化運營效率至關重要。本文將詳細介紹 CloudWatch 的常用權限分類,并提供相應的 JSON 策略示例。 1. 概述 CloudWatch 權限可以大致分為以下幾類: 只讀訪問權限完全訪問權限日志管理權限告警管理權限指標管理權…

使用RAID與LVM磁盤陣列技術

前言&#xff1a;本博客僅作記錄學習使用&#xff0c;部分圖片出自網絡&#xff0c;如有侵犯您的權益&#xff0c;請聯系刪除 目錄 一、RAID磁盤冗余陣列 1、部署磁盤整列 2、損壞磁盤陣列及修復 3、磁盤陣列備份盤 4、刪除磁盤陣列 二、LVM邏輯卷管理器 致謝 一、RAID…

使用 PCA 可視化數據的分類能力

使用 PCA 探索數據分類的效果&#xff08;使用 Python 代碼&#xff09; 「AI秘籍」系列課程&#xff1a; 人工智能應用數學基礎人工智能Python基礎人工智能基礎核心知識人工智能BI核心知識人工智能CV核心知識 主成分分析 (PCA) 是數據科學家使用的絕佳工具。它可用于降低特征…

【QT】容器類控件

目錄 概述 Group Box 核心屬性 Tab Widget 核心屬性 核心信號 核心方法 使用示例&#xff1a; 布局管理器 垂直布局 核心屬性 使用示例&#xff1a; 水平布局 核?屬性 (和 QVBoxLayout 屬性是?致的) 網格布局 核心屬性 使用示例&#xff1a; 示例&#x…

2024亞太杯中文賽數學建模B題word+PDF+代碼

2024年第十四屆亞太地區大學生數學建模競賽&#xff08;中文賽項&#xff09;B題洪水災害的數據分析與預測&#xff1a;建立指標相關性與多重共線性分析模型、洪水風險分層與預警評價模型、洪水發生概率的非線性預測優化模型&#xff0c;以及大規模樣本預測與分布特征分析模型 …