2012-03-02 1 views
1

Мне нужно сопоставить с зашифрованным столбцом в БД. Мне нужно передать зашифрованное значение для сопоставления в виде байта []. Хэш-код байта [] передается вместо фактического значения, сохраненного в байте []. Поскольку хеш-код передан, он не соответствует правильному значению. Ниже приведен мой запрос и вызов функции в Mapper.java.Как передать тип байта [] в запросе sql в MyBatis?

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 имеет тип string (char, varchar и т. Д.). По умолчанию Mybatis будет использовать StringDataTypeHandler и вызывать метод .toString() вашего массива байтов. Дайте MyBatis подсказку о том, что вы хотите, чтобы содержимое вашего массива использовалось, указав типHandler.

.. 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

 Смежные вопросы

  • Нет связанных вопросов^_^