Mybatis 실전 의 TypeHandler 고급 진급

3036 단어 mybatistypehandler
지난 글 은 프로젝트 실전 에서매 거 진 종 류 를 처리 하기 위해 Mybatis 의 TypeHandler 를 사용자 정의 합 니 다.글 의 마지막 부분 에서 도 옥 에 티 를 지적 했다.그것 은 매번 우리 가 정의 한 매 거 진 TypeHandler 를 지정 해 야 한 다 는 것 이다.프로젝트 매 거 유형 이 늘 어 나 면서 매번 이 걸 한 번 씩 쓰 는 것 은 반감 이다.그럼 이번 에는 이 고통 을 해결 하 겠 습 니 다.
사고 분석.
  • 위의 글 에 따 르 면 my batis 는 매 거 진 유형의 TypeHandler 를 기본 적 으로 처리 하기 때문에 저 희 는 사용자 정의 매 거 진 TypeHandler 를 Mybatis 에 등록 해 야 합 니 다
  • 사용자 정의 TypeHandler 를 등록 한 후에 Mybatis 에 게 우리 가 지정 한 매 거 진 형식(전편 의 Displayed Enum)을 만 나 기만 하면 사용자 정의 매 거 진 TypeHandler(전편 은 EnumTypeHandler)로 전환 하 라 고 알려 야 합 니 다.Mybatis 는 시작 할 때 TypeHandler Registry 를 통 해 등록 되 기 때문에 jdbc Type,JavaType,TypeHandler 세 사람의 관 계 를 구축 합 니 다.따라서 이 는 Mybatis 가 시작 할 때 도 TypeHandler Registry 를 통 해 우리 의 모든 매 거 진 유형(JavaType)과 사용자 정의 매 거 진 TypeHandler(EnumTypeHandler)를 연결 해 야 한 다 는 것 을 의미 합 니 다
  • 여러분 의 이 해 를 편리 하 게 하기 위해 Mybatis 의 TypeHandler Registry 와 관련 된 부분 소스 코드 를 붙 입 니 다.
     
    실전
    SqlSessionFactoryBean
    우리 프로젝트 는 Spring 을 사 용 했 기 때문에 Spring 로 통합 한 Mybatis 입 니 다.Spring 은 SqlSession Factory Bean 을 통 해 Mybatis 를 초기 화 합 니 다.그래서 우 리 는 그것 에 손 을 써 야 하지만,모든 것 이 그리 순 조 롭 지 않다.
    Sql Session Factory Bean 의 소스 코드 를 살 펴 보 니 SqlSession Factory Bean 은 우리 가 들 어 갈 수 있 는 곳 이 없 는 것 을 발견 하고 TypeHandler Registry 를 호출 하여 우리 의 매 거 진 을 등록 할 수 있 습 니 다.더욱 안 타 까 운 것 은 모든 속성 이 private 라 는 것 이다.이 제 는 AOP 가 들 어 갈 수 없 을 뿐만 아니 라 계승 을 통 해 게 으 름 을 피 울 수도 없다.
    그만 두 자,우 리 는 Sql Session Factory Bean 의 코드 를 성실 하 게 다시 한 번 쓸 수 밖 에 없다.
    DefaultSqlSessionFactoryBean
    코드 의 양 이 비교적 많아 서 핵심 코드 만 붙 였 다.절 차 는 다음 과 같다.
    DefaultSqlSession Factory Bean 계승 SqlSession Factory Bean.
  • SqlSession Factory Bean 의 코드 를 모두 DefaultSqlSession Factory Bean 에 복사 합 니 다
  • 4.567917.다음 과 같은 방법 을 호출 합 니 다
    상기 코드 는 이 코드 전에 실행 해 야 한 다 는 것 을 명심 하 세 요.

    xml Mapper Builder.parse()방법 은 모든 mapper.xml 설정 파일 을 분석 하기 시 작 했 습 니 다.이 때 resultMap 도 해석 하여 사용자 정의 TypeHandler 가 적용 되 지 않 습 니 다.
    명심 하 세 요!명심 하 다
    마지막.
    이상,코드 는 완 공 된 셈 입 니 다.Spring 설정 파일 에서 SqlSession Factory Bean 을 우리 의 DefaultSqlSession Factory Bean 으로 바 꾸 는 것 을 기억 하 십시오.그렇지 않 으 면 우리 의 일 은 헛수고 가 될 것 이다.
    이제 파 도 를 시작 할 수 있 습 니 다.그 전에 우 리 는 이렇게 써 야 합 니 다.
    
    <resultMap>
     ...
     <result column="status" jdbcType="TINYINT" property="status" typeHandler="xxx.xxx.EnumTypeHandler" />
     ...
    </resultMap>
    이제 우 리 는 type:Handler 를 쓰 지 않 아 도 된다.
    
    <resultMap>
     ...
     <result column="status" jdbcType="TINYINT" property="status" />
     ...
    </resultMap>
    이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!

    좋은 웹페이지 즐겨찾기