1. 정의

어떤 조건에 대해 조회하는 대상 (ex. column명, table명, DB명)이 고정되어 있지 않고 parameter를 통해 그 대상들을 상황에 맞게 조회가 가능하다.

if문과 choose문을 가장 많이 사용하며, xml mapper에 지정하게 된다.

 

 

2. 동적 sql을 사용하는 경우

ㄱ. 컴파일시 sql 문장이 확정되지 않는 경우 : where 조건 뿐만 아니라 select 항목이 동적으로 변할 수 있는 상황일 때

 

 

3. 종류

ㄱ. if : 단일 if문. 선택적 문자열 검색 가능.

     파라미터로 넘어온 property 객체의 메소드를 직접 호출 가능.

 

<if test="파라미터1 != null and 파라미터2 != null></if>

<if test='파라미터 != null and 파라미터 == "A"'></if>

<if test='파라미터 != null and (파라미터 equals "A".toString())'></if>

<if test='파라미터 != null and 파라미터.equals("A")'></if>

<if test='파라미터 != null and 파라미터.equalsIgnoreCase("A")'></if>

 

파라미터로 null이 넘어올 수 있으니 exception 방지를 위해 null인지 비교하고 난 후, 다음으로 넘어온 property가 스트림 객체니까 대, 소문자를 안 가리고 비교하라고 .equals 메소드를 호출함.

 

ㄴ. choose (when, otherwise)

ㄷ. trim (where, set)

ㄹ. foreach

'Framework > Spring' 카테고리의 다른 글

MyBatis :: selectList와 selectOne  (3) 2016.02.15
MyBatis :: ConnectionFactory  (0) 2016.01.19
MyBatis :: Java app example  (0) 2016.01.18
JDBC :: 메뉴얼  (0) 2016.01.15
MyBatis란?  (0) 2016.01.13

 - Java Web Project가 아닌, Java App Project로 작성

 - App propject로 작성하면 프로젝트 폴더 안에 WebContent라는 폴더가 없음 (Web과 App을 구분하는 기준)

 

 

* Web Project : Java EE에서 작성 (jsp 有)

* App Project : Java에서 작성

 

 

Project1의 구조는 package를 통해 com.dao / com.main / com.mybatis / com.vo 로 나눴으며

 

 

 

프로젝트 > Build Path > Configure Build Path > Libraries > Add JARs 를 이용하여 타 프로젝트에 있었던 mybatis와 mysql.jar를 추가하였음

 

1. com.mybatis 패키지 내 파일 작성

 

 

 

2. com.vo 패키지 내 파일 작성

 

 

'Framework > Spring' 카테고리의 다른 글

MyBatis :: selectList와 selectOne  (3) 2016.02.15
MyBatis :: ConnectionFactory  (0) 2016.01.19
MyBatis :: 동적 sql (=쿼리)  (0) 2016.01.19
JDBC :: 메뉴얼  (0) 2016.01.15
MyBatis란?  (0) 2016.01.13

1. 정의

- java에서 데이터베이스에 접속할 수 있도록 하는 자바 API

  (java API : java를 사용하여 쉽게 구현할 수 있도록 한 클래스 라이브러리의 집합)

- 데이터베이스에서 자료를 쿼리하거나 업데이트 하는 방법을 제공

 

 

2. source

 <Context docBase="Ch13" path="/Ch13" reloadable="true" source="org.eclipse.jst.jee.server:Ch13">
  <Resource name="jdbc/basicjsp"
            auth="Container"
            type="javax.sql.DataSource"
            driverClassName="com.mysql.jdbc.Driver"
            username="jspid"
            password="jsppass"
            url="jdbc:mysql://localhost:3306/basicjsp"
            maxWait="5000"       
  />
 </Context>

 

 

3. 설정 방법 (2군데 설정)

ㄱ. 프로젝트 - WebContent - META-INF - context.xml

 <Context>

  <Resource name="jdbc/basicjsp"
           auth="Container"
           type="javax.sql.DataSource"
           driverClassName="com.mysql.jdbc.Driver"
           username="jspid"
           password="jsppass"
           url="jdbc:mysql://localhost:3306/basicjsp"
           maxWait="5000"      
   />

 </Context>


ㄴ. 프로젝트 - WebContent - WEB-INF - web.xml

 ...
 ...

    <resource-ref>
     <description>basicjsp db</description>
     <res-ref-name>jdbc/basicjsp</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>

 </web-app>

'Framework > Spring' 카테고리의 다른 글

MyBatis :: selectList와 selectOne  (3) 2016.02.15
MyBatis :: ConnectionFactory  (0) 2016.01.19
MyBatis :: 동적 sql (=쿼리)  (0) 2016.01.19
MyBatis :: Java app example  (0) 2016.01.18
MyBatis란?  (0) 2016.01.13

 

1목표

- java 소스에서 Sql을 분리

- jdbc 프로그래밍 캡슐화 (java 코드 -> xml)

 

 

2. 개요

- xml에 서버 정보(오라클 드라이버, 주소, 아이디, 비밀번호 등)을 써놓고

- xml에 Sql 구문을 넣은 다음

- 반환값을 담을 그릇 (VO = DTO)를 써주면 DAO 구현 가능

 

* xml이 핵심

 

3. 

mybatis 실행 경로

- mybatis의 SqlSession 객체 준비. select 실행을 요청함 (select문 실행)

- Sql mapper 파일에서 아이디가 "~DAO.selectOne"인 Sql문을 찾음

- mybatis는 jdbc 드라이버를 사용하여 Sql문을 실행

- jdbc에서 리턴한 값을 가지고 값 객체를 생성 (value 값 객체)

- 준비한 값의 객체를 리턴

 

 

4. 구조

 

 

- DAO 패키지, main패키지, mybatis 패키지, vo 패키지로 이루어짐

- DAO : DAO와 DAOImp 파일로 이루어짐

   Interface 클래스를 만들고 (Imp) Interface 클래스를 상속받는 Implements클래스 (DAO)

 

ㄱ. DAO

 

 

ㄴ. DaoImp

 

 

 

ㄷ. Main : 클래스가 두 개로 나눠질 것 같으면 파일을 반드시 두 개로 나누어서 작업

 

 

 

 

ㄹ. MyBatis

 

* MyBatisConnectionFactory.java

 

 

* config.xml

 

 

* PersonMapper.xml

 

 

ㅁ. PersonVO

 

'Framework > Spring' 카테고리의 다른 글

MyBatis :: selectList와 selectOne  (3) 2016.02.15
MyBatis :: ConnectionFactory  (0) 2016.01.19
MyBatis :: 동적 sql (=쿼리)  (0) 2016.01.19
MyBatis :: Java app example  (0) 2016.01.18
JDBC :: 메뉴얼  (0) 2016.01.15

+ Recent posts