截止目前我们已经实现了员工管理模块的许多功能,后续再想想密码修改的实现。接下来我们尝试实现分类模块的功能,由于该模块的所有功能与员工管理模块大差不差,故全记录在此篇文章。

以下是我们需要实现的所有功能

image-20250304173525566

先从分类的分页查询开始,查看接口说明

image-20250304173636208

得知它的参数为一个数据传输对象DTO。

由于是新的模块,我们新建控制层CategoryController类,业务层CategoryService接口和它的实现类CategoryServiceImpl类,持久层CategoryMapper类和它的配置文件CategoryMapper.xml。

CategoryController:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* 分类管理
*/
@RestController
@RequestMapping("/admin/category")
@Slf4j
@Api(tags = "分类相关接口")
public class CategoryController {

@Autowired
private CategoryService categoryService;

/**
* 分类分页查询
* @param categoryPageQueryDTO
* @return
*/
@GetMapping("/page")
@ApiOperation("分类分页查询")
public Result<PageResult> page(CategoryPageQueryDTO categoryPageQueryDTO) {
log.info("分类分页查询,参数为:{}",categoryPageQueryDTO);
PageResult pageResult = categoryService.pageQuery(categoryPageQueryDTO);
return Result.success(pageResult);
}

}

CategoryService:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Service
public class CategoryServiceImpl implements CategoryService {

@Autowired
private CategoryMapper categoryMapper;

/**
* 分类分页查询
* @param categoryPageQueryDTO
* @return
*/
@Override
public PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO) {
//select *from category limit 0,10
//利用mybatis的pagehelper
PageHelper.startPage(categoryPageQueryDTO.getPage(),categoryPageQueryDTO.getPageSize());
Page<Category> page = categoryMapper.pageQuery(categoryPageQueryDTO);

long total = page.getTotal();
List<Category> list = page.getResult();
return new PageResult(total,list);
}
}

CategoryMapper:

1
2
3
4
5
6
7
8
9
10
@Mapper
public interface CategoryMapper {
/**
* 分页查询
*
* @param categoryPageQueryDTO
* @return
*/
Page<Category> pageQuery(CategoryPageQueryDTO categoryPageQueryDTO);
}

CategoryMapper.xml:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.CategoryMapper">
<select id="pageQuery" resultType="com.sky.entity.Category">
select * from category
<where>
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
<if test="type != null">and type = #{type}</if>
</where>
order by create_time desc
</select>
</mapper>

特别注意:

SQL 中的 WHERE 子句不支持用逗号分隔多个条件。条件之间应该用逻辑运算符(如 ANDOR)连接。