SpringBoot启用禁用员工/员工分页查询/编辑员工 --苍穹外卖day3

文章介绍了如何在SpringMVC中设计API,包括启用禁用员工功能,使用PathVariable获取路径参数,分页查询,以及员工信息的查询和编辑操作。展示了如何在Controller、Service和Mapper层实现这些功能,使用动态SQL和分页插件进行数据处理。
摘要由CSDN通过智能技术生成

启用禁用员工

Controller

路径参数前面加上@Path~注解来获取参数

@PostMapping("/status/{status}")
@ApiOperation("启用禁用员工")
public Result StartOrStop(@PathVariable("status") Integer status, Long id){
    log.info("启用禁用");
    employeeService.StartOrStop(status,id);
    return Result.success();
}

Service

创建一个完整的类方便mapper插入数据.用于层之间交换数据方便

使用builder需要加上@builder注解在原类上,然后可以通过以下方式快速构建对象

@Override
public void StartOrStop(Integer status, Long id) {

     Employee employee = Employee.builder().status(status).id(id).build();

    employeeMapper.update(employee);
}

Mapper

使用动态sql

id="update"意思是将这段sql代码取名为update,这样以后可以直接以这个名字来调用

parameterType="Employee"是指明,这个sql的传入参数是Emp格式,下面set的参数都会从中获取

使用<if>标签也可以防止sql注入

<update id="update" parameterType="Employee">

update employee
  <set>
  <if test ="name != null">name = #{name},</if>
  </set
>
 where id = #{id}

</update>

员工分页查询

Controller

使用Dto类方便前端页面传入的数据和Controller层交互

返回值使用Result.success中,可以返回Object类型的方法直接返回结果

pageResult类含有: 数据条数/数据集合

@GetMapping("/page")
@ApiOperation("员工分页查询")
public Result<PageResult> page(EmployeePageQueryDTO employeePageQueryDTO){
    log.info("员工分页查询,参数为{}",employeePageQueryDTO);

    PageResult pageResult = employeeService.pageQuery(employeePageQueryDTO);

    return Result.success(pageResult);
}

Service

使用分页查询插件(PageHelper),传入页码和每页记录数

这里的page<>中填入你的查询类,page是插件中自带的类,可以从中获取总记录数和结果,再封装到PageResult返回

    @Override
    public PageResult pageQuery(EmployeePageQueryDTO employeePageQueryDTO) 
{
   PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());

        Page<Employee> page =  employeeMapper.pageQuery(employeePageQueryDTO);

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

}

Mapper

resultType规定了数据结果的格式

<select id="pageQuery" resultType="com.sky.entity.Employee">
    select * from employee
    <where>
        <if test="name != null and name !=''">
            and name like concat('%',#{name},'%')
        </if>
    </where>
</select>

编辑员工

Controller

路径参数使用@PathVariable来接收

@GetMapping("/{id}")
@ApiOperation("查询员工信息")
public  Result<Employee> select(@PathVariable Long id){
    log.info("查询员工信息");
    Employee employee =  employeeService.select(id);
    return Result.success(employee);

}

@PutMapping
@ApiOperation("修改员工")
public Result update(@RequestBody EmployeeDTO employeeDTO){
    log.info("修改员工");
    employeeService.update(employeeDTO);
    return Result.success();
}

Service

update此时使用的是employee而非DTO,这时候需要用到对象拷贝

BeanUtils.copyProperties(employeeDTO,employee);

new一个employee, 然后把属性拷贝到里面去

@Override
public Employee select(Long id) {

    return employeeMapper.select(id);
}

@Override
public void update(EmployeeDTO employeeDTO) {
    Employee employee = new Employee();
    BeanUtils.copyProperties(employeeDTO,employee);
    employeeMapper.update(employee);
}

Mapper

@Select("select * from employee where id = #{id}")
Employee select(Long id);

void update(Employee employeeDTO);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值