mybatis에 대한 간단한 소개를 드리겠습니다
MyBatis는 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하는 우수한 지속성 계층 프레임 워크입니다. MyBatis는 거의 모든 JDBC 코드의 수동 설정과 매개 변수 및 결과 세트의 검색 캡슐화를 제거합니다. MyBatis는 구성 및 원래 매핑, 맵핑 인터페이스 및 Java의 Pojos (일반 Old Java Objects)를 데이터베이스의 레코드로 사용하기 위해 간단한 XML 또는 주석을 사용할 수 있습니다.
이 기사는 실제로 Java Operation Oracle Type XMLType Summary 2 : MyBatis 사용에 대한 요약입니다.
Mybatis는 사용자 정의 변환기를 구현합니다. 이는 매우 간단합니다. 주요 단계는 세 단계로 나뉩니다. 여기서 우리는 XMLType 유형을 예로 들어 보겠습니다.
첫 번째 단계
TypeHandler 인터페이스를 구현하기 위해 새 변환 클래스를 만듭니다. 인터페이스의 제네릭은 매개 변수 유형을 지정하고 지정되지 않은 경우 객체입니다.
공개 클래스 xmltypetypehandler는 TypeHandler <string>을 구현합니다
이 인터페이스에는 다음 4 가지 방법이 있습니다.
public void setParameter (Propuble Statement PS, Int I, String Parameter, JDBCTYPE JDBCTYPE) public String getResult (resultet rs, String ColumnName)는 sqlexceptionPublic String getResult (resultet rs, int columnIndex) sqlexceptionpublic string getResult (callindectement cs, int columnindex).
메소드의 기능은 이름으로 이해되어야합니다. SetParameter는 매개 변수를 전달할 때 작동입니다. 매개 변수가 데이터베이스에 전달되기 전에 처리 해야하는 코드는이 메소드로 작성 될 수 있습니다. 다른 세 가지는 쿼리 결과를 얻는 방법입니다. JDBC의 쿼리 결과를 얻은 후 원하는 모든 유형으로 변환 할 수 있습니다.
2 단계
Mapper-Config에서 JDBCTYPE가 지정할 수있는 유형이 MyBatis의 열거 클래스 org.apache.ibatis.type.jdbctype에 명확하게 정의 된 컨버터 클래스를 등록하십시오. 열거 외에는 다른 값이 될 수 없으며, 그렇지 않으면 오류가 발생합니다. 여기서는 열거에 필요한 xmltype 유형이 없기 때문에 정의되지 않은 것으로 지정됩니다. (특정 유형을 지정할 수도 있습니다. TypeHandler를 사용하여 사용시 특정 클래스를 지정할 수 있습니다) :
<typehandlers> <typehandler javatype = "string"jdbctype = "undefined"handler = "com.tyyd.dw.context.xmltypetypehandler"/> </typehandlers>
3 단계
Mapper 매핑 파일에서 유형 변환기 사용 :
t_content에 삽입하십시오 (<include refid = "fullcolumns"/>) 값 (#{controlid, jdbctype = bigint},#{xmlfile, javatype = string, jdbctype = undefined, typehandler = com.tyyd.dw.context.xmltypetypehandler},#{drmfile, jdbctype = blob})javatype, jdbctype 및 typehandler를 지정하여 들어오는 XMLFile 매개 변수에주의를 기울여 사용하려는 프로세서 유형을 나타냅니다. 물론 그중 하나만 지정할 수 있지만이 항목의 존재는 독특해야합니다. 배수가 정확히 동일하고 사양이 명확하지 않은 경우 MyBatis는 구별 할 수 없기 때문에 오류가 발생합니다.
이 시점에서 MyBatis 용 사용자 정의 유형 변환기가 구현되었습니다. 위에 지정된 유형 프로세서는 데이터를 삽입 할 때만 작동합니다. 쿼리 중에 사용자 정의 유형 프로세서를 사용하려면 resultmap의 속성 태그에 지정해야합니다. 태그 Javatype, JDBCType 및 TypeHandler의 이름과 사용 방법은 동일하므로 여기에서 반복하지 않습니다.
전체 유형 변환기 코드를 첨부하십시오. xmltype 유형을 쿼리 할 때 데이터베이스의 xmltype.getclobval ()을 사용하여 작동 할 문자열로 직접 반환 할 수 있으므로 반환 된 메소드가 특별히 처리되지 않았습니다. (xmltype.getStringVal () 함수를 사용하여 문자열을 반환 할 수 있지만 실제 사용 중에 필드가 null이면 getStringVal () 오류가 ORA-06502의 오류가 있음을 발견합니다. 숫자 또는 값 오류 : 문자 버퍼가 너무 작아서 오류가 없으므로 GetClobal () 기능을 사용하는 것이 권장됩니다.
/*** Oracle sys.xmltype 유형 사용자 정의 프로세서** 사용자 : liyd* 날짜 : 13-12-27* 시간 : 4:53 pm*/public class xmltypetype handler는 typehandler <string> {@overridepublic void setparameter (proadstatement ps, int i, string parameter, jdbctype jdbctype) squlectection {terrates storection {jdbctype jdbctype) (stringUtils.isnotblank (parameter))) {delegatingConnection Connection = (DELEGATINGCONNECTION) ps.getConnection (). getMetAdata (). getConnection (); xmltype xmltype = xmltype.createxml (connection.getDelegate (), parameter (); xmltype);} else {ps.setString (i, null);}}@atrivePublic String getResult (resultet rs, string columnname)는 sqlexception {// xmltype 필드가 xmltype.getclobval ()를 사용하여 querying database sql string (column rtstring); getResult (resultset rs, int columnIndex)는 sqlexception {return rs.getString (columnIndex);}@atrivePublic String getResult (callableStatement cs, int columnIndex)가 sqlexception {return cs.getString (columnIndex);}}를 던집니다.위의 것은 MyBatis 용 TypeHandler를 구현하여 TypeHandler에 의해 사용자 정의 유형 변환기를 구현하는 방법입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!