为什么我的mybatis查询结果为null?

Why my mybatis query result is null?

我是新手here.Could有人能帮帮我吗?我的语法如下。

采购订单:

package com.cabr.po;

public class InputVAT {

private String dept;
private String period;
private String tax;
private String type;
}

这里省略了 toString 和 get、set 方法。

配置中的别名:

<typeAliases>
    <package name="com.cabr.po" />
</typeAliases>

道实现:

@Override
public InputVAT findInputVATByPeriod(String period) {
    SqlSession sqlSession = sqlSessionFactory.openSession();

    InputVAT inputVAT =        sqlSession.selectOne("com.cabr.findInputVATByPeriod", period);
    return inputVAT;
}

映射器:

<mapper namespace="com.cabr">
<select id="findInputVATByPeriod" parameterType="string"
    resultType="InputVAT">
    SELECT * FROM input_vat WHERE period = #{period}
</select>

测试:

@Test
public void testFindInputVATByPeriod() {
    InputVATDao dao = new InputVATDaoImpl(sqlSessionFactory);
    InputVAT inputVAT = dao.findInputVATByPeriod("201607");
    System.out.println(inputVAT);
}

数据库:

CREATE TABLE `input_vat` (
`id` varchar(32) NOT NULL,
`dept` varchar(10) NOT NULL,
`period` varchar(6) NOT NULL,
`tax` varchar(10) NOT NULL,
`type` varchar(128) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

当我尝试运行这个测试时,控制台显示:

 2016-08-22 15:54:08,282 [main] [com.cabr.findInputVATByPeriod]-[DEBUG] ==>
 Preparing: SELECT * FROM input_vat WHERE period = ? 

2016-08-22 15:54:08,360 [main] [com.cabr.findInputVATByPeriod]-[DEBUG] ==> 
Parameters: 201607(String)

2016-08-22 15:54:08,462 [main] [com.cabr.findInputVATByPeriod]-[DEBUG] <==  
Total: 0

null

我希望我已经描述了我的问题clearly.I想知道为什么结果为空,而实际上数据库中有数据。

嗯...我发现了一些答案,注意到这可能有效:

<select id="findInputVATByPeriod" parameterType="string"
resultMap="MyresultMap">
SELECT * FROM input_vat WHERE period = #{period}
</select>

<ResultMap id="MyresultMap" type="InputVAT">
    <id column="id" property="id">
</ResultMap>

事实上我并没有将数据保存在我的数据库中correctly.What真可惜!