1. 程式人生 > >MyBatis小白鼠004-問題1為什麼UserMapper是一個介面

MyBatis小白鼠004-問題1為什麼UserMapper是一個介面

為什麼UserMapper.java是一個介面。

我發現這個問題,字面上有點短,但是涉及到的內容有點多。

先簡單來講:

1.我們使用@MapperScan 來找到的這個UserMapper.java。這個註解,不是mybatis.jar裡的,是mybatis-spring-1.3.2.jar包裡的。mybatis-spring專案是一個方便spring使用mybatis的專案。

2.我們要把UserMapper.java加入到spring中,一個比較明顯的例子,是通過xml配置檔案來看。

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean>

MapperFactoryBean 建立的代理類實現了 UserMapper 介面,並且注入到應用程式中。 因為代理建立在執行時環境中(Runtime,譯者注) ,那麼指定的對映器必須是一個介面,而 不是一個具體的實現類。

複雜來講:

涉及到了mybatis的實現原理,java的動態代理機制等更多的內容。

那,我們只能從mybatis的基礎來搞一搞了。