Mybaties @Select float 丟失精度

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章