java后端开发(八):拥抱springboot,整合mybatis

经过上一篇 的学习,我们了解到 mybatis 中的几个重要的类,分别是:

  1. SqlSessionFactory
  2. SqlSession
  3. Mapper

想要把 mybatis 跑起来,就需要这三种类及其对象的相互配合。

那么传说中的 spring 整合 mybatis 是怎么整合的呢?关键点就是让这些对象被 Spring 去创建托管起来,然后在需要的时候注入即可。示意图如下:

创建对象
放入MAP
取出对象

这里的 MAP 集合就相当于简化版的 Spring容器 ,里面放的都是一个个被托管的对象。具体的整合可以参考mybatis-spring 这个官方教程,核心过程和示意图中的一样,此处不再赘述。

关键是来看下 spring boot 对于我们使用 mybatis 来说做了什么,进而可以回过头来和 spring 进行对比。

使用 spring boot 整合非常简单,分为三步:

  1. 引入开发包:
        <!--这是前文引入的-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>    
	    <!--这是新引入的-->
	    <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

注意,开发包里面有 starter 字样,后面会进行说明。

  1. 配置数据源信息:

application.yml 或者application.properties 里面进行配置,二者的区别是文本格式的区别。这里使用 application.yml 进行配置:

spring:
  datasource:
    url: jdbc:mysql://url
    username: xxx
    password: xxx
    driver-class-name: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:/mapper/*.xml

mapper-locations 的作用是告诉 mybatis 我们的 mapper文件去哪里找。classpath 代表 resource 下面的路径,所以我们的mapper xml 文件是放在 resource/mapper/ 下面的。

  1. 编写 mapper 接口 和 对应的 xml文件,这个同上文。不同之处在于,我们给接口多加两个注解:
@Mapper
@Repository
public interface TestMapper {

	SysUser selectUser();
}

其中,注解 Repository 告诉 spring,让spring把这个 TestMapper 进行托管,后续注入的时候需要用到。

注解 mapper 则告诉 spring boot ,这个类需要自动配置(后面会小结的)。

完了

这样就整合完了

那么如何使用呢?和 spring 整合后的使用一样,比如可以利用 @Autowired 注入进来使用,如:

	@Autowired
	private TestMapper testMapper;

如果你和上面链接中的spring 整合过程相比较一下,spring boot 的整合过程已经极度精简了。你只是引入了库,配置了必要的连接信息,然后开发了数据层的功能,其他地方就可以直接注入使用了。

不得不说,spring boot 化繁为简的能力实在是高。

那么,为什么会这么简单呢?关键点就在于 maven 依赖中的那个 starter 字眼,这实际上是 mybatis 官方结合 spring boot 提供的自动配置能力,开发的一套自动配置依赖。

像是 SqlSessionFactory 等就不需要再像 spring 一样进行额外配置了。我们填写了关键的数据库信息,spring boot 会扫描到并利用这些信息去构建 SqlSessionFactory对象,并且会根据@Mapper 注解让这些接口享受到自动配置好的上下文环境。

然后我们调用对应的数据方法时,就可以直接对数据库进行操作了。当然,这一系列过程中涉及到很多复杂的交互,后续会进行说明。但是本篇中,我们只是感受一下 spring boot 的威力,真的是 spring 威力加强版。

更多参见:java后端开发教程系列目录

发布了39 篇原创文章 · 获赞 74 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/zhou307/article/details/103827353