当前位置: 首页 > news >正文

【论文+源码】基于Spring和Spring MVC的汉服文化宣传网站

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0022679f5cad49eaa699a854e1ff9044.png

为了实现一个基于Spring和Spring MVC的汉服文化宣传网站,我们需要创建一个简单的Web应用程序来展示汉服文化和相关信息。这个系统将包括以下几个部分:

  1. 数据库表设计:定义文章、用户和评论的相关表。
  2. 实体类:表示数据库中的数据。
  3. DAO层接口及MyBatis映射文件:用于与数据库交互。
  4. Service层接口及其实现类:业务逻辑处理。
  5. Controller层:处理HTTP请求。
  6. 前端页面:展示信息并允许用户操作。

1. 数据库表设计

假设我们有一个名为hanfu_culture的数据库,其中包含以下表:

  • articles
  • users
  • comments
CREATE TABLE articles (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,content TEXT NOT NULL,author_id INT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (author_id) REFERENCES users(id)
);CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(100) NOT NULL UNIQUE,email VARCHAR(100) NOT NULL UNIQUE,password VARCHAR(255) NOT NULL
);CREATE TABLE comments (id INT AUTO_INCREMENT PRIMARY KEY,article_id INT NOT NULL,user_id INT NOT NULL,comment_text TEXT NOT NULL,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,FOREIGN KEY (article_id) REFERENCES articles(id),FOREIGN KEY (user_id) REFERENCES users(id)
);

2. 实体类

创建Java实体类来表示这些表的数据。

Article.java

import java.sql.Timestamp;public class Article {private Integer id;private String title;private String content;private Integer authorId;private Timestamp createdAt;// Getters and Setters
}

User.java

public class User {private Integer id;private String username;private String email;private String password;// Getters and Setters
}

Comment.java

import java.sql.Timestamp;public class Comment {private Integer id;private Integer articleId;private Integer userId;private String commentText;private Timestamp createdAt;// Getters and Setters
}

3. DAO层接口及MyBatis映射文件

定义DAO层接口以及对应的XML映射文件。

ArticleDao.java

import java.util.List;public interface ArticleDao {List<Article> getAllArticles();Article getArticleById(int id);void addArticle(Article article);
}

ArticleMapper.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.dao.ArticleDao"><select id="getAllArticles" resultType="com.example.model.Article">SELECT * FROM articles ORDER BY created_at DESC</select><select id="getArticleById" parameterType="int" resultType="com.example.model.Article">SELECT * FROM articles WHERE id = #{id}</select><insert id="addArticle" parameterType="com.example.model.Article">INSERT INTO articles (title, content, author_id, created_at)VALUES (#{title}, #{content}, #{authorId}, NOW())</insert>
</mapper>

UserDao.java

import java.util.List;public interface UserDao {List<User> getAllUsers();User getUserById(int id);User getUserByUsername(String username);void addUser(User user);
}

UserMapper.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.dao.UserDao"><select id="getAllUsers" resultType="com.example.model.User">SELECT * FROM users</select><select id="getUserById" parameterType="int" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select><select id="getUserByUsername" parameterType="String" resultType="com.example.model.User">SELECT * FROM users WHERE username = #{username}</select><insert id="addUser" parameterType="com.example.model.User">INSERT INTO users (username, email, password)VALUES (#{username}, #{email}, #{password})</insert>
</mapper>

CommentDao.java

import java.util.List;public interface CommentDao {List<Comment> getCommentsByArticleId(int articleId);void addComment(Comment comment);
}

CommentMapper.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.dao.CommentDao"><select id="getCommentsByArticleId" parameterType="int" resultType="com.example.model.Comment">SELECT * FROM comments WHERE article_id = #{articleId} ORDER BY created_at ASC</select><insert id="addComment" parameterType="com.example.model.Comment">INSERT INTO comments (article_id, user_id, comment_text, created_at)VALUES (#{articleId}, #{userId}, #{commentText}, NOW())</insert>
</mapper>

4. Service层接口及其实现类

定义Service层接口及其实现类。

ArticleService.java

import java.util.List;public interface ArticleService {List<Article> getAllArticles();Article getArticleById(int id);void addArticle(Article article);
}

ArticleServiceImpl.java

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class ArticleServiceImpl implements ArticleService {@Autowiredprivate ArticleDao articleDao;@Overridepublic List<Article> getAllArticles() {return articleDao.getAllArticles();}@Overridepublic Article getArticleById(int id) {return articleDao.getArticleById(id);}@Overridepublic void addArticle(Article article) {articleDao.addArticle(article);}
}

UserService.java

import java.util.List;public interface UserService {List<User> getAllUsers();User getUse
http://www.lryc.cn/news/514148.html

相关文章:

  • 计算机的错误计算(一百九十九)
  • 【AI日记】25.01.02 kaggle 比赛 3-1
  • el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)
  • Ps:将数据组作为文件导出
  • nohup.out日志
  • 01 背包
  • QT-------------多线程
  • 【JVM】深入了解Java虚拟机-------内存划分、类加载机制、垃圾回收机制
  • k8s部署juicefs
  • 【ArcGIS微课1000例】0136:制作千层饼(DEM、影像、等高线、山体阴影图层)
  • Ajax数据爬取
  • 快速上手大模型的对话生成
  • DateTimeExtensions:一个轻量C#的开源DateTime扩展方法库
  • 题解:监控屏幕调整问题
  • C语言----指针
  • 树莓派之旅-在wsl-x86-64 上进行树莓派的交叉编译
  • nature reviews genetics | 需要更多的针对不同种族的癌症基因组图谱研究,促进精准治疗和维护治疗公平权益
  • 代码随想录算法训练营day18
  • Kafka安全优化文档:漏洞修复到安全加固
  • Markdown如何添加任务列表-复选框的添加
  • 基于下垂控制的构网变换器功率控制【微电网变流器】【Simulink】
  • AI定义汽车/跨域融合/整车智能,汽车智能化2.0时代新机会来了
  • (leetcode算法题)10. 正则表达式匹配
  • SpringCloudAlibaba实战入门之Sentinel服务降级和服务熔断(十五)
  • 使用爬虫技术获取网页中的半结构化数据
  • 2025/1/1 路由期末复习作业二
  • OpenCV-Python实战(13)——图像轮廓
  • javascript变量
  • 在K8S中,如何查看kubelet组件的日志?
  • android studio android sdk下载地址