Java——MVC架构编写游戏管理系统

本文介绍了如何使用Java和MVC架构开发一个游戏管理系统,详细讲解了从创建项目、配置环境到实现Model、Repository、Service、Controller和View各层的过程,强调了MVC架构在代码组织和可维护性上的优势。
摘要由CSDN通过智能技术生成

前言

在本篇博客中,我使用Java编写了一个游戏管理系统,采用了MVC(Model-View-Controller)架构。MVC架构将应用程序分为三个主要组件,这种分层架构使得代码更加模块化、可维护性更高,并且能更好地应对需求变化。

本篇博客仅供参考,更多的是自己的学习笔记,希望可以帮助到其他人。

一、运行环境

-IDE - IDEAIDEA是一种集成开发环境,用于编写、调试和运行Java代码。
-Spring Boot 3+Spring Boot是一个用于简化Spring应用程序开发的框架。版本3+表示使用Spring Boot的最新版本。
-Spring Framework 6+Spring Framework是一个用于构建企业级Java应用程序的框架。版本6+表示使用Spring Framework的最新版本。
-MavenMaven是一个用于构建和管理Java项目的工具。它可以自动下载所需的依赖项,并提供一种标准的项目结构和构建过程。
-Java 20Java是一种通用的编程语言,版本20表示使用Java的最新版本。
-Spring Data JPA(Hibernate)Spring Data JPASpring Framework的一部分,它提供了一种简化数据库访问的方式。Hibernate是一个流行的Java持久化框架,用于将Java对象映射到关系数据库。
-ThymeleafThymeleaf是一个用于构建Web应用程序的模板引擎。它可以将动态数据渲染到HTML页面中。

二、创建项目

2.1 创建新模块

在这里插入图片描述

2.2 选择依赖

在这里插入图片描述

-LombokLombok是一个Java库,用于通过注解自动化生成Java代码。它可以减少冗余的样板代码,例如gettersetter方法、构造函数等。
-Spring WebSpring WebSpring Framework的一部分,用于构建Web应用程序。它提供了处理HTTP请求和响应功能,包括路由、控制器、视图解析等。
-ThymeleafThymeleaf是一个用于构建Web应用程序的模板引擎。它可以将动态数据渲染到HTML页面中,使开发人员可以更轻松地生成动态内容。
-Spring Data JPASpring Data JPASpring Framework的一部分,它提供了一种简化数据库访问的方式。它使用JPA(Java Persistence API)标准来操作数据库,可以减少编写重复的CRUD(创建、读取、更新、删除)代码。
-MySQL DriverMySQL Driver是用于连接和操作MySQL数据库的Java驱动程序。它提供了与MySQL数据库进行通信的功能,包括建立连接、渲染动态内容和操作数据库。

2.3 对应的Maven依赖如下(pom.xml):

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
    </dependencies>

三、项目架构

3.1 项目结构

在这里插入图片描述

3.2 连接数据库

在这里插入图片描述

注意:因为我已经选择过MySQL了,所以它会出现在最前面,如果是第一次连需要到Complete Support中找。

在这里插入图片描述

3.3 配置数据库(application.properties):

# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.url=jdbc:mysql://localhost:3306/lirj?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
spring.datasource.username=root
spring.datasource.password=password

# Hibernate

# The SQL dialect makes Hibernate generate better SQL for the chosen database
spring.jpa.properties.hibernate.dialect =org.hibernate.dialect.MySQLDialect

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto = update

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

-lirj:这里换上自己的数据库名称。
-spring.datasource.password=passwordpassword为自己数据库的密码

四、Model层

模型层负责处理数据和业务逻辑。在我的游戏管理系统中,我使用了Java类来表示游戏对象,并实现了与游戏相关的各种功能,如添加游戏、删除游戏、更新游戏信息等。

package com.example.lirj.model;
import jakarta.persistence.*;
import lombok.Data;

@Data
@Entity
@Table(name = "game")

public class Game {
   

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(name = "name")
    private String name;
    @Column(name = "type")
    private String type;
    @Column(name = "price")
    private String price;
    @Column(name = "difficulty")
    private String difficulty;
}

这段代码是一个Java类,名为Game。它使用了Lombok库的@Data注解,自动生成了gettersetter方法等常见代码。该类使用了JPA注解,表示它是一个实体类,并映射到数拥库中的game表。
-@ld:注解表示id字段是该实体类的主键,并使用自增策略生成唯一标识符。
-@Column:注解用于指定字段在数据库表中的列名。
-id:表示游戏的唯一标识符。
-name:表示游戏的名称。
-type:表示游戏的类型。
-price:表示游戏的价格。
-difficulty:表示游戏的难度。
这些字段都是私有的,并通过gettersetter方法进行访问。

五、Repository层

Repository层负责数据的持久化和访问。它提供了与数据库或其他数据存储系统的交互接口,用于执行数据的增删改查操作。Repository层的主要职责是将数据访问逻辑与其他层(如控制器层和模型层)进行解耦,以提高代码的可维护性和可测试性。

package com.example.lirj.repository;
import com.example.lirj.model.Game;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface GameRepository extends JpaRepository<Game, Long> {
   
    @Query("select b from Game b where b.name like %:name%")
    List<Game> findAllByGame(@Param("name") String name);

}

这段代码是一个Java接口,名为GameRepository。它是一个Spring Data JPA的仓库接口,用于对Game实体进行数据库操作。
-@Repository:注解表示该接口是一个仓库组件,用于持久化操作。
这个接口继承了JpaRepository接口,通过继承可以获得—些常用的数据库操作方法。
-@Query:注解用于定义自定义的查询方法。这个查询方法使用了JPQL语句,通过name参数进行模糊查询,返回符合条件的Game对象列表。
这个接口定义了一个findAllByGame方法,用于根据游戏名称进行查询。

六、Service层

接口层负责处理用户的输入和与模型层的交互。它充当了控制器(Controller)和视图(View)之间的桥梁

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值