目录
员工分页查询
需求分析
SQL
这里需要用到动态语句查询,就不用前面的注解了,在.xml配置文件里面写SQL语句
PageHelper类
PageHelper.startPage(employeePageQueryDTO.getPage(), employeePageQueryDTO.getPageSize());
此代码会使后续执行的第一条 SQL 语句自动添加上分页逻辑,等价于在 SQL 中添加LIMIT offset, pageSize
。
下载插件MyBatisX
能辅助识别SQL代码
楼主的bug:
- 在SQL语句这里把from写成了form,排错排了好久,谁懂
-
在Controller类里@GetMapping("/page")写成了@PostMapping("/page")
这里回顾一下get方法和post方法
根据业务需求选择合适的注解:查询操作优先用@GetMapping
,提交数据优先用@PostMapping
。
启用/禁用员工账号
这一块楼主没有跟着一句一句敲,自己尝试看着接口文档写了一下,碰到了几个问题
@PostMapping("/status/{status}")
@ApiOperation(value="启用或禁用员工id")
public Result startOrNot (@PathVariable("status") int status,Long id){
log.info("禁用或启用的员工id为{}", id);
employeeService.startOrNot(status,id);
return Result.success();
}
-
一开始没有用注解,没有提取出前端status的值
@PathVariable
是 Spring 框架中的一个注解,它的作用是从 URL 的路径里获取变量值。在你给出的代码里,@PathVariable("status") int status
会把 URL 路径中的 {status}
部分的值提取出来,并且将其赋给方法参数 status
。
2.在接口实现类那里,employee类的初始化方式
public void startOrNot(int status, Long id){
//方法一:简单且繁琐的方法
// Employee employee=new Employee();
// employee.setStatus(status);
// employee.setId(id);
//方法二:
Employee employee = Employee.builder()
.status(status)
.id(id)
.build();
employeeMapper.update(employee);
}
利用builder注解,可以很方便地创建实体;
3.在.xml配置SQL语句时
<update id="update" parameterType="com.sky.entity.Employee">
update employee
<set>
<if test="name!=null">name = #{name},</if>
<if test="username!=null">username = #{username},</if>
<if test="status!=null">status = #{status},</if>
<if test="password!=null">password = #{password},</if>
<if test="phone!=null">phone = #{phone},</if>
<if test="sex!=null">sex = #{sex},</if>
<if test="idNumber!=null">idNumber = #{idNumber},</if>
<if test="updateTime!=null">update_time = #{updateTime},</if>
<if test="updateUser!=null">update_user = #{updateUser},</if>
</set>
where id = #{id}
</update>
在 MyBatis 的映射文件里,parameterType="com.sky.entity.Employee"
表明这个 SQL 语句要接收一个 Employee
对象作为参数
修改员工信息
这里直接自己手敲,没遇到什么问题
导入菜品分类代码
导入代码之后,手按了一下compile,居然要重新配置数据库密码了