SpringBoot项目实战—难忘外卖开发:分类管理增删改查实践【03】
在现代电商和外卖系统中,分类管理是提升用户体验和运营效率的重要组成部分。一个高效的分类管理系统不仅能帮助用户快速找到所需商品,还能让管理员更加便捷地进行商品分类的增删改查操作。本文将以SpringBoot为基础,结合实际开发案例,详细讲解如何实现外卖系统中的分类管理功能。我们将重点介绍分页查询、分类增删改查、以及分类启用禁用的功能实现,通过具体的代码示例,帮助开发者快速掌握这一功能的实现技巧,提升开发效率和系统的可维护性。
一.分页管理查询
在外卖系统中,随着分类数量的不断增加,如何高效地展示和查询分类信息变得尤为重要。分页查询功能是解决这一问题的有效手段,它能够按需分批显示数据,避免一次性加载过多信息导致的性能问题。
在这一部分,我们将实现一个分页查询接口,能够根据前端传入的分页参数查询分类列表,并返回对应的分页数据。下面将通过具体的代码示例,展示如何在SpringBoot项目中实现分页查询功能。
分页查询接口:/admin/category/page
Query 参数:
控制层代码
@GetMapping("/page")
@ApiOperation(value = "分页查询")
public Result<PageResult> add(CategoryPageQueryDTO categoryPageQueryDTO) {
PageResult pageResult =classificationService.pageQuery(categoryPageQueryDTO);
return Result.success(pageResult);
}
服务层接口
PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO);
服务层实现类
@Override
public PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO) {
PageHelper.startPage(categoryPageQueryDTO.getPage(),categoryPageQueryDTO.getPageSize());
Page<Category> page = classificationMapper.pageQuery(categoryPageQueryDTO);
long total=page.getTotal();
List<Category> category=page.getResult();
return new PageResult(total,category);
}
PageHelper.startPage(categoryPageQueryDTO.getPage(),categoryPageQueryDTO.getPageSize());
这个是Mybatis的分页插件
<select id="pageQuery" resultType="com.sky.entity.Category">
select * from category
<where>
<if test="name != null and name != '' ">
and name like concat('%', #{name},'%')
</if>
</where>
order by create_time desc
</select>
实现效果如下
本章通过一个实际的分页查询功能的实现,展示了如何在SpringBoot项目中结合Mybatis进行数据的分页查询。具体步骤包括:
- 接口设计:通过GET请求的方式设计了分页查询接口,支持根据分类名称进行模糊查询,并接收分页参数(当前页和每页显示的条数)。
- 控制层实现:控制层接收分页查询请求,并调用服务层进行实际的数据查询。
- 服务层实现:服务层通过调用Mybatis的分页插件
PageHelper
来执行分页查询,获取分类数据并封装成分页结果返回。 - Mybatis Mapper SQL:在Mybatis的XML配置文件中,使用
<where>
标签动态拼接SQL,支持模糊查询,并根据创建时间进行排序。 - 实现效果:最终通过前端展示分页数据,实现了高效的数据查询和展示功能。
通过这部分内容,开发者可以掌握如何实现一个高效的分页查询接口,为系统处理大规模数据提供了有力的支持,也为后续功能的扩展打下了基础。
二.分类根据id删除分类删除
在分类管理系统中,删除分类是常见的操作之一。通常,管理员会根据分类的ID来删除某个特定的分类。本节将实现一个根据分类ID进行删除的功能。
接口:/admin/category
控制层
/**
* 根据ID删除
*
*/
@DeleteMapping
@ApiOperation(value = "根据ID删除")
private Result<PageResult> Delete(Integer id){
classificationService.DeleteByid(id);
return Result.success();
}
sql语句
<delete id="DeleteByid">
delete from category where id=#{id}
</delete>
这块比较简单直接跳过。
本章介绍了如何实现分类管理中的删除功能。通过提供一个根据分类ID删除分类的接口,我们实现了以下几个步骤:
- 接口设计:设计了一个DELETE请求接口,接收分类ID作为参数,并调用服务层方法进行删除操作。
- 服务层实现:服务层通过Mybatis的
<delete>
标签执行删除操作,从数据库中删除指定ID的分类。 - SQL语句:在Mybatis的XML文件中编写了删除语句,根据分类ID来执行删除。
- 简单实现:由于删除操作相对简单,重点是与数据库的交互和操作成功的反馈。
通过这一功能的实现,系统管理员可以方便地删除不需要的分类,保持数据的动态更新。这为后续的分类管理功能奠定了基础。
三.修改分类信息
在分类管理系统中,修改分类信息是常见的操作之一。管理员通常需要根据分类ID来修改该分类的名称、排序等信息。本节将介绍如何实现分类信息的修改功能。
PUT 类型 /admin/category
控制层如下
private Result<PageResult> Update(@RequestBody CategoryDTO categoryDTO){
// System.out.println(id);
System.out.println(categoryDTO);
classificationService.Update(categoryDTO);
return Result.success();
}
SQL语句如下
<update id="Upadte">
update category set name = #{name} ,sort =#{sort}
where id=#{id}
</update>
本章讲解了如何实现分类信息的修改功能。通过提供一个PUT请求接口,允许管理员根据分类ID修改指定分类的名称、排序等信息。具体实现步骤包括:
- 接口设计:设计了一个PUT请求接口,接收包含分类信息的DTO对象,并调用服务层进行更新操作。
- 服务层实现:在服务层,通过调用Mybatis的
<update>
标签执行更新操作,根据分类ID更新对应的分类信息。 - SQL语句:在Mybatis的XML文件中编写了更新语句,更新指定ID分类的名称和排序字段。
- 简单实现:修改操作简单直接,通过接收到的DTO对象更新数据库中的数据,并返回更新结果。
通过该功能,管理员可以方便地修改分类信息,确保分类数据的准确性和时效性。这为系统的灵活管理提供了支持。
四.启用禁用
在分类管理系统中,启用和禁用分类功能是常见的需求,特别是在需要暂时停用某些分类或者启用某些分类时,本节将展示如何实现该功能。
/**
* 启用禁用
*/
@PostMapping("/status/{status}")
@ApiOperation("启用禁用")
public Result<PageResult> state(@PathVariable Integer status, @RequestParam Integer id) {
System.out.println(status);
System.out.println(id);
classificationService.state(status,id);
return Result.success();
}
<update id="state">
update category set status =#{status}
where id=#{id}
</update>
实现效果如下
本章介绍了分类启用和禁用功能的实现。通过提供一个POST请求接口,管理员可以根据传入的状态值(启用或禁用)和分类ID,灵活地控制分类的状态。实现的关键步骤包括:
- 接口设计:设计了一个POST请求接口,接收状态和分类ID,执行启用或禁用操作。
- 服务层实现:在服务层,通过Mybatis的
<update>
标签更新分类的状态字段,根据传入的ID和状态执行更新操作。 - SQL语句:在Mybatis的XML文件中编写了更新语句,通过状态值(1或0)来控制分类的启用与禁用。
- 简洁实现:该功能实现简洁,能够即时切换分类的可用状态,帮助管理员管理分类的活跃状态。
通过该功能的实现,系统管理员可以在需要时轻松地启用或禁用分类,有效提高分类管理的灵活性和操作便捷性。
五.新增分类
接口:/admin/category
控制层;
/**
* 新增分类
*/
@PostMapping
@ApiOperation("新增分类")
public Result<PageResult> Add(@RequestBody CategoryDTO categoryDTO) {
System.out.println(categoryDTO);
classificationService.add(categoryDTO);
return Result.success();
}
服务层
@Override
public void add(CategoryDTO categoryDTO) {
Category category=new Category();
BeanUtils.copyProperties(categoryDTO,category);
category.setCreateTime(LocalDateTime.now());
category.setUpdateTime(LocalDateTime.now());
category.setCreateUser(BaseContext.getCurrentId());
category.setUpdateUser(BaseContext.getCurrentId());
classificationMapper.add(category);
}
MySQL语句
<insert id="add">
insert into category (id,name,sort,type,create_time,update_time)
VALUES (#{id},#{name},#{sort},#{type},#{createTime},#{updateTime})
</insert>
本节介绍了如何实现分类的新增功能,使得管理员可以根据需要在系统中添加新的分类。具体实现步骤如下:
- 接口设计:
- 定义了一个POST请求接口
/admin/category
,请求体接收分类的详细信息(CategoryDTO
)。 - 在控制层通过调用
classificationService.add(categoryDTO)
方法来执行新增操作。
- 定义了一个POST请求接口
- 服务层实现:
- 在服务层,将接收到的
CategoryDTO
对象转换为Category
实体对象,使用BeanUtils.copyProperties
进行属性复制。 - 设置新增分类的创建时间、更新时间、创建用户和更新用户。
- 通过调用
classificationMapper.add(category)
将分类信息保存到数据库中。
- 在服务层,将接收到的
- MySQL语句:
- 使用Mybatis的
<insert>
标签编写SQL插入语句,插入分类信息到数据库的category
表中,包括分类的ID、名称、排序、类型、创建时间和更新时间等字段。
- 使用Mybatis的
通过这个功能的实现,管理员能够在后台系统中动态地新增分类,确保系统的分类管理能够随着业务需求的变化灵活扩展。
总结
本文详细介绍了在基于SpringBoot的外卖系统中实现分类管理功能的具体步骤与实现。通过五大部分内容的讲解,展示了如何实现分类的增删改查(CRUD)操作,提升了系统的管理效率和用户体验。
- 分页管理查询:利用Mybatis分页插件实现了高效的分类列表查询,避免了一次性加载大量数据带来的性能问题。
- 分类删除功能:通过设计删除接口,允许管理员根据分类ID删除指定的分类。
- 修改分类信息:通过PUT请求实现了修改分类信息的功能,确保管理员能够及时更新分类的相关数据。
- 启用禁用功能:管理员可灵活地启用或禁用分类,通过POST请求控制分类的状态。
- 新增分类功能:通过设计新增分类接口,管理员能够动态地向系统添加新的分类,满足业务的不断扩展需求。
通过这些功能的实现,系统管理员能够高效地管理外卖平台的商品分类,提升了后台管理的灵活性与便捷性。本文不仅包含了详细的代码示例,还介绍了每个功能背后的实现原理,为开发者提供了一个全面的SpringBoot项目开发实践案例。