Spring boot 整合 mybaties時,會出現一個奇怪的現象,假如
數據庫裏面有float型數據,比如 5.245,使用 @Select註解查詢出來顯示的是 5.0, 精度哪去了?
@Select("SELECT heat, cost FROM dm_warehouse_cost WHERE date=#{date} AND id=#{id}")
WarehouseCostBean getHeatAndCost(@Param("date") String date, @Param("id") int id);
public class WarehouseCostBean {
private int heat;
private float totalCost;
public WarehouseCostBean(int heat, float totalCost) {
this.heat = heat;
this.totalCost = totalCost;
}
...
}
經過一番折騰,發現在float型的數據處,加上 ROUND 函數即可,還可以自己控制小數點後位數。但建議 float 不要存儲高精度的數據,比如股券類,而應使用 numeric 或者 decimal
@Select("SELECT heat, ROUND(cost,3) FROM dm_warehouse_cost WHERE date=#{date} AND id=#{id}")
WarehouseCostBean getHeatAndCost(@Param("date") String date, @Param("id") int id);
參考文獻
https://stackoverflow.com/questions/13620850/select-a-float-with-given-precision
https://iqbon.iteye.com/blog/1769707