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

时间:2016-08-22 08:19:43

标签: mybatis

我在这里是全新的。有人可以给我一些帮助吗?我的语法如下。

PO:

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>

DaoImplement:

@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

我希望我能清楚地描述我的问题。我想知道为什么在数据库中存在实际数据时结果为空。

1 个答案:

答案 0 :(得分:0)

嗯......我发现一些答案,注意到这可行:

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

实际上我没有正确地将数据保存在我的数据库中。真可惜!

相关问题