2012-03-02 5 views
1

DB에서 암호화 된 열과 일치해야합니다. 바이트 []로 일치시키기 위해 암호화 된 값을 전달해야합니다. 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 열의 데이터 유형이 string (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'를 지정하지 않아도됩니다. MySQL과 드라이버가 작동하지 않는 반면 jTDS 드라이버는 해당 변환을 처리해야합니다. 내가 말하지 않으면 아무런 결과도 반환하지 않을 것입니다. – toddcscar

관련 문제