getSqlMapClientTemplate()。queryForList()不返回任何结果列表

时间:2013-11-11 06:32:48

标签: java sql spring ibatis

我试图在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条目来验证这个查询..但不确定是什么问题。

1 个答案:

答案 0 :(得分:0)

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

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

<强> EDITED 问题在于您为IN caluse

传递逗号分隔字符串的方式

有关在Ibatis中使用IN子句的信息,请参阅此链接:

How to use an IN clause in iBATIS?