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

【论文+源码】基于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 {
   

    @Autowired
    private ArticleDao articleDao;

    @Override
    public List<Article> getAllArticles() {
   
        return articleDao.getAllArticles();
    }

    @Override
    public Article getArticleById(int id) {
   
        return articleDao.getArticleById(id);
    }

    @Override
    public void addArticle(Article article) {
   
        articleDao.addArticle(article);
    }
}

UserService.java

import java.util.List;

public interface UserService {
   
    List<User> getAllUsers();
    User getUse

http://www.kler.cn/a/464586.html

相关文章:

  • Windows提示msvcp120.dll丢失怎么解决?Windows文件丢失的4种解决方法,教你修复msvcp120.dll文件
  • Docker 容器内部如何访问本机的服务
  • Jetpack Compose 学习笔记(四)—— CompositionLocal 与主题
  • 模型参数公式与代码对应
  • 一文讲明白朴素贝叶斯算法及其计算公式(入门普及)
  • RabbitMq的Java项目实践
  • Excel 身份证号计算年龄
  • super_vlan
  • 基于springboot的社区维修平台
  • 【Go学习】-01-2-常见类型及关键字
  • 我的线代观-秩(向量,矩阵)
  • 船用能源管理系统:绿色航运的未来之匙
  • 计算机网络•自顶向下方法:OSPF、BGP与ICMP协议
  • 刷服务器固件
  • 常见的游戏网站大全
  • MySQL-InnoDB数据存储结构
  • 将一个变量声明为全局变量比如:flag1=false;然后通过jQuery使用js一个方法,将它设置为不可修改
  • Linux之ARM(MX6U)裸机篇----7.蜂鸣器实验
  • 2025吉林大学软件学院研究生人工智能原理真题
  • Github拉取项目报错解决
  • 开源简史与概览
  • std__invoke 的使用
  • Windows 11 系统中npm-cache优化
  • 机器学习作业 | 泰坦尼克号生存的预测任务
  • ruoyi开发学习
  • 点击取消按钮,console出来数据更改了,页面视图没有更新