1
Oracle 사용자 정의 테이블 유형을 Java 오브젝트 목록으로 변환하기 위해 TypeHandler를 작성하는 데 어려움이 있습니다.사용자 정의 Oracle 테이블 유형에 대한 MyBatis3 TypeHandler 작성
은 데이터베이스 유형 및 기능의 사양은 다음과 같이 정의된다, 나는 쓰기를 시도하고 마지막으로
<resultMap id="myResultMap" type="GetMyStuffResult" />
<select id="getMyStuff" statementType="CALLABLE" parameterType="map">
{#{return_value, mode=OUT,
typeHandler=MyStuffToList
jdbcTypeName=MySchema.MY_TYPE_TABLE,
jdbcType=ARRAY} =
call MySchema.MyPackage.GET_MY_STUFF (
my_user_name => #{userName, mode=IN, jdbcType=VARCHAR}
)}
</select>
:
CREATE OR REPLACE TYPE MySchema.MY_TYPE IS OBJECT (
first_name VARCHAR2(50),
last_name VARCHAR2(50)
);
CREATE OR REPLACE TYPE MySchema.MY_TYPE_TBL IS TABLE OF MY_TYPE;
FUNCTION GET_MY_STUFF(my_user_name IN VARCHAR2) RETURN MySchema.MY_TYPE_TABLE;
내가 그것을에서 다음 호출이있는 MyBatis로 매퍼가 TypeHandler, getResult 오버라이드에서 비참하게 실패합니다.
public class MyStuffToList implements TypeHandler<List<GetMyStuffResult>> {
// Other Overrides Here
@Override
public List<GetMyStuffResult> getResult(CallableStatement cs, int columnIndex)
throws SQLException {
List<GetMyStuffResult> results = new ArrayList<GetMyStuffResult>();
Array array = cs.getArray(columnIndex);
// HOW DO I CONVERT THE Array TO List<GetMyStuffResult> ???
return results;
}
}
Can not 나는 TypeHandler
에있는 CallableStatement
에서 내가 원하는 목록으로 전달 된 것 같습니다.