2022.02.09.Wed.
✍ 복습
MyBatis 추가 내용
- 어떤 DAO(Data Access Object) 기술을 사용하더라도 DataSource는 필수 → 스프링이 Connection Pool과 DataSource를 자동 설정해서 빈으로 관리
- 프로그래머가 DAO기술 중 마이바티스를 사용하겠다고 결정
→ 마이바티스가 스프링 빈이 될 수 있도록 설정을 제공한다. → DAO 인터페이스의 패키지, VO 클래스의 위치
중요코드는 두 줄
@MapperScan("com.example.board.repository")
.setTypeAliasesPackage("com.example.board.vo")
BCrypt는 hash함수
hash함수는 입력 길이에 상관없이 결과 길이가 일정하다.
중요한 문서의 경우 hash함수를 사용해서 내용의 길이를 모르게 해야한다.
password varchar2(60 char)
DB
- 기본키에 대한 제약조건 : 개체무결성 제약조건(not null, unique)
- 기본키에 대한 제약조건은 인덱스의 이름이기도 하다.
entity 생성
vo대신 entity, MyBatisConfig.java에 가서 패키지명 수정

MyBatis에서 DB작업
MyBatis에서 interface는 method와 SQL을 연결하는 역할
- CRUD - create, read, list, update, delete
: JPA의 표준화된 이름을 사용하자.
- insert into 테이블이름(컬럼들) values(값들#{})
- insert into board(bno,title,content,nickname,password,read_cnt,write_time)
- values(board_seq.nextval, #{title},#{content},#{nickname},#{password}, #{readCnt},#{writeTime})
- MyBatis는 기본적으로 null입력이 막혀있다.
- /board/read?bno=?로 이동시켜야하기 때문에 글번호(시퀀스)가 컨트롤러에서 필요하다.
예를 들어 첨부파일을 포함한 글을 저장하는 경우,
글을 저장하면 글 번호가 만들어지고 첨부파일은 글번호를 포함해서 저장해야 한다.
- 해당 시퀀스의 값을 증가시키고 싶을 때 board_seq.nextval를 사용한다. 현재 시퀀스를 알고 싶을 때는 .currval를 사용한다.
@SelectKey
@SelectKey는 @Insert하기 전에 먼저 sql을 실행해 board에 저장한다. statement를 실행해 결과 int를 board의 bno에 @Insert하기 전에 저장! @SelectKey는 @Insert문에서만 사용 가능하고 @Insert문 한개에 하나의 @SelectKey만 쓸 수 있다.
- findById() : 입력받은 id값으로 계정정보 조회
- findAll() : department 테이블의 모든 레코드를 조회해서 리턴

MyBatis에서 DB Test하기
하나씩 테스트해보고 오류나면 해결 후 //@Test 주석 처리하고 다음 코드 테스트하는 식..

