首頁>技術>

mysql的 int 型別,刨析返回型別為BigDicemal 型別的奇怪現象

經過實測:mybatis 中的sql語句int型別 java接收的幾種情況。

1.用resultType="int" (返回型別用int)

1.1 如果 resultType="int", id 沒做運算,

<select id="getTest" resultType="int">    select id from ting_cmdb_physical_equipment where id=2897;</select>

顯示結果,

java可以用 int 接收。

1.2 如果 resultType="int", id 做運算,

<select id="getTest" resultType="int">    select id-1 as id     from ting_cmdb_physical_equipment where id=2897;</select>

顯示結果:

java可以用int接收

1.3 id 做聚合運算

<select id="getTest" resultType="int">    select sum(id) as id     from ting_cmdb_physical_equipment where id=2897;</select>

運算結果:

java可以用int接收
2.用resultType="map"(返回型別用Map<String,Object>)

2.1 id沒做運算

<select id="getTest" resultType="map">    select id from ting_cmdb_physical_equipment where id=2897;</select>

運算結果:

java可以用int 接收

2.2 id做運算

<select id="getTest" resultType="map">    select id-1 as id     from ting_cmdb_physical_equipment where id=2897;</select>

運算結果:

java要用long型別接收

2.3 id做聚合函式運算

<select id="getTest" resultType="map">    select sum(id) as id     from ting_cmdb_physical_equipment where id=2897;</select>

運算結果:

java用BigDecimal接收
3.resultType="map" (返回型別用list<Map<String,Object>>)

3.1 id沒做運算

<select id="getTest" resultType="map">    select id as id    from ting_cmdb_physical_equipment where id=2897;</select>

運算結果:

java可以用int接收

3.2 id做運算

<select id="getTest" resultType="map">    select id-1 as id     from ting_cmdb_physical_equipment where id=2897;</select>

運算結果

java可以用long接收

3.3 id做聚合運算

<select id="getTest" resultType="map">    select sum(id) as id     from ting_cmdb_physical_equipment where id=2897;</select>

運算結果:

java可以用BigDecimal接收
總結

型別\int值沒做運算做了運算做了聚合運算intintintintMap<String,Object>intlongBigDecimalList<String,Object>intlongBigDecimal

為什麼會出現BigDecimal型別呢,

經過上面的測試:

可以得出

用的是 Map <String,Object>,List<Map<String,Object>>接收,sql語句中int型別的值做了 聚合運算

滿足上述兩個條件。

java中去取value的值就會變成 BigDecimal 型別

15
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 給金三銀四面試BATJD大廠面,準備Java面試400+真題