天天看點

mysql驅動包引發的問題

項目中一直使用了mysql-connector-java-5.0.7-bin.jar驅動包,

近來更新成:mysql-connector-java-5.1.7-bin.jar,

在一個關鍵地方,應用總是報異常,左思右想,我換過包,下面做一些簡單測試:

1、工程使用mysql-connector-java-5.0.7-bin.jar

mysql> select version(); 

+-----------------+ 

| version()       | 

| 5.1.16-beta-log | 

+-----------------+

+-----------+ 

| version() | 

| 5.1.48    | 

+-----------+

調用方法: 

getXXMap()

調用語句: 

 <select id="getXXMap" resultClass="java.util.HashMap"> 

     select concat(countryId,gender,medalType) as conKey,countryId,gender,medalType,medalCount from tableName 

 </select>

select concat(countryId,gender,medalType) as conKey,countryId,gender,medalType,medalCount from tableName 

傳回結果

{CHNW3={medalCount=2, countryId=CHN, conKey=CHNW3, gender=W, medalType=3}, NGRM2={medalCount=1, countryId=NGR, conKey=NGRM2, gender=M, medalType=2}, FRAM2={medalCount=1, countryId=FRA, conKey=FRAM2, gender=M, medalType=2}, UZBM3={medalCount=2, countryId=UZB, conKey=UZBM3, gender=M, medalType=3}}

conkey類型:class java.lang.String

兩台資料庫伺服器測試通過,擷取資料類型正常。

2、工程使用mysql-connector-java-5.1.7-bin.jar

{{[B@1555185={medalCount=2, countryId=RUS, conKey=[B@1555185, gender=W, medalType=1}, [B@1f51e5c={medalCount=2, countryId=BRA, conKey=[B@1f51e5c, gender=M, medalType=3}, [B@1612190={medalCount=1, countryId=FRA, conKey=[B@1612190, gender=M, medalType=3}, [B@df8b14={medalCount=1, countryId=CUB, conKey=[B@df8b14, gender=M, medalType=2}, [B@834cfb={medalCount=3, countryId=CHN, conKey=[B@834cfb, gender=W, medalType=1}, [B@5585dc={medalCount=1, countryId=GER}

兩台資料庫伺服器測試通過,但擷取資料類型無法識别。

conKey類型:class [B

後記: 

後來使用jdbcTemplate查詢 

傳回結果是: 

{conKey=[B@c713d2, countryId=ARG, gender=M, medalType=1, medalCount=1} 

類型:class [B

可見,依然還是驅動包問題,換成mysql-connector-java-5.0.7-bin.jar即可。

上一步所做的,引發下一步的錯誤,那麼可以懷疑上一步是有問題;如果N久後才發現這個錯誤,那麼這個錯誤還不一定好找出來,在開發過程中,每一步的測試,還是需要做到位!

本文轉自jooben 51CTO部落格,原文連結:http://blog.51cto.com/jooben/382632