티스토리 뷰

1. Parameters


쿼리의 파리미터 ( PreparedStatement 의  " ? " 는 Spring 에서는 #{ 멤버변수명 } 을 사용한다.


만약 VO를 가져와서 VO의 파라미터를 넣고 싶다면 #{ } 괄호 안에 VO의 변수를 그대로 넣는다.

그려면 VO의 getter가 소환되어 변수의 값으로 들어간다.


Parameter를 전달하는 방법은 DAO에서 쿼리문을 수행할 때 전달해 줄 수 있다.

이때 parameter를 쓰는 자리에는 무조건 하나만 쓸 수 있다. 

그러므로 여러개의 parameter를 보낼 경우 Map을 사용해야 한다.


첫번째, 가장 기본적인 방법은 하나의 값을 parameter로 전달하는 것이다.


1
2
String lastName = "King";
return getSqlSession().selectList("ArticleDAO.getAllEmployeeInfo", lastName );
cs


기존에는 selectOne을 썼었는데 selectOne은 쿼리의 결과가 한개일 경우에 사용하는 것이고,

selectList는 쿼리의 결과가 여러개일 경우에 사용한다.



두번째로 여러개의 parameter를 보내고 싶을 때 Map을 사용한다.

Map은 <key, value> 로 구성되며 key는 무조건 String을 써야하고, value는 모든 타입을 대표하는 Object를 쓴다.


1
2
3
4
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("firstName""Steven");
parameters.put("lastName""King");
return getSqlSession().selectList("ArticleDAO.getAllEmployeeInfo", parameters );
cs



세번째는 VO를 이용하여 객체로 보낼 수 있다.


1
2
3
4
EmployeesVO employee = new EmployeesVO();
employee.setFirstName("Steven");
employee.setLastName("King");
return getSqlSession().selectList("ArticleDAO.getAllEmployeeInfo", employee);
cs



2. SELECT


MyBatis에서 가장 흔히 사용된다. 


1
2
3
4
    <select id="getNowSystemDate" resultType="string">
        SELECT    SYSDATE
        FROM    DUAL        
    </select>
cs



쿼리의 이름은 getNowSystemDate 이고, 리턴 타입은 String 이다.

이때, resultType은 꼭 써야한다.


SELECT query에서 파라미터를 이용한다면


1
2
3
4
5
6
7
8
9
10
11
12
    <select id="getAllEmployeeInfo" parameterType="EmployeesVO" resultType="EmployeesVO">
        SELECT    EMPLOYEE_ID employeeId
                , FIRST_NAME firstName
                , LAST_NAME lastName
                , EMAIL email
                , SALARY salary
                , COMMISSION_PCT commissionPct
                , HIRE_DATE hireDate
        FROM    EMPLOYEES
        WHERE   LAST_NAME = #{lastName}
        AND     FIRST_NAME = #{firstName}
    </select
cs


이때 parameterType 은 EmployeesVO 타입 이므로 

Employees에 있는 lastName이라는 이름을 가진 변수와 firstName이라는 이름을 가진 변수가 들어간다.




3.  insert, update and delete


- insert


1
2
3
4
5
6
7
8
9
10
11
12
    <insert id="insertAuthor">
        INSERT INTO AUTHOR (
                            ID
                            , USERNAME
                            , PASSWORD
                            )
        VALUES                (
                            #{id}
                            , #{username}
                            , #{password}
                            )
    </insert>
cs



- update


1
2
3
4
5
6
    <update id="updateAuthor">
        UPDATE     AUTHOR
        SET     USERNAME = #{username}
                , PASSWORD = #{password}
        WEHRE     ID = #{id}  
    </update>
cs



- delete

 

1
2
3
4
    <delete id="deleteAuthor">
        DELETE     AUTHOR
        WEHRE     ID = #{id}  
    </delete>
cs




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

[Spring] Dynamic SQL  (0) 2016.04.20
[Spring] ORM : MyBatis 연동  (0) 2016.04.20
[Spring] 파일 업로드  (0) 2016.04.20
[Spring] Controller의 리턴 타입  (0) 2016.04.15
[Spring] 예외처리  (1) 2016.04.14
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
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
글 보관함