T31-DAY11(通用代码编写)

29 篇文章 1 订阅

1.通用树形结构BaseTreeEntity

@Data
@JsonIgnoreProperties(value = {"handler"})
public class BaseTreeEntity extends BaseEntity {
    /**
     * 排序字段
     */
    @TableField("`order`")
    private Integer order;
    /**
     * ⽗节点id
     */
    @TableField("`parent_id`")
    private Long parentId;
    /**
     * 节点名称
     */
    @TableField("`title`")
    private String title;
    /**
     * 是否展开节点
     */
    @TableField("`expand`")
    private Boolean expand = false;
}

2.通用构造树方法

/**
 * @Date 2021年11月6日
 * @author 亦疏
 */
public class BuildTreeUtils<T extends BaseTreeDto> {

    public List<T> buildTree(List<T> entities){
        //根据parentId分组
        Map<Long,  List<T>> map = entities.stream().collect(Collectors.groupingBy(T::getParentId));
        //节点指向各自的子节点
        entities.forEach(e->e.setChildren(map.get(e.getId())));
        //找出根节点
        entities = entities.stream().filter(a->a.getParentId()==1).collect(Collectors.toList());
        return entities;
    }
}

3.通用BaseEntity

@Data
@JsonIgnoreProperties(value = {"handler"})
public abstract class BaseEntity implements Serializable {
    /**
     * 实体编号(唯⼀标识)
     */
    @TableId(value = "`id`", type = IdType.AUTO)
    protected Long id;

}

4.通用dao

@Data
public class BaseTreeDto extends BaseTreeEntity {
    private List<? extends BaseTreeDto> children;
}

5.通用service

public interface ICrudService<T extends BaseEntity> extends IService<T> {
    /**
     * 分⻚查询⽅法
     * @param entity
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageInfo<T> listPage(T entity, int pageNum, int pageSize);
    /**
     * 查询所有⽅法
     * @param entity
     * @return
     */
    List<T> list(T entity);
}

6.通用service实现类

public class CrudServiceImpl<T extends BaseEntity> extends
        ServiceImpl<ICrudDao<T>, T> implements ICrudService<T> {
    @Override
    public PageInfo<T> listPage(T entity, int pageNum, int pageSize) {
        return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() ->
        {
            baseMapper.selectByPage(entity);
        });
    }
    @Override
    public List<T> list(T entity) {
        return getBaseMapper().selectList(Wrappers.emptyWrapper());
    }
}


7.通用控制器

public abstract class BaseController<S extends ICrudService<T>, T extends
        BaseEntity> {
    @Autowired
    protected S      service;
    protected Logger log = LoggerFactory.getLogger(this.getClass());

    /**
     * 加载
     *
     * @param id
     * @return
     * @throws Exception
     */
    @ApiOperation(value = "加载", notes = "根据ID加载")
    @GetMapping("/edit/{id}")
    public T edit(@PathVariable Long id) throws Exception {
        T entity = service.getById(id);
        afterEdit(entity);
        return entity;
    }

    @ApiOperation(value = "分⻚查询", notes = "分⻚查询")
    @PostMapping("/list-page")
    public PageInfo<T> listPage(T entity,
                                @RequestParam(name = "page", defaultValue = "1",
                                        required = false) int page,
                                @RequestParam(name = "rows", defaultValue = "10",
                                        required = false) int rows) {
        PageInfo<T> result = service.listPage(entity, page, rows);
        return result;
    }

    @ApiOperation(value = "查询", notes = "根据实体条件查询")
    @RequestMapping(value = "/list", method = {RequestMethod.POST,
            RequestMethod.GET})
    public List<T> list(T entity) {
        List<T> list = service.list(entity);
        return list;
    }

    /**
     * 增加,修改
     */
    @ApiOperation(value = "保存", notes = "ID存在修改,不存在添加")
    @PostMapping("/save")
    public ResponseBean save(T entity) throws Exception {
        ResponseBean rm = new ResponseBean();
        try {
            beforeSave(entity); //保存前处理实体类
            service.saveOrUpdate(entity);
            rm.setModel(entity);
        } catch (Exception e) {
            e.printStackTrace();
            rm.setSuccess(false);
            rm.setMsg("保存失败");
        }
        return rm;
    }

    /**
     * 删除
     */
    @ApiOperation(value = "删除", notes = "根据ID删除")
    @GetMapping("/delete/{id}")
    public ResponseBean delete(@PathVariable Long id) throws Exception {
        ResponseBean rm = new ResponseBean();
        try {
            service.removeById(id);
            rm.setModel(null);
        } catch (Exception e) {
            e.printStackTrace();
            rm.setSuccess(false);
            rm.setMsg("保存失败");
        }
        return rm;
    }

    /**
     * 批量删除
     */
    @ApiOperation(value = "删除", notes = "批量删除")
    @RequestMapping(value = "/delete", method = {RequestMethod.POST,
            RequestMethod.GET})
    public ResponseBean delete(@RequestParam List<Long> ids) {
        ResponseBean rm = new ResponseBean();
        try {
            service.removeByIds(ids);
        } catch (Exception e) {
            e.printStackTrace();
            rm.setMsg("删除失败");
            rm.setSuccess(false);
        }
        return rm;
    }

    /**
     * 保存前执⾏
     *
     * @param entity
     * @throws Exception
     */
    public void beforeSave(T entity) throws Exception {
    }

    /**
     * 模板⽅法:在加载后执⾏
     *
     * @param entity
     */
    public void afterEdit(T entity) {
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值