spring中整合使用mybatis的用法总结
一:在Spring配置Mybatis
第一步:将mybatis-spring类包添加 到项目的类库中
第二步:编写spring和持久层衔接的xml文件,这里起名为spring-dao.xml
-
<!-- 3:配置SqlSessionFactory对象 -->
-
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> ①
-
<!-- 注入数据库连接池 -->
-
<property name="dataSource" ref="dataSource"/>
-
<!-- 配置MyBatis全局配置文件:mybatis-config.xml -->
-
<property name="configLocation" value="classpath:mybatis-config.xml"/>②
-
<!-- 扫描entity包 使用别名 -->
-
<property name="typeAliasesPackage" value=""/>
-
<!-- 扫描sql配置文件:mapper需要的xml文件 -->
-
<property name="mapperLocations" value="classpath:mapper/*.xml"/> ③
-
</bean>
mybatis-spring 类包提供了SqlSessionFactoryBean,以便通过Spring风格创建mybatis的SqlSessionFactory,如①所示。只需要注入数据源并指定mybatis的总配置文件就可以了,如②所示。 mapperLocations属性支持扫描式加载sql映射文件。
二:编写myBatis中的dao
第一种方法:使用SqlSessionTemplate模板类
-
mybatis- spring效仿spring的风格提供了一个模板类SqlSessionTemplate,可以通过模板类轻松访问数据库
-
但是这种方法使用字符串指定映射项,容易引起错误,因为字符串本身没有语义性,如果存在编写错误,编译器无法识别,只能在运行期发现。
第二种方法:使用映射接口
接口的名称和映射命名空间相同,接口方法和映射基的id相同
第一步:在spring-dao.xml中添加配置
-
<!-- 4:配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中-->
-
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
-
<!-- 注入sqlSessionFactory -->
-
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
-
<!-- 给出需要扫描Dao接口包 -->
-
<property name="basePackage" value=""/>
-
</bean>
MapperScannerConfigurer将扫描basePackage所指定的包下的所有的接口类(包括子包),如果它们在sql映射文件中定义过,则将它们动态定义为Spring Bean,这样我们就可以在Service中直接注入映射接口的bean了。