公司study three
ctrl+win+d:新建桌面
ctrl+win +箭头 切换桌面
WIN + CTRL + F4 删除桌面
stream
- foreach遍历
instFormModifytracesList.stream().forEach(s->{ s.setModifyUser(sysUserTemplate.getNameById(s.getModifyUser()));});
- 拼接
String collect2 = peopleList.stream().map(People::getName).collect(Collectors.joining(","));
- list转成 map<string,实体>
Map<String, Sample> sampleCodeMap = list.stream().collect(Collectors.toMap(Sample::getSampleCode, sample -> sample));
- list去重
List<String> collect = departmentList.stream().map(TaskDepartment::getDepartmentId).collect(Collectors.toList());List<String> departmentIds = new ArrayList<String>(new TreeSet<String>(collect));
- list根据某个字段去重
//根据值班日期去重,一天只需要获取一条数据
List<SiteScheduling> siteSchedulings = schedulingList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(SiteScheduling::getOnDutyDate))), ArrayList::new));
mybatis-plus+stream+lambda
- lambda遍历 存值
if (bpmBoEntityList != null && !bpmBoEntityList.isEmpty()) {bpmBoEntityList.forEach(x -> {BpmBoEntityDTO dto = new BpmBoEntityDTO();BeanUtil.copyProperties(x, dto);dtoList.add(dto);});}
- lambda+stream 遍历
List<BpmSolresContent> bpmSolresContentList=bpmSolresContentMapper.selectList(lambdaQueryWrapper);bpmSolresContentList.stream().forEach(w->{if(Func.isNotEmpty(w.getRoute())){w.setRoute(varParamService.replaceVarString(w.getRoute(),userId,instId, VarParamGroupEnum.INST));}});
集合
- 对象转成map
Map<String, Object> dataMap = MapUtil.toMap(vo);
-
判断list和map是否包含这个值
-
contains方法是用来判断集合中是否包含某个元素的方法
例子:
Connection c=new ArrayList();
c.add(1);
System.out.println(c.contains(1));结果:
ture
代码学习
- 将list的id分割
String userIds = StringUtils.join(userIdList,",");`
- 复制实体
BeanUtil.copyProperties(x, dto);
selectBatchIds:mybatus-plus批量查询集合
- 判断类型是否为空,是返回信息
Asserts.isEmpty(treeDTO.getNodeType(), "节点类型不能为空!");
-
删除新增修改保存 @PostMapping+@BpmApiLog
-
新增或修改
if (holidayService.insertBpmHolidayWorkhours(holidayWorkhours) > 0) {return R.success("设置工作时间成功");}return R.fail("设置工作时间失败!");}
- 获取当前登录用户id
Long userId = AuthUtil.getUserId(true);
String userId=AuthUtil.getUserId().toString();
- 根据报错信息,找到所在位置,然后查看报错信息原因
- 获取就是response
- 设置保存 就是request
- vo:用于给前端显示信息
- dto:用于service层跟mapper层数据交换
- equals() 会判断大小写区别,equalsIgnoreCase() 不会判断大小写区别
注解
- @Validated:为了在实体中使用对应的注解对参数进行校验
@Null(message = "无需上传id!程序会根据年份入参自适应修改!")
循环
- break用于完全结束一个循环,跳出循环体,执行循环之后的代码
- continue语句用于终止本次循环,接着开始下一次循环。
多线程
- 在方法上加上@Async注解,然后去启动类加上@EnableAsync启动注解开启异步
- @Async失效的原因
- 1、注解@Async的方法不是public方法
2、注解@Async的返回值只能为void或者Future
3、注解@Async方法使用static修饰也会失效
4、spring无法扫描到异步类,没加注解@Async 或 @EnableAsync注解
5、调用方与被调方不能在同一个类
- 1、注解@Async的方法不是public方法
- 测试异步是否成功,成功了就直接走到 保存成功,不会进入休眠,最后才进入对应休眠的方法
- 异步处理线程
- 开启异步后无论异步 方法是否执行成功 ,都会 直接走到保存成功,互不影响
// 异步线程处理数据源xml解析ExecutorService es = Executors.newFixedThreadPool(1);es.submit(new Callable<BpmFormInfo>() {@Overridepublic BpmFormInfo call() {formDatasourceService.updateFormXmlJson(bpmFormInfo.getFormId());return null;}});es.shutdown();
- 异步 开启了新线程所以 获取不到当前的登录人的id,需要获取传值过来
强转
- list
HashMap<String, Object> map = (HashMap) oldFormDatum;
概念
-
没加@requestbody的不能用json,只能用form-data
-
stream的Collectors.toList(),加了分组就等于转化成list了,不加 就要Collectors.toList()
-
java回调:回调是一种双向调用模式,什么意思呢,就是说,被调用方在被调用时也会调用对方,这就叫回调。“If you call me, i will call back”
- 所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法
-
if,elseif,else,三者语句只执行一条,谁的语句先为真就执行哪条,后面的条件的语句就不用管了。
-
@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);而最常用的使用请求体传参的无疑是POST请求