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 型別
最新評論