SQL数据类型和Java数据类型的对应关系
integer、int ---> int
tinyint、smallint ---> short
bigint ---> long
decimal、numeric ---> javamathBigDecimal
float ---> float
double ---> double
char、varchar ---> String
boolean、bit ---> boolean
date ---> javasqlDate
time ---> javasqlTime
timestamp ---> javasqlTimestamp
blob ---> javasqlBlob
clob ---> javasqlClob
array ---> javasqlArray
将sql中的所有待填参数的类型和参数的类型做组合
orgapacheibatisbuilderSqlSourceBuilder#parse
参数处理:通过sql中的参数“authorId,jdbcType=VARCHAR”解析jdbcType,java类型是通过参数类型解析的。因此如果sql中没有写jdbcType=VARCHAR,这里将解析不到jdbcType,所以查找typehandler时将只通过javaType查找
orgapacheibatisbuilderSqlSourceBuilderParameterMappingTokenHandler#buildParameterMapping
处理结果:通过类型查找typeHandler
orgapacheibatisexecutorresultsetResultSetWrapper#getTypeHandler
获取typeHandler
orgapacheibatistypeTypeHandlerRegistry
封装resultMap,其中已经封装好了所使用的typeHandler,如果查询语句没有使用resultMap,这里封装时没有添加typehandler
orgapacheibatisbuilderMapperBuilderAssistant#addMappedStatement(javalangString, orgapacheibatismappingSqlSource, orgapacheibatismappingStatementType, orgapacheibatismappingSqlCommandType, javalangInteger, javalangInteger, javalangString, javalangClass<>, javalangString, javalangClass<>, orgapacheibatismappingResultSetType, boolean, boolean, boolean, orgapacheibatisexecutorkeygenKeyGenerator, javalangString, javalangString, javalangString, orgapacheibatisscriptingLanguageDriver, javalangString)
mybatis sql的执行过程有sql的解析和结果集映射,这两个过程都使用了typehandler。
sql解析时会将参数填充到sql中,此时会通过jdbcType和javaType来查找对应的typeHandler(如果sql中没有使用类似“jdbcType=BIGINT”,则无法获取该jdbcType,因此只能通过javaType去查找对应的typeHandler)。
例如sql如下:
jdbcType是通过sql中“jdbcType=BIGINT”来获取的,所以如果我们在写sql时如果不填写“jdbcType=BIGINT”,则sql解析时将无法获取该字段的jdbcType。javaType是通过参数的名字,通过反射获取该属性的类型的。
结果集映射时分两种:使用ResultMap和不使用ResultMap
①使用ResultMap
如上述所示,如果使用ResultMap,则mybatis会根据其中的jdbcType和反射得到的java类型,来查找typeHandler。
②不使用ResultMap
例如sql如下:
这种情况下查询到结果集并映射到实体类时,无法获取到每个字段的jdbcType,而每个字段的javaType会通过反射获取到。然后通过javaType去查找typeHandler。
这个是mysql下存取blob字段的一个很简单的类,跟据自己的需要改改就行了 / Title: BlobProsjava Project: test Description: 把存入mysql中的blob字段,并取出 Call Module: mtools数据库中的tmp表 File: C:\downloads\luozsh
以上就是关于mybatis bigdecimal 对应什么类型全部的内容,包括:mybatis bigdecimal 对应什么类型、mybatis查找typeHandler过程分析、Mysql中是blob类型,实体类定义为string,怎么取值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)