Today Yewon Learned

[Egov] 전체 검색, 조건 검색 Query 적용하기 본문

Spring/Egov

[Egov] 전체 검색, 조건 검색 Query 적용하기

데브워니 2021. 12. 27. 17:15

SQL Query

<!-- 장비 상태 로그 목록 -->
<select id="machineDao.getMacStateList" resultMap="machineLog">
    SELECT STATE_DATE
       	 , MAC_CD
       	 , MAC_CPU
       	 , MAC_MEMORY
       	 , MAC_CAPA
    FROM js_machine_state_log
    WHERE MAC_CD LIKE CONCAT('%',#MAC_CD#,'%')
</select>

 

 

index.jsp 검색 일부분

<div class="row">
    	<div class="col-xl-12 col-lg-12">
            <div class="card shadow mb-4">
                <!-- Card Header - Dropdown -->
                <div class="card-header py-3 d-flex flex-row align-items-center justify-content-between">
                    <h6 class="m-0 font-weight-bold text-primary">장비 검색</h6>
                </div>
                <!-- Card Body -->
                <div class="card-body">
                	<form name="SearchForm">
        				<div class="form-group">
        					<div class="form-inline">
        						<div class="h5 mb-0 mr-3 font-weight-bold text-gray-800">장비명</div>
        						<input type="text" class="form-control mr-1" name="search_machine_nm">
    							<button type="button" class="btn btn-primary" onclick="search_func(1);">검색</button>
        					</div>
                			<input type="text" class="form-control" name="pagination" value="1" style="display: none;">
            			</div>
        			</form>
                </div>
            </div>
        </div>
    </div>

- search_machine_nm을 통해 검색

 

 

Contorller.java 일부분

if(request.getParameter("search_machine_nm") == null) {
			data.setMAC_CD("");
		}else {
			data.setMAC_CD(request.getParameter("search_machine_nm"));
		}
		
		List<MachineData> state_list = machineService.getMacStateList(data);
		int cnt = machineService.getMacCnt(data); //장비 상태 로그 갯수 카운트
		
		model.addAttribute("StateList", state_list);
		model.addAttribute("TotalCnt", cnt);

- 검색 조건이 null일 경우 ""으로 검색

- 검색 조건이 null이 아닐 경우 조건 검색

 

Query - ""과 null 결과 비교

1. ""인 경우

    SELECT STATE_DATE
       	 , MAC_CD
       	 , MAC_CPU
       	 , MAC_MEMORY
       	 , MAC_CAPA
    FROM js_machine_state_log
    WHERE MAC_CD LIKE CONCAT('%',"",'%')

- 전체 검색과 같은 결과

 

 

2. null인 경우

    SELECT STATE_DATE
       	 , MAC_CD
       	 , MAC_CPU
       	 , MAC_MEMORY
       	 , MAC_CAPA
    FROM js_machine_state_log
    WHERE MAC_CD LIKE CONCAT('%',null,'%')

- 아무런 결과가 없음.

Comments