Description
Edit: I've done a little more testing. It looks like any period in the column name messes it up; spaces have nothing to do with it.
I'm using version 3.2.1. I don't think the ResultHandler is necessary, but it's the scenario I had in my environment where I noticed the bug.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="IncorrectColumnNameTest">
<select id="test" resultType="HashMap">
select 1 as [Space No Period], 2 as [Space. With Period]
</select>
</mapper>
public interface IncorrectColumnNameTest
{
public void test(ResultHandler resultHandler);
}
public Class IncorrectColumnNameTestDao
{
public boolean test(FileWriter fileOutput) throws SQLException
{
final SqlSession session = MyBatisSession.openSession(con);
try
{
final ConsoleResultHandler fileHandler = new ConsoleResultHandler();
final DetailsViewExportMapper mapper = session.getMapper(DetailsViewExportMapper.class);
mapper.test(fileHandler);
} finally {
session.close();
}
public static class ConsoleResultHandler implements ResultHandler
{
public void handleResult(ResultContext rc)
{
final Map<String,Object> row = (Map<String,Object>)rc.getResultObject();
System.out.println( StringUtils.join(row.keySet(), ",") );
System.out.println( StringUtils.join(row.values(), ",") );
}
private String join(Collection<? extends Object> data)
{
String join = "";
for (Object o : data)
{
join += o.toString() + ", "
}
return join;
}
}
}
}
MyBatis output
905 [main] DEBUG IncorrectColumnNameTest.test - ooo Using Connection [com.mpti.reportlogiq.server.db.TraceConnection@16ef71]
905 [main] DEBUG IncorrectColumnNameTest.test - ==> Preparing: select 1 as [Space No Period], 2 as [Space. With Period]
906 [main] DEBUG IncorrectColumnNameTest.test - ==> Parameters:
937 [main] TRACE IncorrectColumnNameTest.test - <== Columns: Space No Period, Space. With Period
937 [main] TRACE com.mpti.reportlogiq.server.db.mappers.IncorrectColumnNameTest.test - <== Row: 1, 2
Expected output
Space No Period, Space. With Period,
1, 2,
Actual output
Space No Period, Space,
1, { With Period=2},