
前一个版本,要变更活动的一个表字段,从int型改为varchar。有点疑问如果先执行数据库脚本,后发版,会不会有问题?本地debug 了一下mybatis执行流程确认了一下。发现不是mybatis做了判断,而是JDBC做了这些脏活累活儿。
下面的图片是mysql执行sql的调用栈信息:
- mybatis通过TypeHandlerRegistry,因为java类是Integer,所以会取到IntegerTypeHandler
- IntegerTypeHandler调用了jdbc包中的 ResultSetImpl.getInt.
- 最终调用了StringUtils.getInt方法。这个方法对字符串的各种场景(带特殊符号,带英文字母,超出MAX_VALUE)做了判断。

本文探讨了在数据库字段从int型改为varchar型的过程中可能遇到的问题,特别是在先执行数据库脚本后发布版本的情景下。通过深入mybatis执行流程,发现JDBC在处理不同数据类型转换时扮演了关键角色,尤其是对于字符串类型的复杂处理。
932

被折叠的 条评论
为什么被折叠?



