Tlias 员工与部门管理

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("操作失败");
    }
}