自己把spring,mybatis,SpringMVC都看完了,就想着把他们整合一下。
在SSM整合中,spring的地位是最高的,只要把其他两个都整合给spring就行了。
springMVC和spring其实是一家人,说是把springMVC整合给spring,其实就是把两个配置文件各自配置一遍就行了。
难点在把mybatis整合给spring。要把mybatis整合给spring,最终就是要把mybatis的sqlSessionFactory交给spring去处理。
所以我在下面就讲一下怎么整合spring和mybatis
配置数据源
既然要把mybatis交给spring去管理,肯定要在spring的配置文件中配置数据源。我这里是用配置文件配置的。
<!-- 加载配置文件 -->
<bean id="config" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="locations">
<array>
<value>classpath:db.properties</value>
</array>
</property>
</bean>
<!-- 加载数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</bean>
配置sqlSessionFactory
配置sqlSessionFactory只需要把上面配置好的dataSource和Mapper.xml文件配到SqlSessionFactoryBean中就行
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:studentMapper/studentMapper.xml"> </property>
</bean>
配置mybatis和spring自动映射
将上面配置好的sqlSessionFactory和对应的Mapper包添加进去
<bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<property name="basePackage" value="studentMapper"></property>
</bean>
在service层注入dao层对象
<bean id="studentService" class="studentServiceImpl.studentServiceImpl">
<property name="studentMapper" ref="studentMapper"></property>
</bean>
其实在开始学的时候我有一个地方不是很理解,就是在service中注入dao层对象,ref后面的值应该是已经配置好的对象,可是我根本就没有配置这个对象,为什么可以直接用呢?
这是因为我们在上面配置mybatis和spring映射的中的basePackage就是要添加扫描包,就会把相应的接口给扫描了,就会创建dao层的对象。所以,我们就能够获取到接口的对象,并且名称是接口名的第一个字母小写。这就是为什么上面ref后面的值可以直接添加的原因。
面向接口编程的思想:在SSM框架中,dao层是不用写实现类的,直接接口调用方法。