个人碰到的疑难杂症--未完

1.执行mvn命令,单元测试报错导致无法正常打包和发布,使用以下命令

mvn   package-Dmaven.test.skip=true


2.mac配置环境变量,提示错误  not a valid identifier 环境变量

配置环境变量的时候,= 两边不要有空格

3.数据格类型为数值,但内容数据太长时或者用的bigdecimal为0的时候,显示时,会默认读取为科学计数法,用以下代码便轻松解决。

BigDecimal bd = new BigDecimal("3.40256010353E11");  
  System.out.println(bd.toPlainString());

4.mysql 业务需要插入时间数据问题

例如: 2016-11-14 00:00:00 和 2016-11-20 23:59:59 ,结果数据库有时候结果显示为2016-11-14 00:00:01 和 2016-11-20 00:00:00

原因:mysql毫秒四舍五入导致,参考博客:

点击打开链接


5.有一张基础表 ID code name

另外有个表冗余了这3个字段,但是使用过程中出现了 只有id,code和name遗失的问题,为了修复这个错误,使用以下sql


```

update commerce_purchase.purchase_order p set  supplier_code = case supplier_id when supplier_id then (select code from commerce_archive.supplier  where record_id = p.supplier_id ) end , supplier_name = case supplier_id when supplier_id then (select name from commerce_archive.supplier  where record_id = p.supplier_id ) end(select code from commerce_archive.supplier  where record_id = p.supplier_id ) end

```



6.Invalid bound statement (not found)

第一种可能:mapper与xml文件名不同

第二种可能:target路径下xml没有编译进去



7. BigDecimal 当做被除数时候,如果是小数的会存在精度问题

比如new BigDecimal(2).divide(new BigDecimal(0.01), 0, BigDecimal.ROUND_FLOOR)   == 199

而   new BigDecimal(2).divide(new BigDecimal("0.01"), 0, BigDecimal.ROUND_FLOOR)   == 200 


但是数据库存储的数据是decimal类型的mysql查询出来就是第一种的数值类型,这时候可以采取以下方式

  new BigDecimal(2).divide(new BigDecimal(0.01).setScale(8, BigDecimal.ROUND_FLOOR),  0,  BigDecimal.ROUND_FLOOR)   == 200 



你可能感兴趣的:(java)