본문 바로가기
programming/web

[spring]mybatis 연결

by 힐무새 2017. 6. 8.

mybatis 연결



컨테이너(dispatcher-servlet.xml)에 모듈
  • DB 연결정보
  • mybatis 모듈 등록, 설정 파일
  • dao interface 위치 등록
Mybatis 설정
  • 공통 vo를 등록, alias 이름
  • 업무별 XXXmapper.xml을 등록
mapper.xml
  • namespace 설정
  • resultMap 선언.. : vo
  • sql 선언: select
    • 입력값: parameterType
    • return: resultMap(ArrayList), resultType(vo)
    • update, insert

mybatis MVC 패턴



dispatch-servlet.xml(조립기)

  1. 연결: BasicDataSource : dataSource
      • 드라이버
      • DB 서버 정보(ip, port, sid, 계정, 비밀번호)
  2. mybatis 설정
    • 연결 정보를 받아서 mybatis와 설정
      • dataSource ref = >dataSource
    • mybatis 공통 설정 config.xml 파일 선언
      • configLocation
  3. Repository (DAO) 설정
    • MapperScannerConfigurer를 통해 dao단의 패키지를 선언


          mybtais 공통 설정 config.xml

          • classpath:resource/mybatis.Spring.xml
            • classpath:src를 기준으로 잡힘
            • resource 폴더에 mybatis 공통 설정 파일인 mybatis.Spring.xml
          • 역할
            • 모듈 별로 실제 처리할 sql 파일(xml)을 등록 처리합니다
              <mapper resource ="EmpMapper.xml"/>
            • 공통 VO,DTO 등을 alias으로 지정, sql파일에서 활용성을 높이기 위해 간단한 이름으로 설정할 수 있습니다.
              springweb.z01_dto.Emp  ==> emp

          XXXMapper.xml

          • mybatis 설정 파일인 config.xml에서 모듈별로 sql을 사용할 수 있게끔 처리하는 파일입니다.
            • sql 처리: select * from
            • 인식할 수 있는 id명: dao 단에서 호출 시 필요
              hello.CallDao.callList
            • 입력 관련 데이터 값 처리 parameterType="CallDto"
            • return 값에 대한 처리: resultMap = VO가 모인 ArrayList 형태
            • namespace: hello.CallDao를 선언하면 id에 namespace명을 생략할 수 있습니다.
          • DAO단 interface와 밀접한 연관관계
            • dao단 interface 패키지명.인터페이스명.메서드명

          호출 상관관계도



          간단하게 말하자면...

          dispatcher-servlet.xml에서 mybatis lib 추가 및 db 연결, mybatis.Spring.xml에서  정의한 mapper를 통해 각 sql 결과를 ResultMap을 통해 저장된 arrayList를 return하는 DAO객체를 미리 메모리에 할당하고 이것이 컴파일 과정에서 service단에서 interface로 선언한 dao field와 autowired되고, 이를 controller단에서 가져와서 jsp view단에 뿌린다. ㄷㄷㄷ 틀리면 지적좀 해주세요..


          개발 process

          1. 화면단 구성(.jsp)
          2. sql 처리(raw data 확인)
          3. DTO, VO, ArrayList<DTO>
             
          4. Repository(DAO)
          5. mybatis.Spring.xml
          6. EmpMapper.xml 처리(sql)
            • repository/dao를 연결할 id     
              • namespace로 선언         
                - dao패키지명.인터페이스명     
              • id: dao 인터페이스의 메서드명 
            • 입력처리할 dto/vo단 처리
              • <select parameterType="emp"
                - where ename like '%'||#{emp.ename} ||'%'   ==> emp.getEname()
              • return할 객체(dto, ArrayList<VO>)
                • resultMap: VO --> ArrayList
                  <resultMap type="한개 VO 객체" id="empMap"/>
                  <result column ="ename" property="name"/>
                • resultType : VO
                • <select resultMap=empMap"
          7. Controller 처리
            • service 호출
            • model 처리
            • view 선택
          8. 화면단 마무리
            • 넘겨온 model 데이터 el/jstl 처리
            • javascript, jquery 처리..

          수정 처리 

          • 리스트 된 데이터를 클릭 시, 상세 화면으로 전환 처리
            1. 초기 화면 구성
            2. sql 작성
            3. DAO 수정 메서드 추가
            4. DB.xml 처리..
            5. service 단
            6. controller 모델 처리
            7. 화면단 정리


          'programming > web' 카테고리의 다른 글

          [spring]첨부파일 등록  (0) 2017.06.22
          [spring]동적 SQL  (0) 2017.06.13
          [spring]autowire, qualifier  (0) 2017.06.08
          [spring]ViewResolver  (0) 2017.06.07
          [spring]ModelAndView, redirect, forward, session  (0) 2017.06.07