我们都知道Mybatis的Mapper接口可以直接来依赖注入,它本没有实现类,又是如何实例化的呢。先看看Mybatis没有集成Spring是如何实例化的。
<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就可以实例化出mapperInterface类型的Bean,因为MapperFactoryBean实现了FactoryBean接口的getObject方法,可以实例化出我们想要的Bean,实际上是通过Jdk动态代理得到的Bean。
public T getObject() throws Exception {
return getSqlSession().getMapper(this.mapperInterface);
}
调用方式:
SqlSession session = sqlSessionFactory.openSession();
try {
User user= (User) session.selectOne("org.mybatis.example.UserMapper.selectBlog", 1);
} finally {
session.close();
}
上面的UserMapper接口是一个个的配置来实例化的,每次需要openSessio