保障房项目总结(后台)

1、非常常用的时间格式化

Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

2、关于mybatis或mybatis-plus踩的坑

  • 单表查询直接使用queryWrapper的方法,如下,这个查询的where条件有两个,分别是build_id和status,
    service.list(new QueryWrapper<Obj>().eq("build_id", buildId).eq("status", "1"));
  • mybatis在进行对象更新时,默认只更新有值的字段,字段为null时,自动忽略掉,不进行更新,除非设置了强制更新
  • 注:单表查询中如果有条件匹配两个字段,如下,同一个条件匹配两个字段,and 把or 括起来。
    queryWrapper.and(wrapper -> wrapper.like("name", deviceId).or().like("serial_number", deviceId))
  • 如果是多表查询,通常是自己手动写SQL语句@Select里面,可以传pageable作为第一个参数来对结果分页(pageable只能作为第一个参数,否则会抛selectOne()异常)。但是返回的主体一定是Map<String,Object>,即使查询的字段与对象一致,也不能使用List<Obj>来接收,只能接收到[null,null……]
  • 有时候在更新对象时,不是根据对象主键进行更新,是根据某字段进行更新,如下:通过collect_id更新对象的delete_time,state字段;这样的弊端是:通过某字段更新的方式,不能进行批量。只有通过主键更新才可以批量

    Dispatch dispatch = new Dispatch();
    dispatch.setDeleteTime(new Date());
    dispatch.setState("3");
    dispatchService.update(dispatch, new UpdateWrapper<TResidentAuthDispatch>().eq("collect_id", item.getAuthor_id()));
  • 在使用left join 多表连接时,可以直接对查询结果进行连接,详情见随笔:

3、定时任务,可使用@cron来配置执行时间、执行频率等等

4、在业务系统中常常有文件传输的操作,当传输耽搁文件时,可使用来接收,如下一,这里前台是传的一个复杂表单,对象字段用对象接收,文件单独接收;如果是一个文件的list,后台也需要使用list来接收;

//单个文件对象,含其他字段
addOrEditUser(@RequestParam(name = "picpath1", required = false) MultipartFile file,AdminUser user);
//多个文件对象同时传输
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
List<MultipartFile> mflist = multipartRequest.getFiles("file"); 

5、关于JSON对象转换的问题,asyncData是请求传回来的值,即使使用list<EquipResp>接收返回数据,可以转换成一个JSON的对象集合,可以获取集合的size(),但asyncData.get(j).getAge()竟然会报错(JSON转化异常),这就让人纳闷了,好吧!那就转换一次吧 !依然还是需要转换才能真正获取对象。

quipResp resp = JSONObject.parseObject(asyncData.get(j) + "", EquipResp.class);

6、上传文件时常常会用到的获取项目真实部署路径,项目部署名

request.getServletContext().getRealPath("/"));
//D:00AAA.metadata.pluginsorg.eclipse.wst.server.core mp2wtpwebappskun-house-deploy
request.getServletContext().getContextPath();//house

7、System.currentTimeMillis(); 系统毫秒值

8、后台请求查出来的数据编码正常,传输到前台乱码,此时需要设置requestMapping里面的编码为UTF-8。在requestMapping中加入这个属性,
  produces = MediaType.APPLICATION_JSON_UTF8_VALUE

9、char 与 int 默认自动转化 ,真的不容易发现的问题!!!

原文地址:https://www.cnblogs.com/CatcherLJ/p/11474255.html