60일: Spring mybatis에서 DB작업과 DB테스트하기

Jiwontwopunch·2022년 2월 9일
0

국비기록

목록 보기
60/121
post-thumbnail

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 주석 처리하고 다음 코드 테스트하는 식..

0개의 댓글