티스토리 뷰
지난 시간과 크게 다른 부분이 없기에 추가된 부분만 기록했다.
1. resultMap 속성 사용
- 검색결과를 특정 자바 객체에 매핑하여 리턴하기 위해서 paramType 속성을 사용한다. 그러나 검색 결과를 parameterType 속성으로 매핑할 수 없는 몇몇 사례가 있다.
> 검색 쿼리가 단순 테이블 조회가 아닌 JOIN 구문을 포함할 때는 검색 결과를 정확하게 하나의 자바 객체로 매핑 할 수 없다.
> 또는 검색된 테이블의 칼럼 이름과 매핑에 사용될 자바 객체의 변수 이름이 다를 때에 검색 결과가 정확하게 자바 객체로 매핑되지 않을 때이다.
2. CDATA Section 사용
- sql 구문 내에 '<' 기호를 사용하면 에러가 발생한다. 등호의 의미가 아닌 또 다른 태그로 인식하기 때문이다.
- Mybatis와는 상관없는 XML 고유의 문법으로서, CDATA 영역에 작성된 데이터는 단순한 문자 데이터(Character DATA)이므로 XML 파서가 해석하지 않도록 한다.
1 2 3 4 5 | <section id="getBoard" resultType="board"> select * from board where seq <= #{seq} </select> | cs |
3. sql 대문자 설정하기
- Mapper 파일에 등록되는 sql 구문은 일반적으로 대문자로 작성한다.
- sql 구문은 대소문자를 구분하지는 않지만, 식별성을 높이기 위해 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <!-- board-mapping.xml --> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="BoardDAO"> <resultMap id="boardResult" type="board"> <id property="seq" column="SEQ" /> <result property="title" column="TITLE" /> <result property="writer" column="WRITER" /> <result property="content" column="CONTENT" /> <result property="regDate" column="REGDATE" /> <result property="cnt" column="CNT" /> </resultMap> <insert id="insertBoard" parameterType="board"> <![CDATA[ INSERT INTO BOARD(SEQ, TITLE, WRITER, CONTENT) VALUES((SELECT NVL(MAX(SEQ), 0)+1 FROM BOARD),#{title},#{writer},#{content}) ]]> </insert> <update id="updateBoard"> <![CDATA[ UPDATE BOARD SET TITLE=#{title}, content=#{content} WHERE SEQ=#{seq} ]]> </update> <delete id="deleteBoard"> <![CDATA[ DELETE BOARD WHERE SEQ=#{seq} ]]> </delete> <select id="getBoard" resultType="board"> <![CDATA[ SELECT * FROM BOARD WHERE SEQ=#{seq} ]]> </select> <select id="getBoardList" resultMap="boardResult"> <![CDATA[ SELECT * FROM BOARD WHERE TITLE LIKE '%'||#{searchKeyword}||'%' ORDER BY SEQ DESC ]]> </select> </mapper> | cs |
4. SqlSessionFactory 클래스
- Mybatis를 사용하여 DB연동을 간단하게 처리하려면 최종적으로 Mybatis가 제공하는 SqlSession 객체를 사용해야 한다. 지금은 직접 작성했지만 추후에 Mybatis를 스프링과 연동할 때 프레임워크에서 제공하는 클래스를 사용할 것이다.
'spring' 카테고리의 다른 글
day5 class04 JPA 개념, class05 JPA 환경설정 (0) | 2019.02.25 |
---|---|
day5 class03 스프링과 MyBatis 연동 (0) | 2019.02.24 |
day5 class05 Mybatis 프레임워크 시작하기 (0) | 2019.02.21 |
day4 class07 데이터 변환 (0) | 2019.02.17 |
day4 class07 다국어 처리 (0) | 2019.02.16 |
- Total
- Today
- Yesterday
- SqlSessionFactoryBean
- 검색
- blocking
- 의존성 주입
- 스프링 컨테이너
- postHandler
- 컨트롤러
- JoinPoint
- exclude-mapping
- @Autowired
- 의존성
- ViewResolver
- LoggingEvent
- multiple SLF4J bindings
- servlet context
- java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent
- aop
- Controller
- aspect oriented programming
- preHandler
- #java.lang.NoClassDefFoundError: org/slf4j/event/LoggingEvent삭제
- setter 인젝션
- afterCompletion
- NoClassDefFoundError
- application context
- Class path contains multiple SLF4J bindings
- handlermapping
- 어노테이션
- 횡단 관심
- XmlWebApplicationContext
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |