【Mybatis】整合Spring
配置和使用
- pom文件中引入mybatis和spring整合的jar包
- spring配置文件中配置SqlSessionFactoryBean
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- mybatis配置文件路径 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
<!-- mapper映射器文件路径 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
<property name="dataSource" ref="dataSource"/>
</bean>
- spring配置文件中配置需要扫描Mapper接口的路径
<!--配置扫描器,将mybatis的接口实现加入到IOC容器中 -->
<!--<mybatis-spring:scan #base-package="com.gupaoedu.crud.dao"/>-->
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.gupaoedu.crud.dao"/>
</bean>
- 创建一个BaseDao继承SqlSessionDaoSupport,并在 BaseDao里面封装对数据库的操作,mapper接口的实现类继承BaseDao(实现类需要加上@Repository 的注解),service将相应的实现类使用@Autowired注入,这样service中就能使用dao中的方法来访问数据库了。
- service将相应的mapper接口使用@Autowired注入,这样service中就能直接使用mapper接口中的方法来访问数据库了。
创建SqlSessionFactory
创建SqlSession
mapper接口的扫描注册
扫描时机
- 实现BeanDefinitionRegistryPostProcessor接口(BeanFactoryPostProcessor子类)
- 重写postProcessBeanDefinitionRegistry方法
- 注册beanDefinitions的时候将BeanClass修改为MapperFactoryBean
注册类(MapperFactoryBean)
mapper接口注入使用
@Service
public class EmployeeService {
@Autowired
EmployeeMapper employeeMapper;
public List<Employee> getAll() {
return employeeMapper.selectByMap(null);
}
}
- 根据mapper的名字从BeanFactory中获取它的BeanDefination然后从BeanDefination中获取BeanClass为之前注册的MapperFactoryBean。
总结

设计模式

评论区