后端开发技巧(四)
1. 将数据库的时间 返回成 xx:xx:xx 添加以下配置
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
2. 使用Swagger注解时
-
CUID 的注解规范
@PostMapping("/add") @ApiOperation("添加通知消息-标准产品生产任务表") public ServiceResult addTaskWorkflow(HttpServletRequest request, @RequestBody RequireTask requireTask) { ServiceResult result = requireTaskService.add(requireTask); return result; } @DeleteMapping ("/remove/{id}") @ApiOperation("根据id删除通知消息-标准产品生产任务表") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "id", required = true, dataType = "String", paramType = "query")}) public ServiceResult remove(@PathVariable("id") String id) { ServiceResult result = requireTaskService.remove(Integer.parseInt(id)); return result; } @PutMapping(value = "/modify/{id}") @ApiOperation(value = "编辑通知消息-标准产品生产任务表", notes = "以HTTP形式提供编辑系统版本说明的接口,以JSON格式数据响应编辑结果,用于实现编辑系统版本说明的功能的开发,使用接口前请先登录,若无账号请先注册") @ApiImplicitParam(name = "Authorization", value = "token", required = false, dataType = "String", paramType = "header") public ServiceResult modify(HttpServletRequest request, @RequestBody RequireTask requireTask, @PathVariable Integer id) { System.out.println(requireTask.toString()); return requireTaskService.modify(requireTask,id); } @GetMapping("/search") @ApiOperation(value = "单表查询通知消息-标准产品生产任务表", notes = "以HTTP形式提供多条件查询的接口,以JSON格式数据响应查询结果,用于实现查询主任务的功能的开发") @ApiImplicitParams({ @ApiImplicitParam(name = "requireTaskId", value = "任务标识号", required = false, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "priority", value = "紧急程度", required = false, dataType = "Integer", paramType = "query"), @ApiImplicitParam(name = "targetLevel", value = "目标产品级别", required = false, dataType = "String", paramType = "query"), @ApiImplicitParam(name = "status", value = "状态", required = false, dataType = "Integer", paramType = "query"), @ApiImplicitParam(name = "pageNum", value = "页数", required = false, dataType = "Integer", paramType = "query"), @ApiImplicitParam(name = "pageSize", value = "每页的个数", required = false, dataType = "Integer", paramType = "query"), }) public ServiceResult search(String requireTaskId, String priority, Integer targetLevel, String status,Integer pageNum, Integer pageSize) { ServiceResult result = requireTaskService.search( requireTaskId, priority, targetLevel, status, pageNum, pageSize); return result; }
3. 前后端传数据
- 如果前端有部分数据可以输入到后台,而个别数据无法输入,则应该检查前端和后端字段是否对应
- 前端的弹框提示 一般是后端返回的Message,有问题,可以先看返回的消息
- 传参,如果没有传到后台,则应该打开网络,去看是否传递到了数据
- 对于查询,应该使用Get请求,因为Get可以看到查询的条件。VUE将字符串拼接不会在地址栏显示,在封装,所以不影响
- 返回数据的时候,应该以Map的形式,以及返回total 总条数。
4. 更新语句
根据一个字段对相同字段的其他行的其余属性进行统一更改
<update id="modifyByPlanId" parameterType="cn.piesat.sar.entity.PlanInfo">
UPDATE sar_standard_plan
<set>
<if test="transferStatus!=null">
transfer_status=#{transferStatus},
</if>
<if test="checkResult!=null">
check_result=#{checkResult}
</if>
</set>
WHERE plan_id=#{planID}
</update>
5. 添加多条记录
- Controller
@PostMapping("/addBatch")
@ApiOperation("添加多条计划表")
public ServiceResult addPlanInfoBatch(HttpServletRequest request, @RequestBody List<PlanInfo> planInfoList) {
ServiceResult result = planService.addPlanInfoBatch(planInfoList);
return result;
}
-
Service 使用forEach进行操作遍历插入
@Override public ServiceResult addPlanInfoBatch(List<PlanInfo> planInfoList) { ServiceResult result = new ServiceResult(false); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); for(PlanInfo planInfo :planInfoList){ // 跟踪开始时间 planInfo.setAccessStartTime(sdf.format(new Date())); // 跟踪结束时间 planInfo.setAccessEndTime(sdf.format(new Date())); // 数传开始时间 planInfo.setDataStartingtime(sdf.format(new Date())); // 数传结束时间 planInfo.setDataEndingtime(sdf.format(new Date())); int status = mapper.insert(planInfo); if (status > 0) { result.setSuccess(true); result.success(status, "添加成功", 0); } else { result.failed(status, "添加失败", -1); } } return result; }
-
Mapper 层 调插入语句 就可以了
6. 小补充
Spring Boot 自动封装了 Tomcat
Spring Cloud 有 GetWay 这个概念
mybatis 最基础的配置
#xml 扫描路径
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=cn.piesat.sar.entity
#打印日志配置
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 将带有下划线的表字段映射为驼峰格式的实体类属性
mybatis.configuration.map-underscore-to-camel-case=true