gpt4 book ai didi

jdbc - MyBatis映射器中是否需要jdbcType?

转载 作者:行者123 更新时间:2023-12-04 07:39:06 27 4
gpt4 key购买 nike

我一直在搜索,但不清楚。使用MyBatis映射器时,是否需要设置jdbcType?我在MySql中使用它。

对于我所读的内容,它是用于传递空值的,但是我不知道这是否仍然有必要或是否已经过时。例如,这两个查询都可以工作:

SELECT <include refid="columns"/> FROM user WHERE uid=#{uid, jdbcType=INTEGER}

SELECT <include refid="columns"/> FROM user WHERE uid=#{uid}

最佳答案

正如您自己提到的那样,在传递参数的空值时,需要指定jdbcType

即使值本身为NULL,某些数据库也需要知道该值的类型。因此,可实现最大的可移植性,这是要指定的JDBC specification itself that requires the type,由于MyBatis是基于JDBC构建的,因此MyBatis需要传递它。

MyBatis documentation:

The JDBC type is only required for nullable columns upon insert, update or delete. This is a JDBC requirement, not a MyBatis one. So even if you were coding JDBC directly, you'd need to specify this type – but only for nullable values.



大多数情况下,您不需要指定 jdbcType,因为MyBatis足够聪明,可以从正在使用的对象中找出类型。但是,例如,如果您将参数发送到 HashMap内的MyBatis语句中,并且其中一个参数为null,则MyBatis将无法通过查看 HashMap来确定参数的类型,因为 HashMap只是通用的container和 null本身不包含类型信息。到那时,最好提供 jdbcType,这样以后再打开数据库实现不会引起任何带有空值的问题。

关于jdbc - MyBatis映射器中是否需要jdbcType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com