侧边栏壁纸
博主头像
DJ's Blog博主等级

行动起来,活在当下

  • 累计撰写 133 篇文章
  • 累计创建 51 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

【Mybatis】整合Spring

Administrator
2022-04-03 / 0 评论 / 0 点赞 / 50 阅读 / 2730 字

【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>
  • 使用方式
  1. 创建一个BaseDao继承SqlSessionDaoSupport,并在 BaseDao里面封装对数据库的操作,mapper接口的实现类继承BaseDao(实现类需要加上@Repository 的注解),service将相应的实现类使用@Autowired注入,这样service中就能使用dao中的方法来访问数据库了。
  2. service将相应的mapper接口使用@Autowired注入,这样service中就能直接使用mapper接口中的方法来访问数据库了。

创建SqlSessionFactory

创建SqlSession

mapper接口的扫描注册

扫描时机

  • spring容器初始化

扫描类(MapperScannerConfigurer)

  • 实现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。

总结

设计模式

0

评论区