0

我正在尝试在自定义结果类中返回结果列表,但不确定出了什么问题。以下是代码的详细信息 -

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>
....

这是使用字符串调用上述查询的类,如'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 条目来验证这个查询.. 但不确定出了什么问题。

4

1 回答 1

0

您能否打印文件名并确保文件名没有任何前导/尾随空格。此外,我假设您已直接在 DB 中执行此查询,以确保您获得结果SELECT FILE_NAME FROM ROU_MERGE_BATCH where FILE_NAME IN ('abc.txt')

fileNAmes 也是单个文件名还是逗号分隔的字符串?

已编辑 问题与您为 IN caluse 传递逗号分隔字符串的方式有关

请参阅此链接以在 Ibatis 中使用 IN 子句:

如何在 iBATIS 中使用 IN 子句?

于 2013-11-11T07:18:46.703 回答