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

基于SSM(Spring + Spring MVC + MyBatis)框架的咖啡馆管理系统

基于SSM(Spring + Spring MVC + MyBatis)框架的咖啡馆管理系统是一个综合性的Web应用程序,用于管理和优化咖啡馆的运营。下面我将提供一个详细的案例程序概述,包括主要的功能模块和技术栈介绍。

项目概述

功能需求
  1. 用户管理:管理员可以添加、删除、修改和查询用户信息。
  2. 员工管理:记录员工信息,如姓名、职位、工资等。
  3. 菜单管理:支持对菜单项的增删改查操作,包括菜品名称、价格、类别等。
  4. 订单管理:处理订单信息,记录订单详情,包括下单时间、顾客信息、订单状态等。
  5. 库存管理:记录原材料库存,当库存低于预设值时发出警告。
  6. 财务报表:生成各类报表,如收入报表、支出报表等。
  7. 权限管理:不同用户有不同的操作权限。
  8. 顾客反馈:记录顾客的反馈信息,用于改进服务质量。
技术栈
  • 前端:HTML, CSS, JavaScript, JSP(或Thymeleaf等模板引擎)
  • 后端
    • 框架:Spring, Spring MVC, MyBatis
    • 数据库:MySQL
    • 服务器:Tomcat
  • 工具:Maven(项目构建和依赖管理)

项目结构

CoffeeShopManagementSystem
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com.example.coffeeshop
│   │   │       ├── controller
│   │   │       ├── service
│   │   │       ├── dao
│   │   │       └── entity
│   │   ├── resources
│   │   │   ├── mapper
│   │   │   ├── spring
│   │   │   └── mybatis-config.xml
│   │   └── webapp
│   │       ├── WEB-INF
│   │       │   └── web.xml
│   │       └── index.jsp
│   └── test
│       └── java
│           └── com.example.coffeeshop
└── pom.xml

关键技术点

  • Spring配置:使用spring-contextspring-webmvc进行IoC容器和Web应用配置。
  • MyBatis配置:配置数据源、事务管理器以及映射文件路径。
  • 数据访问层:通过MyBatis的Mapper接口实现对数据库的操作。
  • 服务层:处理业务逻辑,调用DAO层完成数据操作。
  • 控制层:处理前端请求,调用服务层并返回响应结果给前端。
  • 页面展示:使用JSP或Thymeleaf等技术实现前后端交互。

示例代码片段

MyBatis Mapper XML
<!-- src/main/resources/mapper/MenuItemMapper.xml -->
<mapper namespace="com.example.coffeeshop.dao.MenuItemDao">
    <select id="getMenuItemById" resultType="com.example.coffeeshop.entity.MenuItem">
        SELECT * FROM menu_item WHERE id = #{id}
    </select>
</mapper>
Entity 类
// src/main/java/com/example/coffeeshop/entity/MenuItem.java
public class MenuItem {
    private int id;
    private String name;
    private String category;
    private double price;
    // Getters and Setters
}
DAO 接口
// src/main/java/com/example/coffeeshop/dao/MenuItemDao.java
public interface MenuItemDao {
    MenuItem getMenuItemById(int id);
    List<MenuItem> getAllMenuItems();
    void addMenuItem(MenuItem menuItem);
    void updateMenuItem(MenuItem menuItem);
    void deleteMenuItem(int id);
}
Service 层
// src/main/java/com/example/coffeeshop/service/MenuItemService.java
@Service
public class MenuItemService {
    @Autowired
    private MenuItemDao menuItemDao;

    public MenuItem getMenuItemById(int id) {
        return menuItemDao.getMenuItemById(id);
    }

    public List<MenuItem> getAllMenuItems() {
        return menuItemDao.getAllMenuItems();
    }

    public void addMenuItem(MenuItem menuItem) {
        menuItemDao.addMenuItem(menuItem);
    }

    public void updateMenuItem(MenuItem menuItem) {
        menuItemDao.updateMenuItem(menuItem);
    }

    public void deleteMenuItem(int id) {
        menuItemDao.deleteMenuItem(id);
    }
}
Controller 层
// src/main/java/com/example/coffeeshop/controller/MenuItemController.java
@Controller
@RequestMapping("/menu")
public class MenuItemController {
    @Autowired
    private MenuItemService menuItemService;

    @GetMapping("/{id}")
    public String getMenuItemById(@PathVariable int id, Model model) {
        MenuItem menuItem = menuItemService.getMenuItemById(id);
        model.addAttribute("menuItem", menuItem);
        return "menuItemDetail";
    }

