我一直在寻找,我没有这么清楚.使用MyBatis映射器时,是否需要设置jdbcType?我正在使用MySql.
对于我所读到的内容,它适用于传递空值的情况,但我不知道这是否仍然是必要的还是旧的.例如,这两个查询都有效:
SELECT <include refid="columns"/> FROM user WHERE uid=#{uid, jdbcType=INTEGER}
SELECT <include refid="columns"/> FROM user WHERE uid=#{uid}
Run Code Online (Sandbox Code Playgroud)
正如您自己提到的,您需要指定jdbcType何时为参数传递空值.
即使值本身为NULL,某些数据库也需要知道值的类型.出于这个原因,为了最大程度的可移植性,JDBC规范本身需要指定类型,MyBatis需要传递它,因为它构建在JDBC之上.
只有在插入,更新或删除时可为空的列才需要JDBC类型.这是JDBC要求,而不是MyBatis要求.因此,即使您直接编写JDBC,也需要指定此类型 - 但仅限于可空值.
大多数情况下,您不需要指定jdbcTypeMyBatis就足够聪明,可以从您正在使用的对象中找出类型.但是,如果您将参数发送到a中的MyBatis语句HashMap,并且其中一个参数为null,MyBatis将无法通过查看来确定参数的类型,HashMap因为HashMap它只是一个通用容器而且null本身没有类型信息.此时,最好提供jdbcType以便稍后切换数据库实现不会导致null值出现任何问题.
| 归档时间: |
|
| 查看次数: |
9188 次 |
| 最近记录: |