일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- INSERT
- vue.js
- 구멍가게코딩단
- MariaDB
- java
- egov
- JQuery
- JAXBContext
- vue Carousel
- Ajax
- 정보처리산업기사
- jsp
- mybatis
- bulkinsert
- NoSQL
- spring
- Tomcat
- jdbc
- 오라클
- 마스킹
- JSON
- 기출문제
- insertAll
- mysql
- vscode tutorial
- github
- swipe 배너
- 부스트코스
- query
- checkbox
- Today
- Total
개발새발
[2019.12.15] 본문
이클립스에서 오라클로 디비 연동하는 중 oracle.jdbc.driver.OracleDriver 를 찾을수 없다는 오류 떴다.
본인 버전에 맞는 jar 파일을 추가 해주어야한다.
ojdbc6 = java 1.6이상
BuildPath로 추가 해주면
이렇게 추가 된다. 그런다음 Testcode 실행 시켜보면
db연동 성공!
CRUD 구현
[VO 클래스의 작성] : VO 클래스를 생성하는 작업은 테이블 설계를 기준으로 작성한다
[Mapper 인터페이스와 Mapper XML]
root-context.xml에 org.zerock.mapper 패키지를 스캔하도록 설정한다.
1
|
<mybatis-spring:scan base-package="org.zerock.mapper"/>
|
BoardMapper 인터페이스를 작성할 때는
이미 작성된 BoardVO 클래스를 적극적으로 활용해서 필요한 SQL을 어노테이션의 속성값으로 처리할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
package org.zerock.mapper;
import java.util.List;
import org.zerock.domain.BoardVO;
public interface BoardMapper {
@Select("select * from tbl_board where bno > 0")
public List<BoardVO> getList();
}
|
db랑 잘 연결 되었는지 JUnit Test
<BoardMapperTests.java>
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
|
package org.zerock.mapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import lombok.Setter;
import lombok.extern.log4j.Log4j;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class BoardMapperTests {
@Setter(onMethod_=@Autowired)
private BoardMapper mapper;
@Test
public void testGetList() {
}
}
|
BoardMapperTests를 이용해서 Test 완료 후
src/main/resources 내에 패키지와 동일한 org/zerock/mapper 단계의 폴더를 생성후 xml 파일을 작성한다.
(파일 폴더 구조, 이름은 무방 but, 패키지 클래스 이름과 동일하게 해주면 나중에 혼란스러운 상황 방지)
<BoardMapper.xml>
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<![CDATA[
select * from tbl_board where bno > 0
]]>
</select>
</mapper>
|
*xml을 작성할 때는 반드시 <mapper>의 namespace 속성값을 Mapper 인터페이스와 동일한 이름을 주는 것에 주의하고, <select> 태그의 id 속성값은 메서드의 이름과 일치하게 작성합니다. resultType 속성의 값은 select 쿼리의 결과를 특정 클래스의 결과로 만들기 위해서 설정합니다. xml에 사용한 CDATA 부분은 XML에서 부등호를 사용하기 위해서 사용합니다.
XML에 SQL문이 처리되었으니 BoardMapper 인터페이스에 SQL은 제거한다.
* MyBatis는 내부적으로 JDBC의 PreparedStatementfmf 활용하고 필요한 파라미터를 처리하는 '?'에 대한 치환은 '#{속성}'을 이용해서 처리한다.
[insert 와 insertSelectKey]
insert()는 단순히 시퀀스의 다음 값을 구해서 insert 할 때 사용
insertSelectKey()는 @SelectKey라는 MyBatis의 어노테이션 이용.
@SelectKey는 주로 PK 값을 미리(before) SQL을 통해서 처리해 두고 특정한 이름으로 결과를 보관하는 방식이다.
@Insert 할 때 SQL문을 보면 #{bno}와 같이 이미 처리 된 결과를 이용하는 것을 볼 수 있다.
'[Daliy]' 카테고리의 다른 글
[2019.12.17] ajax (0) | 2019.12.17 |
---|---|
[2019.12.16] (0) | 2019.12.16 |
[2019.12.13] (0) | 2019.12.13 |
[2019.12.12] (0) | 2019.12.12 |
[2019.12.11] (0) | 2019.12.11 |