Framework(17)
-
7. 매퍼 어노테이션
기존 스프링에서는 DAO 클래스에 @Repository 선언 해당 클래스가 DB와 통신하는 클래스임을 명시 마이바티스의 매퍼 어노테이션 지정 시, XML mapper에서 메서드의 이름과 일치하는 SQL문을 찾아 실행 mapper 영역은 DB와 통신, SQL쿼리를 호출하는 것이 전부이며 로직은 필요하지 않다 DAO @Mapper public interface BoardDAO { public int insertBoard(BoardVO vo); public List selectAll(SearchVO searchVo); public int selectTotalRecord(SearchVO searchVo); public int updateReadCount(int no); public BoardVO selectBy..
2023.03.29 -
6. 마이바티스 스프링 연동
마이바티스의 데이터설정 일부를 생략, 스프링에 설정 추가 dispatcher-servlet.xml classpath*:/ldg/mybatis/repository/mapper/**/*.xml dataSource dataSource id를 가진 bean은 데이터베이스 연결 정보를 가진 객체 마이바티스와 스프링을 연동하면 데이터베이스 설정과 트랜잭션 처리는 스프링에서 관리 스프링과 연동하면 마이바티스 설정에는 데이터베이스 연결정보 설정이 필요 없다 데이터베이스 ConnectionPool을 위해 아파치 DBCP 프로젝트 구현체를 사용하도록 설정 context:component-scan 스프링 빈을 매번 XML에 설정하지 않고 자동으로 검색해서 스프링 빈으로 등록 가능 스프링 빈으로 등록되는 대상은 아래 어노테이..
2023.03.29 -
5. 동적SQL
동적 SQL을 만들기 위해 마이바티스가 제공하는 XML 엘리먼트 if choose(when, otherwise) trim(where, set) foreach OGNL 표현식 사용 jsp의 JSTL표현식이 OGNL Object Graph Navigation Language 프로퍼티의 값을 가져오거나 설정하기 위한 언어 기본 문법 coment 객체의 userid 필드 : comment.userid 현재 객체의 hashcode()메서드 호출 : hashCode() 댓글 배열(comments)의 첫번째 인덱스 값 : comments[0] if 엘리먼트 SELECT comment_no, user_id, comment_content, reg_date FROM comment2 WHERE comment_no = #{c..
2023.03.29 -
4. 매퍼
매퍼의 구성 엘리먼트 resultMap sql insert,update,delete selectKey select resultMap 엘리먼트 속성 id 매핑 구문에서 결과 매핑을 사용할 때 구분하기 위한 아이디 type 결과 매핑을 적용하는 대상 객체 타입 매핑 구문의 결과 데이터를 갖는 자바 타입을 지정 대개는 Map 이나 자바모델 클래스를 지정 sql 엘리먼트 각각의 매핑 구문에서 공통으로 사용할 수 있는 sql 문자열의 일부를 정의하고 재사용하기 위해 사용 별도로 빼둔 sql의 일부는 각각의 매핑 구문에서 include 엘리먼트를 사용해 처리 sql 엘리먼트에는 정적인 내용뿐 아니라 동적 sql도 삽입 가능 comment_no AS commentNo, user_id AS userId, comment..
2023.03.29 -
3. 설정파일
예시파일 Properties 엘리먼트 공통적인 속성을 정의하거나 외부 파일에서 값을 가져와 사용해야 하는 경우 사용 프로젝트는 개발장비와 운영장비로 구분해 사용하는 경우가 많다 서버 구분 없이 동일한 값은 그대로 설정파일에 설정 서버별로 다른 값은 외부 프로퍼티 파일로 분리 후 서버별로 프로퍼티 파일을 선택해 배포 외부 프로퍼티 파일을 읽기 위해서 resource 속성에 위치 지정 클래스패스 기준으로 프로퍼티 파일을 찾는다 공통 속성은 하위 엘리먼트인 property 엘리먼트를 이용해 선언할 수 있다 settings 엘리먼트 생성되는 SqlSession 객체의 특성을 결정한다 cacheEnabled : 캐시를 기본으로 사용할지 결정, 디폴트 true useGeneratedKeys : 생성 키 사용여부 결..
2023.03.28 -
2. 마이바티스 사용 예
마이바티스 설정 mybatis-config.xml 설정파일은 getConnection 메서드의 데이터베이스 연결정보를 대체한다 트랜잭션 관리자 JDBC 코드를 대체하기 때문에 type은 JDBC로 지정 데이터베이스 설정 데이터베이스 연결 정보를 설정 매퍼 정보 설정 sql을 선언해둔 xml이나 인터페이스 형태의 매퍼 위치를 지정 xml의 위치는 클래스패스를 기준으로 지정 마이바티스 객체 생성 설정파일을 로드해 마이바티스 객체 생성 마이바티스 객체는 SQL선언을 제외하고 JDBC 코드가 처리하던 대부분을 내부적으로 처리해준다 public class CommentSessionRepository { private SqlSessionFactory getSqlSessionFactory() { String reso..
2023.03.28