2011-12-19 43 views
1

DBのNVARCHARフィールドにi18n文字列を永続化するには、NStringTypeHandlerを使用する必要があります。myBatis NStringTypeHandlerの目的は何ですか?

しかし、私はソースコードを調べて、何もしないように見えます。

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はソースコードにコメントされています。

答えて

0

NStringTypeHandlerの実装が間違っています。 (それは国別文字セット型データをサポートするはずですが、そうではありません)。

あなたの情報のために、NStringTypeHandlerという新しいバージョンがトランクにあります。このバージョンでは、今回は汎用バージョンBaseTypeHandlerを基本クラスとして使用しています。ただし、コメントアウトされていない行は削除されず、setNStringもそこでは使用されません。

残念ながら、コメントアウトされていない行についての説明もありません。ファイルはchecked-in with the commented linesでした。

私の提案はsubmit an issue hereです(少なくとも奇妙な実装については説明しています)。

関連する問題