Какова цель myBatis NStringTypeHandler? - PullRequest
1 голос
/ 19 декабря 2011

Нам нужно использовать 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 комментируется в исходном коде.

1 Ответ

0 голосов
/ 19 декабря 2011

Реализация NStringTypeHandler выглядит неправильно.(Предполагается, что он поддерживает данные типа набора национальных символов, но это не так).

Просто для вашего сведения, в транке есть более новая версия NStringTypeHandler, которая на этот раз использует универсальную версию BaseTypeHandler в качествеего базовый класс.Однако незакомментированные строки не были удалены, и setNString там также не используется.

К сожалению, также нет доступной истории, объясняющей некомментированные строки.Файл был зарегистрирован с закомментированными строками .

Я предлагаю представить здесь проблему (чтобы хотя бы получить объяснение этой странной реализации).

...