在 MyBatis 中选择时处理空值
Dealing with nulls when selecting in MyBatis
我有一个查询,在第一次启动时 returns 零行:
<select id="getParams" parameterType="map" resultMap="ParamsResultMap">
SELECT ID, GROUPS, TEMPLATES, DATE_FROM, DATE_TO
FROM MY_FILTERS
WHERE ID = #{id}
</select>
<resultMap id="ParamsResultMap" type="my.domain.ParamsVO">
<result column="ID" property="id"/>
<result column="GROUPS" property="groups"/>
<result column="TEMPLATES" property="templates"/>
<result column="DATE_FROM" property="dateFrom" jdbcType="TIMESTAMP"/>
<result column="DATE_TO" property="dateTo" jdbcType="TIMESTAMP"/>
</resultMap>
没关系,因为我想在java中管理它:
ParamsVO params = myRepository.getParams(id);
if (params == null) {
...
}
但我遇到异常:
org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #4 with JdbcType OTHER .
Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property.
Cause: java.sql.SQLException: Invalid column type ; uncategorized SQLException for SQL [];
SQL state [null]; error code [17004];
我试过使用 jdbcType = "DATE"
和不使用 jdbcType,结果相似。
我的问题是在 MyBatis 中处理 returns 零行的查询的正确方法是什么?
试试这个方法,
<result column="DATE_TO" property="dateTo" jdbcType="DATE" javaType="java.util.Date"/>
并且还需要检查和更新您的 JDBC jar file.Check ojdbc.jar here 的兼容性(我认为您至少需要 ojdbc6.jar ) 。对于额外的检查,如果你已经在你的 mybatis 配置 xml 文件中这样声明
<settings>
<setting name="jdbcTypeForNull" value="OTHER" />
</settings>
那就这样改
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
我有一个查询,在第一次启动时 returns 零行:
<select id="getParams" parameterType="map" resultMap="ParamsResultMap">
SELECT ID, GROUPS, TEMPLATES, DATE_FROM, DATE_TO
FROM MY_FILTERS
WHERE ID = #{id}
</select>
<resultMap id="ParamsResultMap" type="my.domain.ParamsVO">
<result column="ID" property="id"/>
<result column="GROUPS" property="groups"/>
<result column="TEMPLATES" property="templates"/>
<result column="DATE_FROM" property="dateFrom" jdbcType="TIMESTAMP"/>
<result column="DATE_TO" property="dateTo" jdbcType="TIMESTAMP"/>
</resultMap>
没关系,因为我想在java中管理它:
ParamsVO params = myRepository.getParams(id);
if (params == null) {
...
}
但我遇到异常:
org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #4 with JdbcType OTHER .
Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property.
Cause: java.sql.SQLException: Invalid column type ; uncategorized SQLException for SQL [];
SQL state [null]; error code [17004];
我试过使用 jdbcType = "DATE"
和不使用 jdbcType,结果相似。
我的问题是在 MyBatis 中处理 returns 零行的查询的正确方法是什么?
试试这个方法,
<result column="DATE_TO" property="dateTo" jdbcType="DATE" javaType="java.util.Date"/>
并且还需要检查和更新您的 JDBC jar file.Check ojdbc.jar here 的兼容性(我认为您至少需要 ojdbc6.jar ) 。对于额外的检查,如果你已经在你的 mybatis 配置 xml 文件中这样声明
<settings>
<setting name="jdbcTypeForNull" value="OTHER" />
</settings>
那就这样改
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>