Spring中使用mybatis的原理主要是通过两个类进行的,一个是SqlSessionFactoryBean,一个是
MapperScannerConfigurer 。
[SqlSessionFactoryBean](https://mybatis.github.io/spring/zh/factorybean.html)配置
在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-spring 中,则使用 SqlSessionFactoryBean 来替代。
示例
dataSource属性该属性必须配置,多数据源时会有多个dataSource,同时也需要配置多个sqlSessionFactory来对应。
mapperLocations属性配置该属性后,sqlSessionFactory会自动扫描该路径下的所有文件并解析。
该路径支持多个,可以用,;\t\n进行分割。
configLocation属性上面例子中并没有使用该属性,当SqlSessionFactoryBean提供的配置不能满足使用时,你可以使用mybatis-config.xml配置文件配置其他属性,然后通过configLocation属性指定该配置的路径,SqlSessionFactoryBean会使用该配置文件创建Configuration。
MapperScannerConfigurer 配置
为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。
一般用过的最多也就是这3个属性,实际情况下最常用的只有basePackage。
basePackage属性basePackage可以写多个,可以用,;\t\n进行分割。
sqlSessionFactoryBeanName属性这个属性一般都用不到,只有当你配置多数据源的时候,这是会有多个sqlSessionFactory,你就需要通过该属性来指定哪一个sqlSessionFactory(值为SqlSessionFactoryBean <bean>配置中的id属性)。
[SqlSessionFactoryBean](https://mybatis.github.io/spring/zh/factorybean.html)配置
在基本的 MyBatis 中,session 工厂可以使用 SqlSessionFactoryBuilder 来创建。而在 MyBatis-spring 中,则使用 SqlSessionFactoryBean 来替代。
示例
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations">
<array>
<value>classpath:mapper/*.xml</value>
</array>
</property>
</bean>
dataSource属性该属性必须配置,多数据源时会有多个dataSource,同时也需要配置多个sqlSessionFactory来对应。
mapperLocations属性配置该属性后,sqlSessionFactory会自动扫描该路径下的所有文件并解析。
该路径支持多个,可以用,;\t\n进行分割。
configLocation属性上面例子中并没有使用该属性,当SqlSessionFactoryBean提供的配置不能满足使用时,你可以使用mybatis-config.xml配置文件配置其他属性,然后通过configLocation属性指定该配置的路径,SqlSessionFactoryBean会使用该配置文件创建Configuration。
MapperScannerConfigurer 配置
为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。
示例
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.isea533.mybatis.mapper"/>
<property name="sqlSessionFactoryBeanName" ref="sqlSessionFactory"/>
</bean>
一般用过的最多也就是这3个属性,实际情况下最常用的只有basePackage。
basePackage属性basePackage可以写多个,可以用,;\t\n进行分割。
sqlSessionFactoryBeanName属性这个属性一般都用不到,只有当你配置多数据源的时候,这是会有多个sqlSessionFactory,你就需要通过该属性来指定哪一个sqlSessionFactory(值为SqlSessionFactoryBean <bean>配置中的id属性)。