    @GetMapping("/")
    public String getAllMenuItems(Model model) {
        List<MenuItem> menuItems = menuItemService.getAllMenuItems();
        model.addAttribute("menuItems", menuItems);
        return "menuItemList";
    }

    @PostMapping("/")
    public String addMenuItem(@ModelAttribute MenuItem menuItem) {
        menuItemService.addMenuItem(menuItem);
        return "redirect:/menu/";
    }

    @PutMapping("/{id}")
    public String updateMenuItem(@PathVariable int id, @ModelAttribute MenuItem menuItem) {
        menuItem.setId(id);
        menuItemService.updateMenuItem(menuItem);
        return "redirect:/menu/";
    }

    @DeleteMapping("/{id}")
    public String deleteMenuItem(@PathVariable int id) {
        menuItemService.deleteMenuItem(id);
        return "redirect:/menu/";
    }
}

数据库表设计

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    password VARCHAR(50) NOT NULL,
    role VARCHAR(20) NOT NULL
);

CREATE TABLE employee (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    position VARCHAR(50) NOT NULL,
    salary DOUBLE NOT NULL
);

CREATE TABLE menu_item (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    category VARCHAR(50) NOT NULL,
    price DOUBLE NOT NULL
);

CREATE TABLE order (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(50) NOT NULL,
    order_time DATETIME NOT NULL,
    total_price DOUBLE NOT NULL,
    status VARCHAR(20) NOT NULL
);

CREATE TABLE order_item (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT NOT NULL,
    menu_item_id INT NOT NULL,
    quantity INT NOT NULL,
    FOREIGN KEY (order_id) REFERENCES order(id),
    FOREIGN KEY (menu_item_id) REFERENCES menu_item(id)
);

CREATE TABLE inventory (
    id INT AUTO_INCREMENT PRIMARY KEY,
    item_name VARCHAR(50) NOT NULL,
    quantity INT NOT NULL,
    threshold INT NOT NULL
);

CREATE TABLE feedback (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_name VARCHAR(50) NOT NULL,
    content TEXT NOT NULL,
    feedback_time DATETIME NOT NULL
);

运行项目

  1. 数据库初始化:运行上述SQL脚本创建数据库表。
  2. 配置文件:在src/main/resources目录下配置applicationContext.xmlspring-mvc.xmlmybatis-config.xml
  3. 启动服务器:使用Tomcat服务器启动项目。

示例配置文件

applicationContext.xml
<!-- src/main/resources/spring/applicationContext.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/tx
                           http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:component-scan base-package="com.example.coffeeshop" />

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/coffeeshop?useSSL=false&serverTimezone=UTC" />
        <property name="username" value="root" />
        <property name="password" value="password" />
    </bean>

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
        <property name="mapperLocations" value="classpath:mapper/*.xml" />
    </bean>

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.example.coffeeshop.dao" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>
spring-mvc.xml
<!-- src/main/resources/spring/spring-mvc.xml -->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/mvc
                           http://www.springframework.org/schema/mvc/spring-mvc.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.example.coffeeshop" />

    <mvc:annotation-driven />

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

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

相关文章:

  • Unity类银河战士恶魔城学习总结(P127 Stat ToolTip属性提示)
  • 等保测评怎么做?具体流程是什么?
  • 【Linux网络编程】简单的UDP网络程序
  • 24.11.13 机器学习 特征降维(主成份分析) KNN算法 交叉验证(K-Fold) 超参数搜索
  • Linux服务器定时执行jar重启命令
  • LeetCode105.从前序与中序遍历构造二叉树
  • 测度论原创(三)
  • AOP基于注解的切面表达式
  • 【自然语言处理与大模型】大模型(LLM)基础知识②
  • Linux基础学习笔记
  • MySQL库操作
  • MAC 安装 brew及其常用命令
  • 十七:Spring Boot (2)-- spring-boot-starter-web 依赖详解
  • 论文略读:GRAG:GraphRetrieval-Augmented Generation
  • Windows10 上安装 Docker 失败
  • 苍穹外卖day09超出配送范围前端不提示问题
  • el-scrollbar 动态更新内容 鼠标滚轮无效
  • Linux(CentOS)设置防火墙开放8080端口,运行jar包,接收请求
  • PHP实现身份证OCR识别API接口
  • Spring Boot环境下的知识分类与检索
  • Qt 软键盘设计
  • CSS 中三角形的绘制方法详解
  • 深度学习:解密图像、音频和视频数据的“理解”之道20241105
  • 2024年11月8日Github流行趋势
  • learnopencv系列二:U2-Net/IS-Net图像分割(背景减除)算法、使用背景减除实现视频转ppt应用
  • Ubuntu24安装MySQL