mybatis dot net 관련 레퍼런스 참조 http://ibatis.apache.org/docs/dotnet/datamapper/
mapper 작성시 xml을 사용 하게 되는데 mybatis 관련 인텔리센스가 작동하지 않을 것이다.
이에 대한 대처 방법은 mybatis dot net version을 다운 받아서 압축 해제시 안에 XML Schema file이 존재 할 것이다.
해당 file을 VS가 설치된 위치의 예를 들어 VS2010일 경우 "C:\Program Files\Microsoft Visual Studio 10.0\" 정도 될 것이다.
간단하게 VS_HOME이라 하겠다.
"
VS_HOME\xml\Schemas\" 위치에 복사 해 준다.
그리고 VS를 실행 시킨후 인텔리센스가 작동하는지 확인한다.
<?xml version="1.0" encoding="utf-8" ?> <sqlMap namespace="dao" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ibatis.apache.org/mapping"> <alias> <typeAlias alias="rsltCarryIn" type="dao.model.vo.RsltCarryInVo"/> </alias> <resultMaps> <resultMap id="rsltCarryInMap" class="rsltCarryIn"> <result property="SumValue" column="SUM_VALUE"/> <result property="BrandCode" column="BRAND_CODE"/> </resultMap> </resultMaps> <statements> <select id="getRsltCarryIn" resultMap="rsltCarryInMap" parameterClass="System.Collections.Hashtable"> SELECT SUM(INTEG_VALUE)SUM_VALUE, BRAND_CODE FROM RSLT_STOCK <dynamic prepend="WHERE"> <isNotEmpty prepend="AND" property="WorkDate"> WORK_DATE = #WorkDate# </isNotEmpty> <isNotEmpty prepend="AND" property="YardCode"> YARD_CODE = #YardCode# AND INTEG_VALUE > 0 </isNotEmpty> </dynamic> GROUP BY BRAND_CODE </select> </statements> </sqlMap> |
위 예문은 동적 쿼리 생성 mapper이다.
dao에서 System.Collections.Hashtable type의 변수를 받아서 조건에 맞게 쿼리를 생성시켜 준다.
Hashtable의 key값이 property 명과 매치되고 그 값이 #propertyName#과 매칭 된다 보면 되겠다.
예문에서 isNotEmpty prepend="AND" property="WorkDate" 이런식으로 되어 있는데
파라메터의 WorkDate 값이 존재 할 경우 밑에 있는 WOKR_DATE = #WorkDate# 의 조건식을 추가 한다.
뭐 이런식이 될 것이다.
dynamic의 item으로 isNotEmpty 말고도 isNotNull 이라든지 여러가지가 존재 한다. 이 항목은 레퍼런스를 참조 하기 바란다.
그럼 dao의 C# Code를 한번 보겠다.
public IList<RsltCarryInVo> getRsltCarryIn(string WorkDate, string YardCode) { Hashtable param = new Hashtable(); param.Add("WorkDate", WorkDate); param.Add("YardCode", YardCode); IList<RsltCarryInVo> rtnVal = DaoFactory.getInstance.QueryForList<RsltCarryInVo>("getRsltCarryIn", param); return rtnVal; } |
이 전에 포스팅 했던 코드와 유사 하다.
하나 추가된 것이 있다면 파라메터를 받을 수 있는 Hashtable을 추가 했다는거
key는 string이 되고 값은 object이다.
위에 mapper에서 사용한 property명과 key 값이 일치 하는걸 볼 수 있다.
대략 이런식으로 내용을 추가해서 사용하면 되겠다.