为什么我的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真可惜!
我是新手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真可惜!