资讯专栏INFORMATION COLUMN

spring和mybatis的整合

vspiders / 2369人阅读

摘要:第一是手动在的配置文件中使用部分来指定类路径。第二是使用工厂的属性。注解和样式的配置都是支持的。在事务处理期间一个多带带的对象将会被创建和使用。创建的代理控制开放和关闭翻译任意的异常到的异常中。每个映射器将会在指定的包路径中递归地被搜索到。

mybatis-spring

若要整合spring和mybatis就需要一个插件即mybatis-spring-x.x.x.jar。具体的安装如下所示:

 
   org.mybatis
   mybatis-spring
   x.x.x
 

要和Spring一起使用 MyBatis,还需要在 Spring 应用上下文中定义至少两样东西:一个 SqlSessionFactory 和至少一个数据映射器类。

SqlSessionFactory
在文件中配置sqlsessionfactory

   

属性dataSource: SqlSessionFactory 有一个多带带的必须属性,就是 JDBC 的 DataSource。这可以是任意 的 DataSource,其配置应该和其它 Spring 数据库连接是一样的。

configLocation:它是用来指定MyBatis的XML 配置文件路径的。 如果基本的 MyBatis 配置需要改变, 那么这就是一个需要它的地方。 通常这会是的部分。要注意这个配置文件不需要是一个完整的 MyBatis 配置。确切地说,任意环境,数据源 和 MyBatis 的事务管理器都会被忽略。SqlSessionFactoryBean 会创建它自己的,使用这些 值定制 MyBatis 的 Environment 时是需要的。

mapperLocations:如果 MyBatis 映射器 XML 文件在和映射器类相同的路径下不存在,那么另外一个需要配置文件的原因就是它了。使用这个配置,有两种选择。第一是手动在 MyBatis的XML配 置文件中使用部分来指定类路径。第二是使用工厂bean的mapperLocations属性。

mapperLocations 属性使用一个资源位置的 list。 这个属性可以用来指定 MyBatis 的 XML 映射器文件的位置。 它的值可以包含 Ant 样式来加载一个目录中所有文件, 或者从基路径下 递归搜索所有路径。

事务

一个使用 MyBatis-Spring的主要原因是它允许MyBatis参与到 Spring 的事务管理中。而不是给 MyBatis创建一个新的特定的事务管理器,MyBatis-Spring 利用了存在于 Spring 中的 DataSourceTransactionManager。

一旦 Spring 的 PlatformTransactionManager 配置好了,就可以在 Spring 中以你通常的做法来配置事务。@Transactional 注解和 AOP样式的配置都是支持的。在事务处理期间,一个多带带的 SqlSession 对象将会被创建 和使用。当事务完成时,这个 session 会以合适的方式提交或回滚。

映射器类配置

为了代替手工使用 SqlSessionDaoSupport 或 SqlSessionTemplate 编写数据访问对象 (DAO)的代码,MyBatis-Spring 提供了一个动态代理的实现:MapperFactoryBean。这个类 可以让你直接注入数据映射器接口到你的 service 层 bean 中。当使用映射器时,你仅仅如调 用你的 DAO 一样调用它们就可以了,但是你不需要编写任何 DAO 实现的代码,因为 MyBatis-Spring 将会为你创建代理。使用注入的映射器代码,在 MyBatis,Spring 或 MyBatis-Spring 上面不会有直接的依赖。

MapperFactoryBean 创建的代理控制开放和关闭 session,翻译任意的异常到 Spring 的DataAccessException 异常中。此外,如果需要或参与到一个已经存在活动事务中,代理将会开启一个新的Spring事务。

数据映射器接口可以按照如下做法加入到 Spring 中:


  
  

MapperFactoryBean 创建的代理类实现了 UserMapper 接口,并且注入到应用程序中。 因为代理创建在运行时环境中,那么指定的映射器必须是一个接口,而不是一个具体的实现类。

