전체코드
<?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="ui700">
<select id="CPMES_UI710_search" parameterType="hashmap" resultType="hashmap">
<![CDATA[
SELECT
CONVERT(CHAR(23), LOG_PASSTIME_CP, 21) AS LOG_PASSTIME_CP,
LOG_PASS_CONTENT_CP,
LOG_PASS_COUNT_CP
FROM dbo.TB_PASSENGER_LOG_CP
WHERE 1=1
AND LOG_PASSTIME_CP BETWEEN REPLACE(#{pSearchStaDt},'-','')
AND DATEADD(DAY, 1, REPLACE(#{pSearchEndDt},'-',''))
ORDER BY LOG_PASSTIME_CP
]]>
</select>
코드 분석 / 리뷰
<?xml version="1.0" encoding="UTF-8"?>
XML 선언부(XML Declaration)이라고 하는데, 뒤에 나올 문서가 XML이라는 표시를 앞에다 하는 것이다.
- version="1.0" 이것은이 파일이 준수하는 XML 표준임을 의미
- encoding="utf-8" 파일이 UTF-8 유니 코드 인코딩을 사용하여 인코딩되었음을 의미
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
위 코드에 대해서 구글링 하던 중 https://mybatis.org/mybatis-3/ko/index.html (mybatis 공식사이트)에서 기본적으로 코드를 넣고 시작하는 것을 발견하였다.
느낌상 mybatis 를 사용하기 위해 들어가는 코드임을 짐작할 수 있었다.
*여기서 Mybatis 가 뭔지 궁금해 하시는 분이 계실수 있는데 프레임워크(FrameWork)이다.
<mapper namespace="ui700">
위 코드는 namespace 는 해당 파일의 이름이다.
mapper 시킬 파일 이름을 " " 안에 넣어주면 된다.
<?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="ui700">
<select id="CPMES_UI710_search" parameterType="hashmap" resultType="hashmap">
<![CDATA[
/* 쿼리 문 */
]]>
</select>
그럼 위 코드를 해석해보면
매퍼 시킬 파일은 ui700 인데,, ui700의 CPMES_UI710_search 가 id 인 녀석이랑 연결 시켜줄거야 !! 라고 보면 될거 같다.
(이 부분에 대해서 https://lemontia.tistory.com/407 <-- 참고하면 됩니다.)
다음으로 /* */ 쿼리문 내용도 분석해보겠습니다.
FROM dbo.TB_PASSENGER_LOG_CP
WHERE 1=1
AND LOG_PASSTIME_CP BETWEEN REPLACE(#{pSearchStaDt},'-','')
말그대로 WHERE 1=1은 조건문에서 항상 참을 의미합니다. 즉 특별히 의미가 있는 조건은 아닙니다.
WHERE 1 = 1
WHERE 2 = 2
WHERE 3 = 3
모두 같은 의미입니다.
MSSQL의 문자열 치환 함수는 REPLACE가 매우 유용합니다.
Replace() 함수로 특정 문자열 바꾸기( 참고 )
AND DATEADD(DAY, 1, REPLACE(#{pSearchEndDt},'-',''))
DATEADD() 함수 에 대해서는 아래 샘플 사진을 보고 이해하자.
ORDER BT (정렬 함수)
ORDER BY LOG_PASSTIME_CP
기본 값은 오름차순이지만 내림차순으로 해주고 싶다면 뒤에 DESC 를 덧 붙여주면 된다.
'웹 개발자 준비 과정🐳 > 스마트팩토리,MES 시스템 개발' 카테고리의 다른 글
Nodejs 와 MSSQL 연동하기 (1) | 2022.11.16 |
---|---|
스마트 팩토리 | MES 시스템에 딥러닝(영상인식) 기술 추가하기(1) (0) | 2022.11.11 |
Day-1: MES.. 파일 분석하기..! (0) | 2022.10.20 |
DTO , VO, Entity 정리.txt (0) | 2022.10.20 |