我们需要使用NStringTypeHandler将i18n字符串持久存储到数据库的NVARCHAR字段中。
但是我查看了源代码,看起来它什么也没做。
public class NStringTypeHandler extends BaseTypeHandler {
public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)
throws SQLException {
// ps.setNString(i, ((String) parameter));
ps.setString(i, ((String) parameter));
}
public Object getNullableResult(ResultSet rs, String columnName)
throws SQLException {
// return rs.getNString(columnName);
return rs.getString(columnName);
}
public Object getNullableResult(CallableStatement cs, int columnIndex)
throws SQLException {
// return cs.getNString(columnIndex);
return cs.getString(columnIndex);
}
}
也许,我模仿了一些东西。但是set / get NString在源代码中有注释。
最佳答案
NStringTypeHandler
的实现看起来是错误的。 (应该支持国家字符集类型数据,但不支持)。
仅出于您的参考,主干中有一个更高版本的NStringTypeHandler
,这次使用通用版本BaseTypeHandler
作为其基类。但是,未删除未注释的行,也未在其中使用setNString
。
不幸的是,也没有可用的历史来解释未注释的行。该文件为checked-in with the commented lines。
我的建议是submit an issue here(至少可以解释这个奇怪的实现)。
关于java - myBatis NStringTypeHandler的用途是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8559611/