如果UserMapper 有一个对应的MyBatis的XML映射器文件, 如果 XML 文件在类路径的位置和映射器类相同时,它会被 MapperFactoryBean自动解析。没有必要在 MyBatis 配置文 件 中 去 指 定 映 射 器 , 除 非 映 射 器 的 XML 文 件 在 不 同 的 类 路 径 下 。

没有必要在 Spring 的 XML 配置文件中注册所有的映射器。相反,你可以使用一个MapperScannerConfigurer , 它 将 会 查 找 类 路 径 下 的 映 射 器 并 自 动 将 它 们 创 建 成MapperFactoryBean。

要创建 MapperScannerConfigurer,可以在 Spring 的配置中添加如下代码:


  

basePackage 属性是让你为映射器接口文件设置基本的包路径。 你可以使用分号或逗号 作为分隔符设置多于一个的包路径。每个映射器将会在指定的包路径中递归地被搜索到。

注 意 , 没 有 必 要 去 指 定 SqlSessionFactory 或 SqlSessionTemplate , 因 为 MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使 用了一个 以上的 DataSource ,那 么自动 装配可 能会失效 。这种 情况下 ,你可 以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 属性来设置正确的 bean 名 称来使用。这就是它如何来配置的,注意 bean 的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70255.html

相关文章

  • mybatisspringMVC整合及其中问题

    摘要:的整合大致结构中放置的配置文件,由于这个例子很简单,所以配置得比较简单。在与的整合中,在这里不用配置,因为在整合包中有的扫描类。中配置的是和整合的配置。其中包括数据源数据池的配置的配置扫描器的配置还有事务的配置。所以将改了就解决问题了 1. springMVC+spring+mybatis的整合大致结构: showImg(https://segmentfault.com/img/bVb...

    EscapedDog 评论0 收藏0
  • 分布式软件架构整合(一)

    摘要:通过整合及可以实现数据库查询后将数据持久化。但是可能出现幻像读这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。 所需技术:spring、mybatis、druid、flyway、logback、nodejs、html、css3 ;目标:创建一个业务框架,后端采用spring+mybatis,中间层采用node,前端html5,css3等; showImg(https:/...

    mochixuan 评论0 收藏0
  • 5、springcloud整合mybatis注解方式

    摘要:上一篇学习了服务提供者,但是并不是单单就学习了服务提供者。中间还穿插使用了数据源和整合。但是上篇使用时还是沿用了老的方式,需要配置对应的文件。 1、上一篇学习了服务提供者provider,但是并不是单单就学习了服务提供者。中间还穿插使用了Hikari数据源和spring cloud整合mybatis。但是上篇使用mybatis时还是沿用了老的方式,需要配置mapper对应的xml文件。...

    ingood 评论0 收藏0
  • Spring Boot - 整合JdbcTemplate、MyBatis

    摘要:更简答的说就是要么全部执行成功,要么撤销不执行。因此,数据库操作的事务习惯上就称为事务。实现原理单机事务事务是用对象控制的。接口提供了两种事务模式自动提交和手工提交。事务多机事务,通过实现,需要驱动支持。局限于应用使用。 Spring Boot - 数据库配置 回顾 Spring Boot - 初识 Hello World Spring Boot - Servlet、过滤器、监听器、...

    Keagan 评论0 收藏0
  • Spring Boot 教程(三): Spring Boot 整合Mybatis

    摘要:教程简介本项目内容为教程样例。目的是通过学习本系列教程,读者可以从到掌握的知识,并且可以运用到项目中。 教程简介 本项目内容为Spring Boot教程样例。目的是通过学习本系列教程,读者可以从0到1掌握spring boot的知识,并且可以运用到项目中。如您觉得该项目对您有用,欢迎点击收藏和点赞按钮,给予支持!!教程连载中,欢迎持续关注! 环境 IDE: Eclipse NeonJa...

    Xufc 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<