이전 문제이지만 저는 전화를 걸고 싶습니다. @leonbloy에 동의하며, ibatis는 당신이하려는 것을 피할 수있는 기능을 제공합니다. dynamic queries에 대한 ibatis 링크를 통해 알아낼 수 있습니다.
이
public IList<ITraceLogRecord> GetTraceLogRecords(string systemType, string plantName, int? deviceId, DateTime startTime, DateTime endTime, string logDescription, string loggerName, List<int> traceLevelIds)
{
IDictionary<string, object> traceQueryParameters = new Dictionary<string, object>();
traceQueryParameters.Add("deviceId", deviceId);
traceQueryParameters.Add("startTime", startTime);
traceQueryParameters.Add("endTime", endTime);
traceQueryParameters.Add("logDescription", logDescription);
traceQueryParameters.Add("loggerName", loggerName);
traceQueryParameters.Add("traceLevelIds", traceLevelIds);
return DataSources.GetDbConnectionName(systemType, plantName).QueryForList<ITraceLogRecord>("SelectTraceLogRecords", traceQueryParameters);
}
당신의 선택 문을 작성하고 입력이 null의 경우 검사 사전로 인수를 전달하는 방법 유무 : 여기
내가 사용한 간단한 예입니다 where 절에 포함할지 여부 :
<select id="SelectTraceLogRecords" parameterClass="System.Collections.IDictionary" resultMap="TraceLogRecordMap">
SELECT TraceLevelId, Trace, DeviceId, LoggerName, CreatedTimeStamp, ThreadId
FROM Trace
<dynamic prepend="WHERE">
<isNotNull prepend="AND" property="deviceId">
DeviceId = #deviceId#
</isNotNull>
<isNotNull prepend="AND" property="startTime">
CreatedTimeStamp >= #startTime#
</isNotNull>
<isNotNull prepend="AND" property="endTime">
<![CDATA[CreatedTimeStamp <= #endTime#]]>
</isNotNull>
<isNotNull prepend="AND" property="logDescription">
Trace LIKE #logDescription#
</isNotNull>
<isNotNull prepend="AND" property="loggerName">
LoggerName LIKE #loggerName#
</isNotNull>
<isNotNull prepend="AND" property="traceLevelIds">
<iterate property="traceLevelIds" open="(" close=")" conjunction="OR">
TraceLevelId = #traceLevelIds[]#
</iterate>
</isNotNull>
</dynamic>
</select>
문자열을 I로 전달하는 방법을 알고 있습니다. batis 그 결과 집합을 처리 할 수 있습니다. <선택 ID는 = "SEARCH_QUERRY_DATA"의 parameterClass는 = "문자열"remapResults = "true"를 resultClass를 = "System.Collections.Hashtable"> $ querryString $ 내가 위에서와 시도 문을 사용하지만 쿼리 문자열을 전달하고 결과 집합을 처리하는 방법을 모릅니다. –