【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

  1. 用的是Map<String,Object>,List<Map<String,Object>>接收,
  2. sql语句中int类型的值做了聚合运算,

满足上述两个条件。
java中去取value的值就会变成 BigDecimal 类型

经过实测:mybatis 中的sql语句int类型 java接收的几种情况。

实测案例:

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

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

1.1 如果 resultType="int", id 没做运算,

<select id="getTest" resultType="int">

select id from ting_cmdb_physical_equipment where id=2897;

</select>

显示结果,

java可以用 int 接收。

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

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接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象
1.3 id 做聚合运算

<select id="getTest" resultType="int">

select sum(id) as id

from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果:

  java可以用int接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

2.用resultType="map"(返回类型用Map<String,Object>)

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

2.1 id没做运算

<select id="getTest" resultType="map">

select id from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果:

java可以用int 接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

2.2 id做运算

<select id="getTest" resultType="map">

select id-1 as id

from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果:

java要用long类型接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象
2.3 id做聚合函数运算

<select id="getTest" resultType="map">

select sum(id) as id

from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果:

java用BigDecimal接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

3.resultType="map" (返回类型用list<Map<String,Object>>)

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

3.1 id没做运算

<select id="getTest" resultType="map">

select id as id

from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果:

java可以用int接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

3.2 id做运算

<select id="getTest" resultType="map">

select id-1 as id

from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果

java可以用long接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象
3.3 id做聚合运算

<select id="getTest" resultType="map">

select sum(id) as id

from ting_cmdb_physical_equipment where id=2897;

</select>

运算结果:

java可以用BigDecimal接收

【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象

总结

类型\int值没做运算做了运算做了聚合运算
intintintint
Map<String,Object>intlongBigDecimal
List<String,Object>intlongBigDecimal

为什么会出现BigDecimal类型呢,

以上是 【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象 的全部内容, 来源链接: utcz.com/a/89897.html

回到顶部