반응형

mybatis SQL 6

[mybatis] mybatis data binding (feat. vo)

최근에 알게된 사실인데 mybatis 사용 시 select하는 컬럼명과 vo 필드가 서로 카멜케이스, 스네이크케이스로 일치할 경우 자동으로 vo에 바인딩 하기 때문에 as를 따로 주지않아도 된다.--예시 쿼리SELECT USER_NAME FROM users--예시 VO@Datapublic class User { //이렇게 컬럼명의 카멜케이스로 된 경우는 자동 바인딩됨    private String userName;   }이걸 몰라서 그동안 아래처럼 컬럼마다 전부 AS를 달았었다..이제부터 생략해야지SELECT user_name as userName     , user_id as userId     , user_email as userEmail     --....  FROM USERS 혹 컬럼명과 vo..

IT/development 2024.03.17

[mybatis] mybatis 동적 쿼리 작성 시 "," 관련

목차 사소할 수 있지만 이유를 몰라서 쿼리 작성 시 에러 때문에 시간을 잡아 먹어서 역시나 미래의 내가 보기위해 기록한다. 예를 들어 위와 같은 쿼리가 있을 때 parameter값에 따라 동적으로 SQL을 생성 시 SELECT문 컬럼 뒤쪽에 ","를 넣으면 문법에러가 발생한다. 넘어온 member_id값이 있으면 , mcm.etc가 붙는 데 만일 위의 쿼리가 아래와 같다면 동적 쿼리를 붙이질 못한다. select m.*, mcm.tag_type, mcm.tag_name, mcm.etc FROM member m LEFT OUTER JOIN member_code_mapping ON m.member_seq = mcm.member_seq LIMIT #{start}, #{length} 이 경우는 넘어온 membe..

IT/development 2022.11.22

[mybatis] 상세 조회 시 복수값 추가 조회(feat. vo & map)

목차 상세 조회 시 복수값 추가 조회 😗 기존 상세조회 API에서 상세 조회 시 해시태그와 같은 복수값을 추가로 조회해야 되는 경우가 생겼다. 가져와야 되는 필드값은 2개밖에 안되므로 추가로 vo를 만들고 싶지 않아 아래처럼 수정했다. Controller 기존에는 Controller에서 return으로 VO로만 받았던 걸 map으로 받도록 변경, VO결과와 tag리스트 결과를 map에 담아서 최종적으로 return /** * 상세 * @param * @param * @return */ @Operation(summary = "멤버 상세 조회", description = "멤버를 상세 조회한다.") @Parameters({@Parameter(name = "mem_no", description = "회원 일련..

IT/development 2022.11.22

[mybatis] mybatis 이중 foreach insert(feat. 이중 계층 객체 저장)

목차 mybatis를 이용해서 계층 구조의 DTO 혹은 VO객체를 저장하는 방법을 기록한다. 대상 DBMS: mysql, mariaDB 아래처럼 객체가 객체를 참조하는 경우 이를 저장하는 방법이다.(시간 상 코드 위주로 최대한 심플하게 정리) 마블 캐릭터 데이터를 조회하는 오픈 API가 있다고 가정하고 API 결과를 list에 담아 루프를 돌려 객체에 세팅한 뒤 DB에 저장하는 로직 예시(상상 코딩 😅) // 메인객체 @Getter @Setter public class TestVO { private Long mem_no; private String data_type; private String code; private List addList = new ArrayList(); } // 서브 객체 @Gett..

IT/development 2022.11.21

[mybatis] mybatis 동적쿼리(feat. <where></where>)

목차 mybatis Dynamic SQL 😃 계속 실수 했던 동적쿼리이다. 오늘 나는 이걸 이해 했지만 미래의 넌 또 까먹을 수 있으니 여기에 메모해 둔다. 동적 WHERE 회원 테이블에서 회원이름과 이메일의 존재에 따라 동적으로 WHERE을 붙여서 검색하는 예시이다. 기존에는 mapper xml에서 아래처럼 작성했었다. 쿼리를 작성하고는 반드시 단위 테스트를 여러번 해봐야 한다는 걸 또 깨달았다.(그걸 이제 알았니? 😥) SELECT * FROM member WHERE member_name = #{memberName} WHERE email = #{email} 역시 개발하면서 JUnit으로 단위 테스트를 계속 해야 한다. 이걸 모르고 나중에 tomcat을 띄웠다면 에러를 너무 늦게 발견 하게 될 것이다...

IT/development 2022.11.20
반응형