Java getSqlMapClientTemplate().queryForList()未返回任何结果列表
我试图返回自定义结果类中的结果列表,但不确定出了什么问题。 以下是守则的详情-Java getSqlMapClientTemplate().queryForList()未返回任何结果列表,java,sql,spring,ibatis,Java,Sql,Spring,Ibatis,我试图返回自定义结果类中的结果列表,但不确定出了什么问题。 以下是守则的详情- ibatis-file.xml .... <resultMap id="inputFile" class="com.tm.systemmanager.batch.InputFile"> <result property="fileId" column="FILE_ID" /> <result property="fileName" column="FILE_NAME" /
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>
....
我在日志中没有看到任何错误/异常
有人能帮我解决这个问题吗。我期望从这段代码返回结果列表。在oracle DB中,我有所有用于验证此查询的DB条目。。但不确定出了什么问题。请打印文件名并确保文件名没有任何前导/尾随空格。另外,我假设您已直接在DB中执行此查询,以确保获得结果
SELECT FILE\u NAME FROM ROU\u MERGE\u BATCH where FILE\u NAME in('abc.txt')
文件名也是单个文件名还是逗号分隔的字符串
已编辑
问题在于在caluse中传递逗号分隔字符串的方式
有关在Ibatis中使用IN子句的信息,请参阅此链接:
文件名是多个的,用逗号分隔,并用单引号括起来。当直接在DB上执行时,会打印文件名,它会处理查询。现在我尝试使用硬编码字符串值来检查结果。我认为问题是在子句中传递值。试试这个是的。。它对我有用。。。Ibatis不知何故错误地处理了传递的字符串逗号分隔值,上面链接中提供的解决方案对我有效。我怎样才能把你的评论标记为我的答案?
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;
}
....