반응형
  • collection: 1:N관계 테이블 join시
  • association: 1:1관계 테이블 join시

실제테이블 아닌 view나 subquery로 join시에도 적용되는지?

반응형

'java, mybatis' 카테고리의 다른 글

mybatis  (0) 2022.04.23
mybatis resultType  (0) 2022.04.23
mybatis 사용이유  (0) 2022.04.23
mytabis: parameterType, resultType, resultMap  (0) 2022.04.23
mybatis 비교시 주의사항 (=="비교대상"로 써야함)  (0) 2022.04.23
반응형

JDBC (Java Data Base Connectivity) 는 자바에서 Database 를 연결하기 위해 제공되는 Core API

MyBatis 는 SQL Mapper의 일종으로 JDBC를 이용해서 DB에 SQL을 실행하는 것에 대한 방식을 개발적인 관점에서 좀 더 편하고 관리하기 쉽게 만든 Wrapper LIB 개념

차를 운전할 때 핸들은 제조사에서 달려 나오지만 사람에 따라서 다양한 형태의 핸들 커버를 씌우기도 하고 손잡이도 달기도 

제조사에서 달려 나온 핸들을 JDBC 라고 생각하시면 MyBatis 같은 LIB들은 핸들커버나 손잡이 정도에 해당하겠네요.

중요한건 핸들만 가지고 운전을 할수는 있지만 핸들없이 핸들커버만 가지고 운전을 할 수는 없다는점을 생각해 보시면 될 것 같습니다.

반응형

'java, mybatis' 카테고리의 다른 글

mybatis collection, association  (0) 2022.04.27
mybatis resultType  (0) 2022.04.23
mybatis 사용이유  (0) 2022.04.23
mytabis: parameterType, resultType, resultMap  (0) 2022.04.23
mybatis 비교시 주의사항 (=="비교대상"로 써야함)  (0) 2022.04.23
반응형

resultType 은 리턴값이 List<?> 여도 DTO, VO, Map 으로 지정해줘야함

반환된 최종값이 아닌 반환될 객체의 타입으로 지정해줘야함

select A from B 같은 경우에는 List<String> 형태일테니 resultType 은 java.lang.String

select A,B from C의 경우,  따로 객체안만드려면 map

반응형

'java, mybatis' 카테고리의 다른 글

mybatis collection, association  (0) 2022.04.27
mybatis  (0) 2022.04.23
mybatis 사용이유  (0) 2022.04.23
mytabis: parameterType, resultType, resultMap  (0) 2022.04.23
mybatis 비교시 주의사항 (=="비교대상"로 써야함)  (0) 2022.04.23
반응형
  • 생산성 - 빠른개발
    • DBCP만 썻을 때 connection, resultSet, statement, transaction 관리도 해야되고 특히 운영하다 명시적인 connection, resultSet, statement, transaction 닫지 않고 잘못 써서 서버 죽는 경우 허다
    • resultSet의 데이터 매핑도 신경써야 하고 소스분석도 어려워짐
  • 보안: SQL injection공격에 신경안써도 됨 (DBCP경우 preparedStatement 쓰면 문제없지만...)
  •  oracle의 경우 blob, clob 치환에 신경안써도 됨
  • 디버깅 쉬워짐: ? => value로 매핑된 쿼리문으로 로그남겨서...
  • 데이터 캐싱(LIFO, FIFO, LRU) 가능
    • 조회용 데이터 성능 안나올때 성능개선 가능, xml 설정만으로 적용가능
  • resultType result class를 VO안쓰고 맵으로 받을 수 있음
반응형

'java, mybatis' 카테고리의 다른 글

mybatis collection, association  (0) 2022.04.27
mybatis  (0) 2022.04.23
mybatis resultType  (0) 2022.04.23
mytabis: parameterType, resultType, resultMap  (0) 2022.04.23
mybatis 비교시 주의사항 (=="비교대상"로 써야함)  (0) 2022.04.23
반응형
  • parameterType:  실제로 넘어오는 actual parameter로 유추가능하기 때문에 생략가능
  • resultType, resultMap
    • resultType: className or alias사용가능
      • java String class에 대한 alias는 string, 그래서 String, string이렇게 대소문자 모두 사용가능한듯
    • resultMap: mapper XML내부에서 정의해서 사용
      • 복잡한 구조로 변경이 필요할 때는   resultMap으로 변환해서 사용하면 좋음
      • 다음과 같이 3단구조로 된 복잡한 애도 아래처럼 매핑해서 사용가능
        • <resultMap id="homeAppTab" type="TabPayload">
              <id property="idx" column="idx"/>
              <result property="status" column="status"/>
              <result property="deviceType" column="device_type"/>
              <result property="region" column="region"/>
              <result property="tabCode" column="tab_code"/>
              <result property="tabName" column="tab_name"/>
              <collection property="tabMultiLangList" ofType="TabMultiLangPayload">
                <id property="idx" column="tabLangIdx"/>
                <result property="tabLangCode" column="tabLangCode"/>
                <result property="tabLangName" column="tabLangName"/>
              </collection>
              <collection property="categoryList" ofType="CategoryPayload">
                <id property="idx" column="categoryIdx"/>
                <result property="categoryCode" column="category_code"/>
                <result property="categoryName" column="category_name"/>
                <result property="categoryOrder" column="category_order"/>
                <collection property="categoryMultiLangList" ofType="CategoryMultiLangPayload">
                  <id property="idx" column="categoryLangIdx"/>
                  <result property="categoryLangCode" column="categoryLangCode"/>
                  <result property="categoryLangName" column="categoryLangName"/>
                </collection>
                <collection property="categoryResultList" ofType="CategoryResultPayload">
                  <id property="idx" column="categoryResultIdx"/>
                  <result property="countryCode" column="country_code"/>
                  <result property="providerId" column="provider_id"/>
                  <result property="contentType" column="result_content_type"/>
                  <result property="contentId" column="content_id"/>
                  <result property="resultOrder" column="result_order"/>
                </collection>
              </collection>
            </resultMap>

 

반응형

'java, mybatis' 카테고리의 다른 글

mybatis collection, association  (0) 2022.04.27
mybatis  (0) 2022.04.23
mybatis resultType  (0) 2022.04.23
mybatis 사용이유  (0) 2022.04.23
mybatis 비교시 주의사항 (=="비교대상"로 써야함)  (0) 2022.04.23
반응형

mybatis java.lang.numberformatexception for input string에러가 난데없이 발생

string을 number로 잘못 변환했다는 건데 그런적이 없는데 왜?? 알고보니 아래와 같은 이유였음 

<if test=status=='P' and status=='p'> -> 'p'를 char -> int로 변환하여 비교시 status도 int로 변환되어 에러남

<if test=status=="P" and status=="p"> ->"p"로 해줘야함

반응형

'java, mybatis' 카테고리의 다른 글

mybatis collection, association  (0) 2022.04.27
mybatis  (0) 2022.04.23
mybatis resultType  (0) 2022.04.23
mybatis 사용이유  (0) 2022.04.23
mytabis: parameterType, resultType, resultMap  (0) 2022.04.23

+ Recent posts