整合使用持久层框架mybatis 使用SqlSessionTemplate模板类与使用映射接口 对比

时间:2024-04-07 09:36:00

spring中整合使用mybatis的用法总结

一:在Spring配置Mybatis

第一步:将mybatis-spring类包添加 到项目的类库中

第二步:编写spring和持久层衔接的xml文件,这里起名为spring-dao.xml

  1. <!-- 3:配置SqlSessionFactory对象 -->
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> ①
  3. <!-- 注入数据库连接池 -->
  4. <property name="dataSource" ref="dataSource"/>
  5. <!-- 配置MyBatis全局配置文件:mybatis-config.xml -->
  6. <property name="configLocation" value="classpath:mybatis-config.xml"/>②
  7. <!-- 扫描entity包 使用别名 -->
  8. <property name="typeAliasesPackage" value=""/>
  9. <!-- 扫描sql配置文件:mapper需要的xml文件 -->
  10. <property name="mapperLocations" value="classpath:mapper/*.xml"/> ③
  11. </bean>

mybatis-spring 类包提供了SqlSessionFactoryBean,以便通过Spring风格创建mybatis的SqlSessionFactory,如①所示。只需要注入数据源并指定mybatis的总配置文件就可以了,如②所示。 mapperLocations属性支持扫描式加载sql映射文件。

二:编写myBatis中的dao

第一种方法:使用SqlSessionTemplate模板类

  1. mybatis-spring效仿spring的风格提供了一个模板类SqlSessionTemplate,可以通过模板类轻松访问数据库
  2. 但是这种方法使用字符串指定映射项,容易引起错误,因为字符串本身没有语义性,如果存在编写错误,编译器无法识别,只能在运行期发现。

第二种方法:使用映射接口

接口的名称和映射命名空间相同,接口方法和映射基的id相同

第一步:在spring-dao.xml中添加配置

  1. <!-- 4:配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中-->
  2. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  3. <!-- 注入sqlSessionFactory -->
  4. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  5. <!-- 给出需要扫描Dao接口包 -->
  6. <property name="basePackage" value=""/>
  7. </bean>

MapperScannerConfigurer将扫描basePackage所指定的包下的所有的接口类(包括子包),如果它们在sql映射文件中定义过,则将它们动态定义为Spring Bean,这样我们就可以在Service中直接注入映射接口的bean了。