2012-03-02 39 views
1

DBの暗号化された列と照合する必要があります。私は、マッチングのために暗号化された値をbyte []として渡す必要があります。 byte []に​​格納されている実際の値の代わりに、byte []のハッシュコードが渡されます。ハッシュコードは渡されるため、値が正しく一致しません。以下は私のクエリとMapper.javaの関数呼び出しです。MyBatisのSQLクエリでbyte []パラメータ型を渡す方法はありますか?

AccBalNotificationBean selectAccBalNotificationBean(@Param("acctIdByteArray") byte[] acctIdByteArray); 

SELECT toa.accounts_id from tbl_transactions_other_accounts toa WHERE other_account_number = #{acctIdByteArray} 

ありがとうございました。

答えて

2

は、私はあなたのother_account_number列のデータ型が文字列型(CHAR、VARCHARなど)であると仮定します。 MybatisはデフォルトでStringDataTypeHandlerを使用し、バイト配列の.toString()メソッドを呼び出します。 MyBatisには、typeHandlerを指定して、配列の内容を使用したいというヒントを与えます。

.. WHERE other_account_number = #{acctIdByteArray, typeHandler=org.apache.ibatis.type.ByteArrayTypeHandler} 
+0

これはMySqlとバイナリ列(UUID)を使用して私にとって役立ちました。 興味深い注記:別のデータベースエンジン(MS SQLとjTDSドライバ)を使用する別のプロジェクトで、 'typeHandler = org.apache.ibatis.type.ByteArrayTypeHandler'を指定する必要はありませんでした。 jTDSドライバはその変換を処理する必要がありますが、MySQLとそのドライバは動作しませんでした。私はそれがなかったと言うと、それは結果を返しません。 – toddcscar

関連する問題