分享一套适合做课设的SpringBoot商城系统

发布于:2025-03-03 ⋅ 阅读:(19) ⋅ 点赞:(0)

开学季到了,不少同学都进入了学习的状态中去了,趁着今天有空来分享一套商城系统,这套代码实现了商城的前后台,整体界面和代码非常简洁,熟悉项目之后可以根据需求进行二次开发,也适合用来做毕设、课设,技术栈是SpringBoot+MySQL+JPA+Thymeleaf。如果有搭建环境、需要讲解的同学也可以私信 gong【橙晴丰Ciao】回复【商城1650】。接下来讲解下项目的功能和技术栈。

项目介绍

用户端

展示部分功能。

首页

在这里插入图片描述

登录页面

在这里插入图片描述

详情页

在这里插入图片描述

我的订单

在这里插入图片描述

管理端

登录页面

在这里插入图片描述

用户管理

在这里插入图片描述

分类管理

在这里插入图片描述

订单管理

在这里插入图片描述

商品管理

在这里插入图片描述

技术栈

SpringBoot

Spring Boot 是一个用于简化 Spring 应用开发的开源框架,能够快速构建独立应用,同时减少繁琐的配置。很多web应用都是基于它开发的,做过javaweb的同学但是没使用过SpringBoot可以用这个项目练手。

MySQL

进行数据的存储。

JPA

很多同学可能之前都是用的MyBatis或者MyBatis-Plus进行数据库操作的,在这套代码里可以熟悉JPA的使用,毕竟目前很多项目也有用JPA。
JPA(Java Persistence API)是 Java 的持久化规范,用于简化数据库操作。它通过对象关系映射(ORM)将 Java 对象与数据库表关联,开发者可以直接操作对象而非 SQL。在 Spring Boot 中,通常结合 spring-boot-starter-data-jpa 使用。以下是核心用法:

  1. 快速集成 JPA
    1.1 添加依赖
    在 pom.xml 中引入:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- 数据库驱动,如 MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    

    1.2 配置数据源
    在 application.properties 或 application.yml 中配置数据库连接:

    spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useSSL=false
    spring.datasource.username=root
    spring.datasource.password=123456
    spring.jpa.hibernate.ddl-auto=update  # 自动创建/更新表结构
    spring.jpa.show-sql=true               # 显示 SQL 语句(调试用)
    
  2. 核心用法
    2.1 定义实体类(Entity)
    用 @Entity 注解标记类,@Id 标记主键:

    @Entity
    @Table(name = "user")  // 对应数据库表名(默认类名小写)
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)  // 自增主键
        private Long id;
        
        @Column(name = "user_name", length = 50)  // 自定义字段名和长度
        private String name;
        
        private Integer age;
        
        // 必须有无参构造方法
        // Getter 和 Setter(省略,可用 Lombok @Data)
    }
    

    2.2 定义 Repository 接口
    继承 JpaRepository 获得基础的 CRUD 方法:

    public interface UserRepository extends JpaRepository<User, Long> {
        // 无需实现类!Spring Data JPA 自动生成代理
        
        // 自定义查询方法(按命名规则自动生成 SQL)
        List<User> findByName(String name);
        
        // 复杂查询可用 @Query 注解
        @Query("SELECT u FROM User u WHERE u.age > :age")
        List<User> findUsersOlderThan(@Param("age") int age);
    }
    

    2.3 使用 Repository 操作数据库
    在 Service 或 Controller 中注入 Repository:

    @Service
    public class UserService {
        @Autowired
        private UserRepository userRepository;
    
        // 新增
        public User saveUser(User user) {
            return userRepository.save(user);
        }
    
        // 查询所有
        public List<User> getAllUsers() {
            return userRepository.findAll();
        }
    
        // 按名称查询
        public List<User> findByName(String name) {
            return userRepository.findByName(name);
        }
    }
    
  3. 常用操作示例
    3.1 CRUD 方法

    // 新增或更新
    userRepository.save(user);
    
    // 按 ID 查询
    Optional<User> user = userRepository.findById(1L);
    
    // 删除
    userRepository.deleteById(1L);
    
    // 分页查询
    Page<User> users = userRepository.findAll(PageRequest.of(0, 10));  // 第1页,每页10条
    

    3.2 自定义查询
    方法名自动推导(无需写 SQL):

    List<User> findByAgeGreaterThan(int age);
    List<User> findByNameAndAge(String name, int age);
    手动编写 SQL(使用 @Query):
    @Query("SELECT u FROM User u WHERE u.name LIKE %:keyword%")
    List<User> searchByKeyword(@Param("keyword") String keyword);
    
  4. 常见问题
    Q1: JPA 和 Hibernate 的关系?
    JPA 是规范,Hibernate 是其最流行的实现。Spring Data JPA 在 Hibernate 基础上进一步简化操作。
    Q2: 是否需要手动建表?
    配置 spring.jpa.hibernate.ddl-auto=update 后,JPA 会根据实体类自动创建或更新表结构。
    Q3: 如何自定义复杂 SQL?
    使用 @Query 注解编写 JPQL(类似 SQL 的面向对象查询语言)或原生 SQL:

    @Query(value = "SELECT * FROM user WHERE age > ?1", nativeQuery = true)
    List<User> findUsersOlderThanNative(int age);
    

Thymeleaf

大多数同学可能不太熟悉,是用来做前端模板渲染的,在我的其他文章中有详细的用法,花了一小时就能掌握了。

代码介绍

在这里插入图片描述

aspect

切面aop是Spring中非常重要的特性,这里主要是异常和日志的统一处理。

dao

数据库连接层代码,对数据库进行操作代码的存储位置。

entity

实体类,跟表一一对应。

filter

过滤器,这里存放着权限拦截器的代码。

service

service层代码,用来进行业务处理。

utils

项目工具类。

web

项目的controller层存放位置,有admin和user两个权限的操作入口代码。