mybatis查询结果集有泛型属性时可能出现的问题。

mybatis查询结果集有泛型属性时可能出现的问题。

问题:当接收结果为map或者对象的属性为泛型时:

@Data
public class GenericKeyValueVo<K,V> {

    private K key;

    private V value;

}

这时候如果直接将resultType指向对象全限定名称时,可能会出现问题。因为如果查询结果的某个字段大于1000会出现","如:1,000.56 。mybatis不会报错,因为这个对象的这个属性为泛型,可以接收。而当获取结果之后即使定义接收的变量类型为:
在这里插入图片描述
第二个属性也会存入String类型的值。后续再处理可能就会出现将string转为double数据类型转换错误。
解决方法:
定义一个resultMap,指明javaType

    <resultMap id="StrKeyDoubleValueMap" type="com.meinergy.mkting.commons.entity.wholesale.vo.GenericKeyValueVo">
        <result column="key" property="key" javaType="java.lang.String"/>
        <result column="value" property="value" javaType="java.lang.Double"/>
    </resultMap>

再用一个convert函数规范查询结果格式

convert(FORMAT(queryResult, decimal(12, 2))

版权声明:本文为weixin_42642782原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。