2020-12-10
1.性能优化问题:对于有共同点的数据可以存为Map对象再来进行查询,避免多余的重复查询
优化前
List<Label> collect = dataList.stream()
.flatMap(x -> {
List<Label> labels = new ArrayList<>();
if (x.getPid() == 0) {
labels.add(x);
labels.addAll(getSecondLabelsById(x.getId()));
} else {
labels.add(x);
labels.add(baseMapper.selectOne(Wrappers.<Label>lambdaQuery().eq(Label::getId, x.getPid())));
}
return labels.stream();
}).distinct().collect(Collectors.toList());
优化后
List<Label> list = dataList.stream()
.collect(Collectors.groupingBy(Label::getPid))
.entrySet().stream()
.flatMap(entity -> {
List<Label> labels = new ArrayList<>();
if (entity.getKey() == 0) {
labels.addAll(getSecondLabelsById(entity.getKey()));
} else {
labels.add(baseMapper.selectOne(Wrappers.<Label>lambdaQuery().eq(Label::getId, entity.getKey())));
}
labels.addAll(entity.getValue());
return labels.stream();
}).collect(Collectors.toList());
2.Map对象的entryset也可以开启流进行操作,同时存了map的key和value
3.restful风格的代码可以很好的利用url资源
1)、RestfulCRUD:CRUD满足Rest风格;
URI: /资源名称/资源标识 HTTP请求方式区分对资源CRUD操作
| | 普通CRUD(uri来区分操作) | RestfulCRUD |
| ---- | ------------------------- | ----------------- |
| 查询 | getEmp | emp---GET |
| 添加 | addEmp?xxx | emp---POST |
| 修改 | updateEmp?id=xxx&xxx=xx | emp/{id}---PUT |
| 删除 | deleteEmp?id=1 | emp/{id}---DELETE |
| 实验功能 | 请求URI | 请求方式 |
| ------------------------------------ | ------- | -------- |
| 查询所有员工 | emps | GET |
| 查询某个员工(来到修改页面) | emp/1 | GET |
| 来到添加页面 | emp | GET |
| 添加员工 | emp | POST |
| 来到修改页面(查出员工进行信息回显) | emp/1 | GET |
| 修改员工 | emp | PUT |
| 删除员工 | emp/1 | DELETE |
4.mybatis-plus中的Iservice和baseMapper区别
BaseMapper是Mapper层或者叫Dao层的接口。
IService是业务逻辑层接口。
IService的功能更多,具体见mybatis-plus官方文档
5.springdata-mongdb配置好后需
@Autowired private MongoOperations mongoOperations;
或者
@Autowired private MongoTemplate mongoTemplate;
才能使用template的功能,而Repository是继承MongoReposit<T, String>来实现相应接口的功能
6.css的margin值是边距的距离 margin: 0px 5px 10px 0px;是上右下左顺时针书写,padding值是内容到边框的距离
补充2020/12/9
7.防止表单提交的方式:屏蔽层,屏蔽按钮
8.学习service里面方法!!!