mybatis jdbcTyp和javaType的类型处理

 

mybatis jdbcTyp和javaType的类型处理_第1张图片

 

前一个版本,要变更活动的一个表字段,从int型改为varchar。有点疑问如果先执行数据库脚本,后发版,会不会有问题?本地debug 了一下mybatis执行流程确认了一下。发现不是mybatis做了判断,而是JDBC做了这些脏活累活儿。

下面的图片是mysql执行sql的调用栈信息:

  1. mybatis通过TypeHandlerRegistry,因为java类是Integer,所以会取到IntegerTypeHandler
  2. IntegerTypeHandler调用了jdbc包中的 ResultSetImpl.getInt.
  3. 最终调用了StringUtils.getInt方法。这个方法对字符串的各种场景(带特殊符号,带英文字母,超出MAX_VALUE)做了判断。

 

mybatis jdbcTyp和javaType的类型处理_第2张图片

你可能感兴趣的:(Java)