当我们使用Mybatis时,在<select> ...</select>
语句中我知道我们需要设置jdbcType
因为 IN变量可能为null,但是当我看到Mybatis的文档时,我发现jdbcType
<result>...</result>
下的ResultMap
jdbcTpe
。的文件
<result>...</result>
中的select
是:
... 只有插入,更新或删除时可以为空的列才需要JDBC类型。这是JDBC要求,而不是MyBatis要求。因此,即使您直接编写JDBC,也需要指定此类型 - 但仅限于可以为空的值。
粗体字表示只有在插入,更新或删除时可为空的列才需要。
但是,结果的元素在jdbcType
中使用,既不插入,也不更新或删除。
那么,是否有必要在<result>...</result>
中使用{{1}}?
答案 0 :(得分:1)
大多数时候,没有。为什么?继续阅读。
如果要使用null
作为JDBC参数值,则需要来指定jdbcType。这是您无法避免的JDBC规范的限制。因此,如果JDBC参数的可能性很小,那么可以指定空值。
这不适用于MyBatis标记内由MyBatis预处理的参数,例如您在
现在,对于您阅读的列。这些是您感兴趣的。问题是大多数时候您不需要它们。 MyBatis将为您选择正确的JDBC类型。嗯...我的情况一直是99.999%。
其他0.001%呢?对于一些很少使用的奇异列类型,MyBatis可能会为您选择错误的JDBC类型。 MyBatis的设计师考虑了这种情况,并给了您覆盖它的机会。我想我记得MyBatis试图将XML
读取为一个VARCHAR
类型的数据库列,但是我不记得是哪个数据库。
最底线,在读取列时不要使用它,除非MyBatis以错误的方式读取异类数据类型的列(XML,UUID,POINT等)。