iBatis和MyBatis在使用ResultMap對應關係時的區別

本文已同步至我的博客 liaosi's blog-iBatis和MyBatis在使用ResultMap對應關係時的區別

在使用iBatis和MyBatis的查詢時,查詢出來的數據一般會由一個ResultMap來接收。若是在sql語句中 SELECT 出來的字段和ResultMap中的column沒有一一對應,是否會有影響呢?並且ResultMap一般會用到多個查詢的sql中,這就是必需要考慮的一個問題。java

iBatis

在iBatis中,若是查詢的字段比ResultMap中對應的字段多,不會報錯。
若是ResultMap中字段多了,查詢數據的時候沒有 SELECT 出來這個數據,那麼此時就會報錯,好比說我查詢的時候沒有查詢gyTradeCode這個字段,可是ResultMap裏面有這個字段,報了以下錯誤:spring

--- The error occurred in market-shop/sql/GoodOrder.xml.  
--- The error occurred while applying a result map.  
--- Check the GoodOrder.GoodOrderResult.  
--- Check the result mapping for the 'gyTradeCode' property.  
--- Cause: java.sql.SQLException: Invalid column name, dubbo version: 0.0.1-SNAPSHOT, current host: 127.0.0.1
org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in market-shop/sql/GoodOrder.xml.  
--- The error occurred while applying a result map.  
--- Check the GoodOrder.GoodOrderResult.  
--- Check the result mapping for the 'gyTradeCode' property.  
--- Cause: java.sql.SQLException: Invalid column name

結論是:ResultMap裏的column不能比sql中查詢的字段多,可是查詢的字段是能夠比ResultMap中的多。因此當咱們在ResultMap中增長了一個字段時,全部用到了這個ResultMap的sql語句都要在SELECT中增長對應的字段sql

MyBatis

若是是使用MyBatis,這種對應關係誰多誰少都不會報錯,不影響。app

相關文章
相關標籤/搜索