Tlias 员工与部门管理

1 接口规范

2 开发流程

3 示例

3.1 查询部门
- slf4j 是日志注解
@Slf4j
@RestController
public class DeptController {
@Autowired
private DeptService deptService;
@GetMapping("/depts")
public Result list(){
// System.out.println("查询全部数据");
log.info("查询全部数据");
List<Dept> deptList= deptService.list();
return Result.success(deptList);
}
public interface DeptService {
List<Dept> list();
}
@Service
public class DeptServiceImp implements DeptService {
@Autowired
private DeptMapper deptMapper;
@Override
public List<Dept> list() {
return deptMapper.list();
}
}
@Mapper
public interface DeptMapper {
/**
* 查询全部部门
* 简单, 使用注解的方式开发
* @return
*/ @Select("select * from dept")
List<Dept> list();
}
- controller 调用 Service 的默认实现类 DeptServiceImp, 调用 DeptMapper 访问数据库.
3.2 优化 路径提取

3.3 分页查询 pageHelper

3.4 条件查询
//controller
@GetMapping("/emps")
public Result page(Integer page, Integer pageSize, String name ,
Short gender,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end) {
page = page==null?1:page;
pageSize = pageSize==null?10:pageSize;
log.info("分页查询参数{},{},{},{},{},{}",page,pageSize,name,gender,begin,end);
PageBean pageBean = empService.page(page,pageSize,name,gender,begin,end);
return Result.success(pageBean);
}
//Service
PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
// Service 实现
@Override
public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin,LocalDate end) {
// 原始分页查询
// Long count = empMapper.count();
// List<Emp> page1 = empMapper.page((page-1)*pageSize, pageSize);
PageHelper.startPage(page, pageSize);
Page<Emp> p = (Page<Emp>) empMapper.list(name, gender, begin, end);
return new PageBean(p.getResult(),p.getTotal());
}
// empMapper
List<Emp> list(String name, Short gender, LocalDate begin, LocalDate end);
<select id="list" resultType="org.hzl.pojo.Emp">
select * from emp <where>
<if test="name!=null and name!='' ">name like concat('%',#{name},'%')</if>
<if test="gender!=null">and gender = #{gender}</if>
<if test="begin!=null and end!=null">and entrydate between #{begin} and #{end}</if>
</where>
order by update_time desc</select>
3.5 删除员工
@DeleteMapping("/emps/{ids}")
public Result delete(@PathVariable("ids")List<Integer> ids) {
log.info("批量删除{}",ids);
empService.delete(ids);
return Result.success();
}
// Service
void delete(List<Integer> ids);
// Service 实现类
@Override
public void delete(List<Integer> ids) {
empMapper.delete(ids);
}
// empMapper
void delete(List<Integer> ids);
<delete id="delete">
delete from emp where id in <foreach collection="ids" item = "id" separator="," open = "(" close = ")">
#{id}
</foreach>
</delete>
3.6 文件上传
3.7 修改员工
- 注意逗号不要缺
<update id="update">
update emp <set>
<if test="username!=null and username!=''">
username = #{username},
</if>
<if test="name!=null and name!=''">
name = #{name},
</if>
<if test="gender!=null">
gender = #{gender},
</if>
<if test="image!=null">
image = #{image},
</if>
<if test="job!=null ">
job = #{job},
</if>
<if test="entrydate!=null ">
entrydate = #{entrydate},
</if>
<if test="deptId!=null">
dept_id = #{deptId},
</if>
<if test="updateTime!=null">
update_time = #{updateTime}
</if>
</set>
where id = #{id}
</update>
4 配置文件
4.1 properties
4.1.1 @Value

4.2 yml (推荐)


- 数值前要有空格: port: 9000, 9000前要有空格
- 缩进是空格, 不是tab
- 同级左侧对其

4.3 @ConfigurationProperties
- 自动注入


5 异常处理


org.hzl.exception
@RestControllerAdvice
public class GlobalException {
@ExceptionHandler(Exception.class)
public Result exception(Exception e) {
e.printStackTrace();
return Result.error("操作失败");
}
}