当前位置:   article > 正文

Spring-boot-Mybatis-Starter_springboot mybatis starter

springboot mybatis starter

一、简介

以我的理解,spring-boot-mybatis-starter就是mybatis在spring boot的嵌入,嵌入了一些上下文的自动配置,把一些容器中需要的实例的内容,由代码编写转换为外部配置。
在用Spring Initializr初始化的项目中,有SQL选项,当选择了Mybatis后,pom.xml文件中会自动带有mybatis-spring-boot-starter的配置。

这里写图片描述
【图1】
这个便是Spring-boot-Mybatis。
在此之前,用Mybatis的方式是引用:

<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis-spring</artifactId>
		<version>1.2.2</version>
	</dependency>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.2.8</version>
	</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

现在只需引用mybatis-spring-boot-starter,查看它的dependencies,包含有mybatis-spring、spring-boot-starter-jdbc。
而s-b-m-s则能自动识别配置有的datasource(也就是在.properties中配置的datasource),而不需要再在代码中写一个DataSource的bean,一个SqlSessionFactory的bean. 如图2。因为它的发明正是为了方便和简化这些业务。
这里写图片描述
【图2】

二、它做的事

spring-boot-starter官网介绍中我们可以看到,它启动后会做如下事情:

  1. 自动监测存在的DataSource(即在properties文件中配置的DataSource,如图3)
  2. 通过此DataSourse自动创建并注册SqlSessionFactory实例
  3. 从SqlSessionFactory中注册并创建出一个SqlSessionTemplate实例
  4. 自动扫描你的mappers文件,链接他们到SqlSessionTemplate并且注册到Spring的上下文中,这样他们就能注入到你的Mapper实例.

这里写图片描述
【图3】

这里要注意的是:

MyBatis-Spring-Boot-Starter会默认去寻找标注有@Mapper的mapper文件。但是一个个去配置,重复的工作程序员一般都要避免,所以MyBatis-Spring-Boot-Starter也允许你一步到位:
其途径有三种,我只介绍MapperScan标注法,其他两种方法,请看官网Injecting Mappers

MapperScan(“mapper的位置”)标注,直接将所有的mapper都注入到Spring环境中来了,每个Mapper上的@Mapper标注就可以省略掉啦~
这里写图片描述

三、我们做的事

1. 在pom中引用它,具体看页尾附件。
2. 在properties文件中配置DataSource;
3. 在properties配置它的参数type-aliases-package(Mapper中用到的参数或返回的模型),mapper-locations(mapper的xml配置文件路径),这些参数具体看官网Configuration部分

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/demo
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath:mappers/*.xml
  • 1
  • 2
  • 3
  • 4
  • 5

4. 注入mappers,也就是上文介绍的MapperScan标注配置。

以上四步缺一不可哦

附件:(pom.xml配置)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>com.example</groupId>
	<artifactId>demo</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>demo</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.9.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.1</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


</project>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/486625
推荐阅读
相关标签
  

闽ICP备14008679号