Skip to content

Column names with a period messes up name mapping #13

Closed
@jhsheets

Description

@jhsheets

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},

Metadata

Metadata

Assignees

Labels

enhancementImprove a feature or add a new feature

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions