Java开发一些值得注意的地方

1. MySQL数据库double类型的字段数据比较大时候,Java对象用String接收被变成科学计数法
类似下面这种:
"AcqValFyend": 31015777.12
"AcqValFyend": "3.101577712E7"
不要用String接收double,用BigDecimal类型接收

2.stream的Collectors.groupingBy不能以null为key进行分组的解决方案

  Map<String, List<SoStoData>> collect = list.stream().collect(Collectors.groupingBy(s ->
                    {
                        Optional<String> optional = Optional.ofNullable(s.getDnNo());
                        //判断dn是否为空(这里直接抛出了业务异常,也可以做其他操作)
                        if (!optional.isPresent()) {
                            throw new BusinessException("上传数据DN为空!");
                        }
                        return s.getDnNo();
                    }
            ));

3.用分页插件pagehelper报错可能情况,把xml里的注释删掉

4.用分页插件pagehelper分页出现数据重复的问题,同一条数据在不同页都存在,可能是排序字段不唯一或者可能为空,可以加上唯一性字段作为辅助排序。

5.mybatis传入单字符报错

如:Cause: java.lang.NumberFormatException: For input string: "D"

原因分析:'D'被当成了数字。
解决办法:这种在mybatis的XxxMapper.xml中遇到这个问题,若是用到了 String的类型,一般就单引号里面包双引号,如<if test='type == "D"'>

6.Integer超出大小,==比较结果不同,用equals()比较

7. 注解@Value("${xx.xxx}") ,不能直接赋值给静态变量

@PostConstruct
 private void init() {
 initRandom=random;
  }

8. 当switch遇到null,会报空指针异常。所以,在使用switch前加上非null判断,单独处理或赋值,方便走default。

9.@RequestBody只能修饰一个入参

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容