MyBatis中bigint数据查询后转成java对应的String 以及背后mybatis的处理流程概览

简单实现:

----MyBatis的xml:
<mapper namespace="com.umbrella.core.user_manage.dao.ITestDao" >
    <resultMap id="TestVOMap" type="com.umbrella.core.user_manage.model.TestVO">
        <result column="number" property="number" javaType="String"/>
    </resultMap>
    <select id="queryTestVO" resultMap="TestVOMap">
        SELECT number FROM testvo
    </select>
</mapper>

----java的类及接口:

public class TestVO {
    public String number;
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
}

    @Autowired
    ITestDao iTestDao;

    @PostConstruct
    public void getTestVOList(){
        List<TestVO> list = iTestDao.queryTestVO();
        System.out.println();
    }

----ddl:
CREATE TABLE `testvo` (
  `number` bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

核心就是:

<resultMap id="TestVOMap" type="com.umbrella.core.user_manage.model.TestVO">
        <result column="number" property="number" javaType="String"/>
</resultMap>

背后的原理:

可以看到我们选了javaType是String类型,相应注册的类型Handler是String

点金getResult方法,我们找他的具体Handler实例,由上述克制我们要去StringTypeHandler。

 相信写过自定义handler的小伙伴对这四个方法应该不陌生。

一步一步跟踪 - -

后续又经过getStringInternal内部的getString方法,这里看来主要是设置一些encoding

stringVal = this.thisRow.getString(internalColumnIndex, encoding, this.connection);

最终会调用getString方法,终于找到了目的地

经过toString方法的转换,

数据终于从BigInt类型转换成String

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值