Spring

Spring Mybatis를 이용한 우편(post)검색

닉넥임 2013. 10. 15. 10:39
반응형

TestPostMybatis.zip


- 전에 강의

시간에 배운 기존의 JDBC와 ODBC를 이용한 우편검색을 이번에는 Mybatis로 변형해보았다!!

- 문제점이라고는 오라클 내장함수가 난왜안되는걸까..알수없다. 그래서 일단값을 가져오고 나중에 사용할때 따로 가공하기로 하였다.

- Mybatis 관해서는 앞에 블로그에 정리했으니 여기서는 세세한건 생략한다!!

- DB는 첨부파일 패키지안에 다있다!


간단요약!

1. 마이바티스 사용위한 셋팅!

2. DB만들기! root-context.xml에서 설정바꿔!

3. Mapper에서 정의한 sql 쿼리문으로 값가져오기

4. jsp페이지에서 javascript를 사용해서 우편검색해서 값가져오기!


시작!!!

1. 마이바티스 셋팅은 생략한다!

2. DB는 파일에 들어있으며 컬럼명은 table설명은 딱보면알기에 생략.


3. PostMapper.xml 일반적인 검색하기위한 쿼리문을 작성했다.

- 이때 like에 %를 사용하지 않아도 와일드카드이기에 검색이 된다고하는데 막상해보니 되지않아서 사용했다.


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
<?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="com.test.mybatis.PostMapper">
 
<!-- 여기설명도 생략 -->
    <resultMap type="Post" id="PostResultMap">
        <result property="sido_name" column="SIDO_NAME" />
        <result property="gugun_name" column="GUGUN_NAME" />
        <result property="dong_name" column="DONG_NAME" />
        <result property="bigo" column="BIGO" />
        <result property="start_bunji" column="START_BUNJI" />
        <result property="end_bunji" column="END_BUNJI" />
        <result property="zipcode" column="ZIPCODE" />
        <result property="old_code" column="OLD_CODE" />
    </resultMap>
 
    <!-- 초기테스트 구문 -->
    <select id="getPostAll" resultMap="PostResultMap">
        SELECT * FROM post
    </select>
 
    <!-- select post -->
    <select id="getPost" resultMap="PostResultMap" parameterType="String">
        <!-- 
        처음에는 오라클 내장 함수를 사용하여 값을 가공하여 가져오려했지만 사용이 되지않았다. 
        좀더 원인을 찾아봐야겠다.    
        SELECT SIDO_NAME, GUGUN_NAME, NVL(DONG_NAME, ''), NVL(START_BUNJI,''), NVL(END_BUNJI, ''), NVL(BIGO, ''), SUBSTR(ZIPCODE, 1, 3), SUBSTR(ZIPCODE, 4, 6) 
         -->
        <!-- LIKE를 사용하여 검색한다. -->
         
SELECT sido_name, gugun_name, dong_name, bigo, NVL(start_bunji, 'aaa'), end_bunji, zipcode
FROM post
WHERE    SIDO_NAME LIKE '%'||#{address}||'%'
        OR GUGUN_NAME LIKE '%'||#{address}||'%'
        OR DONG_NAME LIKE '%'||#{address}||'%'
        OR BIGO LIKE '%'||#{address}||'%'
 
    </select>
</mapper>


4. main.jsp


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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>주소검색</title>
</head>
 
<!-- 주소검색창호출 -->
<script type="text/javascript">
    function postOpen() {
        alert("test post open");
        win_post = window.open('/post/post'"post""toolbar=no ,width=370 ,height=300 ,
                         directories=no," + "status=yes,scrollbars=yes,menubar=no");
    }
</script>
<body>
    <form>
        <table align="center" border="1">
            <tr><td>시도</td><td><input type="text" id="text_sido"></td></tr>
            <tr><td>구군</td><td><input type="text" id="text_gugun"></td></tr>
            <tr><td></td><td><input type="text" id="text_dong"></td></tr>
            <tr><td>비고</td><td><input type="text" id="text_bigo"></td></tr>
            <tr><td>시작번지</td><td><input type="text" id="text_start_bunji"></td></tr>
            <tr><td>끝번지</td><td><input type="text" id="text_end_bunji"></td></tr>
            <tr><td>번지</td><td><input type="text" id="text_zipcode"></td></tr>
            <tr><td><input type="button" value="주소검색" onclick="postOpen()"></td></tr>
        </table>
    </form>
</body>
</html>



5. post.jsp


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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page import="java.util.*,com.test.mybatis.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>결과창</title>
</head>
<script>
    //main페이지로 값 전달: 부모로 값전달하기 위해서는 opener사용
    function sendAdd(sido, gugun, dong, bigo, start_bunji, end_bunji, zipcode){
        alert("부모로 값전달");
        
        opener.document.getElementById("text_sido").value=sido;
        opener.document.getElementById("text_gugun").value=gugun;
        opener.document.getElementById("text_dong").value=dong;
        opener.document.getElementById("text_bigo").value=bigo;
        opener.document.getElementById("text_start_bunji").value=start_bunji;
        opener.document.getElementById("text_end_bunji").value=end_bunji;
        opener.document.getElementById("text_zipcode").value=zipcode;
    }
    //널값체크
    function check() {
        alert("check 클릭!");
        var checkValue = document.f.address.value;
        alert("checkValue : "+checkValue);
        if(checkValue == ""){
            alert("동이름을 입력하세요.");
            document.f.address.focus();
            return false;
        }
    }
</script>
<body>
    <form name="f" method="post" onsubmit="check()">
        <table border="1" width="100%">
            <tr align="center">
                <td>동이름 검색 : <input type="text" name="address" size="15">
                    <input type="submit" value="검색">
                </td>
            </tr>
            <tr>
                <!-- 안내문 -->
                <td align=center><font color=red>※ 동이름을 입력하시고 검색 후, 아래
                        부분의<br> 우편번호를 클릭하시면 자동으로 주소가 입력됩니다.
                </font></td>
            </tr>
            <c:forEach items="${result}" var="post">
                <tr>
                    <td><a href="javascript:sendAdd(
                            '${post.sido_name}',
                             '${post.gugun_name}', 
                             '${post.dong_name}', 
                             '${post.bigo}', 
                             '${post.start_bunji}',
                             '${post.end_bunji}',
                             '${post.zipcode}')" > 
                             
                            ${post.sido_name} 
                             ${post.gugun_name} 
                             ${post.dong_name} 
                             ${post.bigo} 
                             ${post.start_bunji}
                             ${post.end_bunji}
                             ${post.zipcode} 
                        </a></td>
                </tr>
            </c:forEach>
        </table>
    </form>
</body>
</html>



6. 결과화면





반응형

'Spring' 카테고리의 다른 글

jQuery 사용방법  (0) 2013.10.18
Controller redirect data 전송  (0) 2013.10.16
Controller @Vaild ( JSR-303 )  (0) 2013.10.08
Spring Form Tag  (0) 2013.10.07
Controller @ModelAttribute  (0) 2013.10.07