본문 바로가기

학원

(182)
[MyBatis] 조인예제(3) / collection 엘리먼트, autoMapping 속성 [MYREPLY 테이블] [MYUSER 테이블] [MYCOMMENT] 테이블 이번에는 MYCOMMENT 테이블과 MYREPLY 테이블을 조인할 것이다 게시글번호를 전달받아 MYCOMMENT 테이블에 저장된 게시글정보(1개)와 MYREPLY 테이블에 저장된 댓글정보(0개 이상)를 검색하여 MyCommentReply 객체로 제공하는 엘리먼트를 등록할 것이다. 1:N 관계의 테이블 조인에서는 OUTER JOIN을 사용하여 검색해야 한다. 해당 예제에서는 LEFT OUTER JOIN을 사용해야한다. 그래야만 댓글이 없어도 게시물이 출력되기 때문이다 List 객체를 생성하기 위해서는 collection 엘리먼트를 사용해야 한다. Collection collection은 1:N 관계의 테이블 조인에서 0개의 검색행..
[MyBatis] 조인예제(2) / association 엘리먼트의 속성 MYREPLY 테이블과 MYUSER 테이블을 조인해보자 [MYREPLY 테이블] [MYUSER 테이블] DTO 클래스 MYREPLY 테이블과 MYUSER 테이블의 컬럼값을 저장하기 위한 클래스 → 1:1 관계의 테이블 조인에 대한 검색결과 저장 [MyReplyUser] package xyz.itwill.dto; public class MyReplyUser { //MYREPLY 테이블(댓글정보)의 검색행을 객체로 제공받아 저장하기 위한 필드 - 검색행 1개 private MyReply reply; //MYUSER 테이블(회원정보)의 검색행을 객체로 제공받아 저장하기 위한 필드 - 검색행 1개 private MyUser user; public MyReplyUser() { // TODO Auto-generat..
[MyBatis] 비교연산자가 엘리먼트로 인식되는 에러 해결 테이블, 시퀀스를 새로 생성해준다 MYREPLY 테이블 : 게시글에 대한 댓글을 저장하기 위한 테이블 MYREPLY_SEQ : MYREPLY 테이블의 REPLY_NO 컬럼값으로 저장될 자동 증가값을 제공하는 시퀀스 create table myreply(reply_no number primary key, reply_id varchar2(50) , reply_content varchar2(100), reply_date date, reply_comment_no number); create sequence myreply_seq; 이름 널? 유형 ---------------- -------- ------------- REPLY_NO NOT NULL NUMBER - 댓글 번호 REPLY_ID VARCHAR2(50)..
[MyBatis] 조인예제(1) / association 엘리먼트 앞서 만든 테이블들을 조인해볼 것이다. MYCOMMENT와 MYUSER 테이블을 조인시켜 사용자의 이름값을 가져와보자. [MYCOMMENT 테이블] [MYUSER 테이블] 이를 위해서는 이름을 저장하기 위한 필드가 필요하다. MYCOMMENT 테이블과 MYUSER 테이블의 컬럼값을 저장하기 위한 DTO 클래스 [MyComment3] 을 작성해보자 [MyComment3] 클래스는 1 : 1 관계의 테이블 조인에 대한 검색결과를 저장하기 위한 클래스이다 package xyz.itwill.dto; //MYCOMMENT 테이블과 MYUSER 테이블의 검색결과를 저장하기 위한 클래스 public class MyComment3 { //MYCOMMENT 테이블의 컬럼값을 저장하기 위한 필드 private int no..
이클립스 프로젝트 불러오기, import https://emflant.tistory.com/88
[MyBatis] 자동매핑&수동매핑 예제 / selectKey,counstructor 엘리먼트 테이블 및 시퀀스 생성 MYCOMMENT 테이블 : 게시글을 저장하기 위한 테이블 MYCOMMENT_SEQ : MYCOMMENT 테이블의 COMMENT_NO 컬럼값으로 저장될 자동 증가값 /*테이블 생성*/ create table mycomment(comment_no number primary key, comment_id varchar2(50) , comment_content varchar2(100), comment_date date); /*시퀀스 생성*/ create sequence mycomment_seq; DTO 생성 [MyComment1] 클래스 선언 - 테이블의 컬러명과 같은 이름으로 클래스의 필드명을 작성 (자동 매핑) → 스네이크 표기법으로 작성된 컬럼명은 카멜 표기법의 필드명으로 작성해준다..
[MyBatis] 자동매핑&수동매핑 / resultMap 회원 정보를 저장하기 위한 [MYUSER] 테이블을 생성해주자 create table myuser(user_id varchar2(50) primary key, user_name varchar2(50)); SQL 명령은 대소문자를 구분하지 않기 때문에 식별자를 선언할 때 스네이크 표기법을 사용한다. - 스네이크 표기법(SnakeCase) : 단어와 단어를 구분하기 위해 _ 기호를 사용하여 식별자를 선언하는 방법 DTO 클래스 [MyUser.java] 를 선언해보자. Java 자료형(Class, Interface, Enum)을 선언할 경우에는 파스칼 표기법을 사용한다. - 파스칼 표기법(PascalCase) : 모든 단어의 첫문자를 대문자로 표현하여 식별자를 선언하는 방법 Java 자료형을 제외한 식별자는 ..
[MyBatis] 매퍼 바인딩 / package 엘리먼트 매퍼 바인딩 XML 기반의 매퍼파일은 SqlSession 객체로 SQL 명령을 제공받아 사용하기 불편하다는 단점이 있다. 때문에 XML 기반의 매퍼파일은 DAO를 만들어줄 때 오타 때문에 오류가 날 가능성이 큰 반면에 인터페이스 기반의 매퍼는 DAO를 만들어줄 때 자동완성 기능으로 오류 날 가능성이 적다. 이처럼 인터페이스 기반의 매퍼파일의 가장 큰 장점은 SqlSession 객체로 SQL 명령을 제공받아 사용하기 때문에 DAO를 만드는 것이 더 쉽다는 것이다. 대신 XML 기반의 매퍼 파일은 수동 매핑 설정과 동적 SQL 설정에 대한 기능 구현이 편리하다는 장점이 있다. 반대로 인터페이스 기반의 매퍼파일은 수동 매핑 설정과 동적 SQL 설정에 대한 기능 구현이 불편하다. 이런 문제점을 해결하기 위해 X..