Java记账系统项目实战 | Spring Boot + MyBatis Plus + Layui 前后端整合开发

本项目为一款基于 Spring Boot 构建的简洁实用型 Java 记账系统,集成了 MyBatis Plus、Druid 数据源、Thymeleaf 模板引擎及 Layui 前端组件,实现了从账单录入、查询、统计到基础用户登录的完整功能流程。


🎯 页面预览截图(可选)

📌 登录页

📌 账单列表页

📌 添加账单弹窗

📌 数据可视化列表展示

📌 项目功能一览

  • 用户登录 + 验证码校验

  • 账单录入(含分类、时间、金额、备注)

  • 账单列表展示、查询筛选、分页加载

  • 分类信息缓存机制(AOP 实现)

  • 基于 MyBatis Plus 的代码生成与数据操作

  • 简洁前端界面(Layui + Thymeleaf)


🏗 技术选型

技术/工具 用途
Spring Boot 项目主框架
MyBatis Plus 持久层框架,简化SQL操作
Druid 数据源连接池及监控
Thymeleaf 页面模板引擎
Layui 前端组件库,快速构建表单和表格
Lombok 简化实体类代码
Hutool 工具类库
AOP 缓存实现(账单类型)

🧩 数据库配置(application.yml)

XML 复制代码
spring: 
    datasource:     
        druid:     
            driver-class-name: com.mysql.cj.jdbc.Driver 
            url:jdbc:mysql://127.0.0.1:3306/bills?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC 
            username: root 
            password: 123456

🔧 Maven 依赖配置(pom.xml)

主要依赖包括:

  • spring-boot-starter-web

  • mybatis-plus-boot-starter

  • druid-spring-boot-starter

  • thymeleaf

  • log4j

  • hutool-all

  • lombok

片段如下:

XML 复制代码
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
</dependency>

🧑‍💻 登录功能实现(含验证码)

使用 LoginController 实现用户登录:

java 复制代码
@RequestMapping("login")
@ResponseBody
public ResultObj login(String loginname,String pwd,String code,HttpSession session) {
    Object codeSession = session.getAttribute("code");
    if(code != null && code.equals(codeSession)) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("loginname", loginname);
        queryWrapper.eq("pwd", pwd);
        User user = userService.getOne(queryWrapper);
        return (user != null) ? new ResultObj(200, "登录成功") : new ResultObj(-1, "用户名或密码错误");
    } else {
        return new ResultObj(-1, "验证码错误");
    }
}

验证码采用 Hutool 提供的 CaptchaUtil 生成:

java 复制代码
CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(116, 36, 4, 5);
session.setAttribute("code", captcha.getCode());

📋 账单管理模块

💼 账单列表展示(list.html)

通过 Layui 的 table 组件实现分页数据加载:

bash 复制代码
table.render({
  elem: '#billTable',
  url: '/bills/loadAllBills',
  page: true,
  cols: [[
    {field:'title', title:'账单标题'},
    {field:'billtime', title:'记账时间'},
    {field:'typeName', title:'类型名称'},
    {field:'price', title:'账单金额'},
    {field:'remark', title:'账单备注'}
  ]]
});

📝 添加账单功能

通过点击按钮触发 Layui 弹出层,动态加载账单类型,并提交至后台:

bash 复制代码
$("#doAdd").on("click", function() {
  // 弹出添加表单
  layer.open({
    type: 1,
    content: $("#addBillDiv"),
    area: ['800px', '600px']
  });
});

⚡ 缓存优化:AOP实现账单类型缓存

通过 Spring AOP 实现简单的本地缓存机制:

java 复制代码
@Around(value="pc()")
public Object cacheBillType(ProceedingJoinPoint point) throws Throwable {
    Integer typeId = (Integer) point.getArgs()[0];
    Object cached = cache.get(BILL_TYPE_CACHE_PREFIX + typeId);
    if (cached != null) return cached;
    Billtype res = (Billtype) point.proceed();
    cache.put(BILL_TYPE_CACHE_PREFIX + res.getId(), res);
    return res;
}

🧠 项目适用场景

  • Java Web 实战练手项目

  • 中小企业财务系统雏形

  • 个人理财系统学习样例

  • 系统架构+前后端集成完整参考


✅ 结语

本项目功能完整,界面清爽,适合用于快速搭建 Web 账务管理系统的参考案例。如果你正在学习 Spring Boot、MyBatis Plus、Layui 等技术,这将是一个非常不错的实战模板!

💬 如需源码、演示效果或部署指导,欢迎评论交流!

相关推荐
win x6 分钟前
单例模式(线程安全)
java·单例模式
Eugene__Chen36 分钟前
java IO/NIO/AIO
java·python·nio
xixixin_1 小时前
【uniapp】uni.setClipboardData 方法失效 bug 解决方案
java·前端·uni-app
工业互联网专业1 小时前
基于springboot+vue的校园二手物品交易平台
java·vue.js·spring boot·毕业设计·源码·课程设计·校园二手物品交易平台
isfox1 小时前
一文拆解 Java CAS:从原理到避坑全攻略
java
JPC客栈1 小时前
LeetCode面试经典 150 题(Java题解)
java·leetcode·面试
HyperAI超神经1 小时前
【vLLM 学习】Aqlm 示例
java·开发语言·数据库·人工智能·学习·教程·vllm
异常驯兽师1 小时前
IntelliJ IDEA 项目导入后 Java 文件图标显示为红色小写 j 的解决方法
java·路径配置
纪元A梦1 小时前
华为OD机试真题——数据分类(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
java·javascript·c++·python·华为od·go·华为od机试题
常年游走在bug的边缘2 小时前
基于spring boot 集成 deepseek 流式输出 的vue3使用指南
java·spring boot·后端·ai