MyBatis 입문 학습 - Oacle 연결 CURD 기본 동작 구현

목차
  • 서문
  • Oacle 라 이브 러 리 가 져 오기
  • 설정
  • 환경 설정
  • 설정 참조
  • 맵 설정
  • 조회
  • 단일 조건 조회
  • 다 조건 조회
  • 클래스 필드 를 통 해 매개 변 수 를 전달 합 니 다
  • 맵 인터페이스 로 인삼 전달
  • Param 주석

  • 삽입
  • 업데이트
  • 삭제
  • 필드 맵
  • 참고 문헌
  • 머리말
    이 기록 은 my batis 를 사용 하여 Oacle 데이터 베 이 스 를 연결 하여 기본 적 인 CURD 작업 을 수행 합 니 다.
    Oacle 라 이브 러 리 가 져 오기
    Oacle 요금 이 있 기 때문에 maven 은 Oacle 라 이브 러 리 가방 이 없습니다. 저희 가 직접 가 져 와 야 합 니 다. 외부 가방 을 수 동 으로 가 져 올 수도 있 고 Oacle 의 jar 를 maven 라 이브 러 리 종 으로 가 져 올 수도 있 습 니 다.구체 적 인 가 져 오기 절 차 는 Maven 이 Oracle 에 대한 의존 과 구동 을 추가 하 는 것 을 볼 수 있 습 니 다.
    my batis 라 이브 러 리 를 가 져 옵 니 다. 로 컬 에 서 는 3.5.5 버 전 을 사용 합 니 다.마지막 설정 은 다음 과 같다.
    
    
      org.mybatis
      mybatis
      3.5.5
    
    
    
      com.oracle.jdbc
      ojdbc6
      11.2.0.1.0
    
    

    배치 하 다.
    my batis 설정 을 준비 하고 resources 디 렉 터 리 에 my batis - config. xml 파일 을 새로 만 듭 니 다. 설정 은 다음 과 같 습 니 다.
     
    
    
    
        
            
            
            
            
        
    
        
        
            
            
                
                
                
                
                    
                    
                    
                    
                
            
            
                
                
                
                
                     
                    
                    
                    
                
            
        
        
            
        
    
    
    

    환경 설정
     
          
          
          
          
              
              
              
              
          
      
    

    그 중에서 environments 여러 환경의 Oacle 데이터 원본 을 설정 할 수 있 습 니 다.id 환경 변수의 번호 로 default 에서 현재 환경 값 을 설정 할 수 있 습 니 다.dataSource 에 데이터 원본 을 설정 합 니 다.유형 은 3 가지 입 니 다.포함: POOLED 풀 화, UNPOOLED 비 풀 화 와 JNDI 다른 설정 원 에서 로드 합 니 다.driver 설정 한 클래스 이름, Oacle 작성 oracle.jdbc.driver.OracleDriver.url 설 정 된 데이터 원본 을 위해 239 테스트 라 이브 러 리 jdbc:oracle:thin:@10.60.45.239:1521:devdb 를 사용 합 니 다.username 사용자 이름 입 니 다.password 비밀번호 입 니 다.
    설정 참조
    value 에 ${ } 와 같은 설정 인용 을 작성 할 수 있 으 며, properties/propertie 에 해당 하 는 실제 설정 값 을 추가 할 수 있 습 니 다.
    
        
            
        
        
        
            ...
            
                ...
                
                     
                    ...
                
            
        
    
    

    설정 맵
    데이터 원본 을 설정 한 후 CRUD 에 대응 하 는 SQL 구문 과 클래스 간 의 맵 관 계 를 포함 하여 해당 하 는 맵 을 추가 해 야 합 니 다.
    
    
      ...
        
            
        
    
    

    resources 디 렉 터 리 에 새 파일 singleTransMapper.xml 을 만 들 면 MyBatis 는 singleTransMapper.xml 을 대응 하 는 클래스 에 표시 합 니 다.resources 외 에 도 MyBatis 는 class, url, package 총 4 가지 설정 을 지원 합 니 다.class 구체 적 인 유형 명 을 설정 할 수 있 습 니 다. 예 를 들 어 com.mybatistest.DAO.SingleTransMapper.url 완전한 파일 경 로 를 설정 할 수 있 습 니 다. 예 를 들 어 file:///var/mappers/PostMapper.xml.package 이름 을 설정 하고 모든 인 터 페 이 스 를 등록 할 수 있 습 니 다.
    조회 하 다.
    
    public class SingletransDTO {
    
        public String EnterpriseNum;
    
        public String TransNo;
    
        public String CommandCode;
    
        public int State;
    }
    
    

    단일 조건 조회
    검색 어 를 추가 하고 흐름 번 호 를 입력 하여 검색 한 단일 정 보 를 되 돌려 줍 니 다.
    
    
    
        
    
    
    
    package 자바 에 대응 하 는 클래스 가 필요 하 며, 매개 변수 와 반환 유형 도 일치 해 야 합 니 다.
    mapper 노드 에 select 표시 selection 구문 namespace 을 입력 한 매개 변수 parameterType 를 되 돌려 주 는 형식 으로 추가 합 니 다. 되 돌려 주 는 유형 은 자바 의 클래스 에 대응 해 야 합 니 다.
    
    public interface SingleTransMapper {
        SingletransDTO selectSingle(String transNo);
    }
    
    
    
    String resource = "mybatis-config.xml";
    //    
    InputStream inputStream = Resources.getResourceAsStream(resource);
    //  session
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    try (SqlSession session = sqlSessionFactory.openSession()) {
      //        
        SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
        //       
        SingletransDTO blog = mapper.selectSingle("642EHDCS899XKF8P");
    
        if(blog != null) {
            System.out.println(blog.ENTERPRISENUM);
            System.out.println(blog.TRANSNO);
            System.out.println(blog.COMMANDCODE);
        }else{
            System.out.println("not found");
        }
    
    }catch (Exception exception)
    {
        System.out.println(exception.getMessage());
    }
    

    다 중 조건 조회
    클래스 필드 를 통 해 매개 변 수 를 전달 합 니 다.
    조회 설정 추가 resultType
    
    
    
       
       ...
        
    
    

    대응 하 는 맵 클래스 추가 방법 에 대응 하 는 방법 입 니 다. MyBatis 는 클래스 의 필드 를 SQL 의 매개 변수 에 반사 할 수 있 습 니 다. 클래스 의 필드 이름과 sql 에서 설정 한 대소 문자 가 일치 해 야 합 니 다.
    
    public interface SingleTransMapper {
      ...
      SingletransDTO selectSingleByClass(SingleCondition singleCondition);
    }
    public class SingleCondition {
        /**
         *    
         */
        public String TransNo;
    
        /**
         *     
         */
        public String CommandCode;
    
        public SingleCondition(String transNo, String commandCode)
        {
            TransNo = transNo;
            CommandCode = commandCode;
        }
    }
    
    

    구조 함수 류 의 다 중 조건 조회 방안 을 호출 합 니 다.
    ...
    SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
    SingletransDTO blog = mapper.selectSingleByClass(new SingleCondition( "642EHDCS899XKF8P","10009"));
    
    

    맵 인 터 페 이 스 를 통 해 전달
    다른 방안 은 HashMap 에 들 어 갈 수 있 으 며, MayBatis 는 key 에 따라 해당 하 는 매개 변 수 를 자동 으로 매 핑 합 니 다.다음은 유수 번호 와 명령 유형 을 통 해 조 회 를 실현 한다.조회 설정 추가 selectSingleByParam
    
    
    
        ...
        
    
    

    대응 하 는 방법 을 추가 합 니 다. 입력 매개 변 수 는 selectSingleByMultCondition 입 니 다.
    public interface SingleTransMapper {
      ...
        SingletransDTO selectSingleByMultCondition(HashMap param);
    }
    

    새로운 다 중 조건 조회 방법 을 수정 하 다.
    ...
    //        
    SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
    //       
    HashMap param = new HashMap();
    param.put("transNo","642EHDCS899XKF8P");
    param.put("commandCode","10009");
    SingletransDTO blog = mapper.selectSingle2(param);
    ...
    

    주의해 야 할 것 은 HashMap 의 key 는 대소 문 자 를 구분 하지 않 기 때문에 설정 파일 sql 의 인자 대소 문자 와 일치 해 야 합 니 다.
    Param 주석
    클래스 매개 변수 와 Map 을 통 해 다 중 조건 조 회 를 하려 면 추가 대상 을 만들어 야 합 니 다. 다른 좋 은 방법 은 방법 매개 변수 에 Param 주 해 를 추가 하 는 방식 으로 방법 매개 변수 와 SQL 매개 변수의 매 핑 관 계 를 설정 할 수 있 습 니 다.
    조회 설정 추가 HashMap param
    
    
    
       
       ...
        
    
    

    대응 하 는 맵 클래스 추가 방법 에 대응 하 는 방법 입 니 다. 그러면 MyBatis 는 매개 변수 맵 규칙 을 알 고 자동 으로 매 핑 됩 니 다. 주의해 야 할 매개 변수 와 sql 에서 설정 한 대소 문자 도 일치 해 야 합 니 다.
    
    public interface SingleTransMapper {
        SingletransDTO selectSingle(String transNo);
        SingletransDTO selectSingleByMultCondition(HashMap param);
        SingletransDTO selectSingleByParam(@Param("param1")String transNo, @Param("param2") String commandCode);
    }
    
    

    주해 전 참 방법 을 호출 하 다.
    ...
    //        
    SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
    SingletransDTO blog = mapper.selectSingleByParam("642EHDCS899XKF8P","10009");
    ...
    

    끼어들다
    mapper 에 insert 가 삽 입 된 sql 맵 을 추가 합 니 다.
    
    
    
      
      ...
      
        insert into se_singletrans(ENTERPRISENUM,TRANSNO,COMMANDCODE,STATE) values(#{EnterpriseNum},#{TransNo},#{CommandCode},#{State})
      
    
    

    클래스 에 대응 하 는 insert 방법 추가
    
    public interface SingleTransMapper {
    
        ...
        int insert(SingletransDTO singletransDTO);
    }
    

    SqlSession 은 기본적으로 사 무 를 시작 합 니 다. insert 가 완 료 된 후에 호출 selectSingleByParam 방법 으로 사 무 를 제출 해 야 합 니 다.
    
    try (SqlSession session = sqlSessionFactory.openSession()) {
        SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
        SingletransDTO singletransDTO = new     SingletransDTO();
        singletransDTO.EnterpriseNum  = "QT330001";
        singletransDTO.TransNo = "MYBATIS.INSERT";
        singletransDTO.CommandCode = "10009";
        int count = mapper.insert(singletransDTO);
        session.commit();
        System.out.println("insert result:" +count);
    }catch (Exception exception)
    {
        System.out.println(exception.getMessage());
    }
    

    우리 도 SqlSession 인 자 를 호출 하여 자동 으로 제출 할 수 있 습 니 다.
    업데이트
    mapper 에 update 노드 를 추가 하면 삽입 을 표시 합 니 다. 삽입 할 때 삽 입 된 필드 설정 조건 을 설정 할 수 있 습 니 다. 특정한 조건 을 달성 하려 면 이 필드 를 업데이트 해 야 합 니 다.
    
    
    
      
      ...
       
        update se_singletrans
        
            
            STATE=#{State}
        
        where transno = #{TransNo} and commandCode= #{CommandCode}
      
    
    

    클래스 에 대응 하 는 update 방법 추가
    
    public interface SingleTransMapper {
    
        ...
        int update(SingletransDTO singletransDTO);
    }
    

    SqlSession 은 기본적으로 사 무 를 시작 합 니 다. insert 와 마찬가지 로 update 가 끝 난 후에 호출 commit() 방법 으로 사 무 를 제출 해 야 합 니 다.
    
    try (SqlSession session = sqlSessionFactory.openSession()) {
        SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
        SingletransDTO singletransDTO = new SingletransDTO();
        singletransDTO.EnterpriseNum = "QT330001";
        singletransDTO.TransNo = "MYBATIS.INSERT";
        singletransDTO.CommandCode = "10009";
        singletransDTO.State = 2;
        int count = mapper.update(singletransDTO);
        session.commit();
        System.out.println("update result:" +count);
    }catch (Exception exception)
    {
        System.out.println(exception.getMessage());
    }
    

    삭제
    mapper 에 delete 노드 를 추가 하면 삭 제 됩 니 다.
    
    
    
      
      ...
       
      
        delete from se_singletrans where transno = #{TransNo} and commandCode= #{CommandCode}
      
    
    

    클래스 에 대응 하 는 delete 방법 을 추가 하면 매개 변수 주석 방식 으로 인 자 를 지정 할 수 있 습 니 다.
    
    public interface SingleTransMapper {
    
        ...
        int delete(@Param("TransNo")String transNo, @Param("CommandCode") String commandCode);
    }
    

    SqlSession 은 기본적으로 사 무 를 시작 합 니 다. delete 가 끝 난 후에 SqlSession openSession(boolean autoCommit) 방법 으로 사 무 를 제출 해 야 합 니 다.
    
    try (SqlSession session = sqlSessionFactory.openSession()) {
        SingleTransMapper mapper = session.getMapper(SingleTransMapper.class);
        int count = mapper.delete("MYBATIS.INSERT","10009");
        session.commit();
        System.out.println("delete result:" +count);
    }catch (Exception exception)
    {
        System.out.println(exception.getMessage());
    }
    

    필드 맵
    필드 이름과 데이터베이스 의 필드 이름 이 일치 하지 않 으 면 설정 을 통 해 매 핑 할 수 있 습 니 다.SqlSession 노드 를 추가 하고 클래스 필드 와 데이터베이스 필드 의 맵 관 계 를 설정 합 니 다. 설정 한 필드 가 없 으 면 기본 MyBatis 의 맵 관계 에 따라 처리 합 니 다. 즉, 필드 이름 과 같은 자동 맵 입 니 다. MyBatis 는 형식 변환 을 시도 합 니 다. 이상 하면 잘못 던 질 수 있 습 니 다.우리 도 commit() 을 통 해 자신의 타 입 프로 세 서 를 사용자 정의 할 수 있다.
    
    
    
    
      
        
        
        
      
      
    
    

    TypeHandle 에 대해 서 는 구체 적 으로 설명 하지 않 습 니 다. 관심 있 는 것 은 MyBatis 사용자 정의 프로세서 TypeHandler 를 볼 수 있 습 니 다.
    참고 문헌
  • Maven 은 Oracle 의 의존 및 구동 을 추가 합 니 다
  • MyBatis 사용자 정의 형식 프로세서 TypeHandler
  • 좋은 웹페이지 즐겨찾기