MyBatis小白鼠004-問題1為什麼UserMapper是一個介面
阿新 • • 發佈:2018-12-16
為什麼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的基礎來搞一搞了。