2016-08-22 64 views
0

我在這裏是全新的。請大家給我一些幫助嗎?我的語法如下。爲什麼我的mybatis查詢結果爲空?

PO:

package com.cabr.po; 

public class InputVAT { 

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

的toString和獲取,設置方法在這裏中省略。

別名在配置:

<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 

我希望我已經descripted我的問題clearly.I想知道爲什麼結果爲空,而實際上有數據庫中的數據。

回答

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> 

其實我並沒有在我的數據庫中的數據保存correctly.What一種恥辱!

+0

不需要提及'

+0

thx!我會再試一次! – fuko