简单实现:
----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
版权声明:本文为qq_31615049原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。