我试图在Custom结果类中返回结果列表但不确定哪里出错了。 以下是代码的详细信息 -
ibatis-file.xml
....
<resultMap id="inputFile" class="com.tm.systemmanager.batch.InputFile">
<result property="fileId" column="FILE_ID" />
<result property="fileName" column="FILE_NAME" />
<result property="sourceDirectory" column="SOURCE_DIRECTORY" />
<result property="movedToDirectory" column="MOVEDTO_DIRECTORY" />
<result property="inTime" column="IN_TIME" />
<result property="noOfRecords" column="NO_OF_RECORDS" />
<result property="status" column="STATUS" />
<result property="statusDate" column="STATUS_TIME" />
<result property="statusReason" column="STATUS_REASON" />
</resultMap>
<select id="mergeSelectDuplicateRecords" parameterClass="string"
resultMap="inputFile" >
SELECT FILE_NAME FROM ROU_MERGE_BATCH where FILE_NAME IN (#fileNames#)
</select>
....
这是用String调用上面的查询为'abc.txt','xyz.txt'的类。
FileAuditDaoIbatisImpl extends SqlMapClientDaoSupport implements FileAuditDao
.....
public List getMergeDuplicateFiles(String fileNames){
List lsMergeFiles = null;
lsMergeFiles = getSqlMapClientTemplate().queryForList("mergeSelectDuplicateRecords", fileNames);
logger.info("List of files returned by ResultSet = "+lsMergeFiles);
return lsMergeFiles;
}
....
我没有在日志中看到任何错误/异常。
有人可以帮我解决问题。我希望从这段代码返回结果列表。在oracle DB中,我有所有的db条目来验证这个查询..但不确定是什么问题。
答案 0 :(得分:0)
是否可以打印文件名并确保文件名没有任何前导/尾随空格。另外,我假设您已直接在DB中执行此查询,以确保您获得结果SELECT FILE_NAME FROM ROU_MERGE_BATCH where FILE_NAME IN ('abc.txt')
fileNAmes是单个文件名还是以逗号分隔的字符串?
<强> EDITED 强> 问题在于您为IN caluse
传递逗号分隔字符串的方式有关在Ibatis中使用IN子句的信息,请参阅此链接: