ajax前后端分离品牌管理项目

项目总结:基于Java+MyBatis+Vue的品牌管理系统

在这篇博客中,我将总结一个基于Java、MyBatis和Vue的品牌管理系统的开发过程。该项目实现了品牌信息的增删改查(CRUD)、分页查询、条件查询等功能,并通过Vue.js和Element UI构建了前端页面。以下是项目的详细总结和必要的代码片段。


一、项目概述

该项目是一个品牌管理系统,主要功能包括:

  1. 品牌信息的增删改查:支持添加、修改、删除和查询品牌信息。
  2. 分页查询:支持分页展示品牌数据。
  3. 条件查询:根据品牌名称、企业名称和状态进行模糊查询。
  4. 批量删除:支持一次性删除多个品牌。
  5. 前端页面:使用Vue.js和Element UI构建,提供了友好的用户界面。

二、技术栈

  • 后端:Java、MyBatis、Servlet
  • 前端:Vue.js、Element UI、Axios
  • 数据库:MySQL
  • 工具:Logback(日志管理)

三、核心功能实现

1. 后端实现

后端主要通过MyBatis和Servlet实现品牌管理的核心逻辑。

1.1 MyBatis Mapper
  • BrandMapper.java:定义了品牌管理的数据库操作接口。
  • BrandMapper.xml:通过XML配置实现动态SQL,支持条件查询和批量删除。
xml 复制代码
<!-- 批量删除 -->
<delete id="deleteByIds">
    delete from tb_brand where id in
    <foreach collection="ids" item="id" separator="," open="(" close=")">
        #{id}
    </foreach>
</delete>

<!-- 条件查询 -->
<select id="selectByCondition" resultMap="brandResultMap">
    select * from tb_brand
    <where>
        <if test="brand.status != null">
            and status = #{brand.status}
        </if>
        <if test="brand.brandName != null and brand.brandName != ''">
            and brand_name like #{brand.brandName}
        </if>
        <if test="brand.companyName != null and brand.companyName != ''">
            and company_name like #{brand.companyName}
        </if>
    </where>
    limit #{begin}, #{size}
</select>
1.2 Servlet处理请求
  • BrandServlet.java:处理前端发送的HTTP请求,调用Service层完成业务逻辑,并返回JSON格式的响应。
java 复制代码
@WebServlet("/brand/*")
public class BrandServlet extends BaseServlet {
    private BrandService brandService = new BrandServiceImpl();

    public void selectAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        List<Brand> brands = brandService.selectALl();
        String jsonString = JSON.toJSONString(brands);
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write(jsonString);
    }

    public void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        BufferedReader reader = req.getReader();
        String readLine = reader.readLine();
        Brand brand = JSON.parseObject(readLine, Brand.class);
        brandService.add(brand);
        resp.getWriter().write("success");
    }
}
2. 前端实现

前端使用Vue.js和Element UI构建,通过Axios与后端进行数据交互。

2.1 品牌列表展示
  • 使用Element UI的el-table组件展示品牌数据,支持分页和条件查询。
html 复制代码
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange">
    <el-table-column type="selection" width="55"></el-table-column>
    <el-table-column prop="brandName" label="品牌名称" align="center"></el-table-column>
    <el-table-column prop="companyName" label="企业名称" align="center"></el-table-column>
    <el-table-column prop="ordered" label="排序" align="center"></el-table-column>
    <el-table-column prop="status" label="当前状态" align="center"></el-table-column>
    <el-table-column label="操作" align="center">
        <el-button type="primary" @click="update">修改</el-button>
        <el-button type="danger" @click="deleteBrand">删除</el-button>
    </el-table-column>
</el-table>
2.2 分页功能
  • 使用Element UI的el-pagination组件实现分页功能。
html 复制代码
<el-pagination
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-sizes="[5, 10, 15, 20]"
    :page-size="currentSize"
    layout="total, sizes, prev, pager, next, jumper"
    :total="totalCount">
</el-pagination>
2.3 条件查询
  • 通过表单输入条件,调用后端接口进行查询。
javascript 复制代码
methods: {
    selectAll() {
        axios({
            method: "post",
            url: `http://localhost:8080/brand-demo/brand/selectByCondition?currentPage=${this.currentPage}&currentSize=${this.currentSize}`,
            data: this.brand
        }).then(res => {
            this.tableData = res.data.rows;
            this.totalCount = res.data.totalCount;
        });
    }
}

四、项目亮点

  1. 前后端分离:前端使用Vue.js,后端使用Java+MyBatis,通过RESTful API进行数据交互。
  2. 动态SQL:通过MyBatis的动态SQL实现灵活的条件查询和批量删除。
  3. 分页查询 :结合MyBatis的LIMITOFFSET实现高效的分页查询。
  4. 前端交互友好:使用Element UI组件库,提供了美观且易用的用户界面。

五、未来优化方向

  1. 引入Spring Boot:简化项目配置,提升开发效率。
  2. 用户权限管理:增加用户登录和权限控制功能。
  3. 前端表单验证:增强表单输入的验证逻辑,提升用户体验。
  4. 日志管理:优化日志输出,便于问题排查和系统监控。

六、学习心得

通过该项目,我掌握了以下技能:

  • MyBatis的使用:包括注解开发和XML配置,尤其是动态SQL的实现。
  • 前后端分离开发:使用Vue.js和Axios与后端进行数据交互。
  • 分页查询的实现:结合MyBatis和前端分页组件,实现高效的数据展示。

未来,我计划继续学习Spring Boot和前端框架,进一步提升全栈开发能力。


源码地址 :[www.github.com/yq123456789...]
效果截图: 希望通过这篇博客记录我的学习历程,也欢迎大家一起交流探讨!

相关推荐
用户99045017780099 分钟前
JeecgFlow之Camunda开发脚手架介绍,让天下没有难用的工作流
后端
敖行客 Allthinker9 分钟前
Go 语言中 panic 和 recover 的代价:性能与设计的权衡
开发语言·后端·golang
谦行1 小时前
前端视角 Java Web 入门手册 4.4:Web 开发基础—— Listener
java·后端
非优秀程序员2 小时前
使用Python给自己网站生成llms.txt
人工智能·后端·架构
尘鹄2 小时前
一文讲懂Go语言如何使用配置文件连接数据库
开发语言·数据库·后端·golang
benben0442 小时前
Django小白级开发入门
后端·python·django
qw9493 小时前
SpringBoot3—场景整合:环境准备
java·后端
孟and平5 小时前
Flask 打包为exe 文件
后端·python·flask
大只因bug7 小时前
基于Django的协同过滤算法养老新闻推荐系统的设计与实现
后端·python·django·协同过滤算法推荐系统·新闻推荐网站系统·养老新闻推荐系统·个性化新闻推荐网站系统
_TokaiTeio11 小时前
JVM面试题100
java·开发语言·jvm·后端·虚拟机