【MapperFactoryBean】
产生原因 为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象(DAO)的代码(就是为了简化Dao的编写,方便程序猿),MyBatis-Spring 提供了一个动态代理的实现——MapperFactoryBean。
作用 使我能够直接注入Mapper(例如DepartmentDao.xml)的接口到service(业务层)的bean中,当需要使用Mapper时,只需要像使用Dao接口一样使用他就行了 ,并且不需要手写Dao实现类的代码,MyBatis-Spring可以自动生成。
让我们来看看例子:
首先来看看spring.xml配置文件。在笔者写的SSM代码中就是resources文件底下的applicationcontext 。
在applicationcontext中配置MapperFactoryBean
<!--配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
Dao层接口
public interface DepartmentDao {
public List<Department> search();
public Department searchById(Integer id);
public int add(Department dep);
public int update(Department dep);
public int delete(int id);
}
注入service(业务)层
@Autowired
DepartmentDao depDao;
【MapperScannerConfigurer】
作用 自动扫描该类路径(即resources包下)的所有映射器(Mapper)并自动创建成MapperFactoryBean。
**使用方法 **在spring.xml文件中进行配置
<!-- mapper扫描器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.alan.hrsys.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>