Spring-boot-Mybatis-Starter
来源:互联网 发布:刘德华 17岁 知乎 编辑:程序博客网 时间:2024/04/19 01:57
一、简介
以我的理解,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>
现在只需引用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官网介绍中我们可以看到,它启动后会做如下事情:
- 自动监测存在的DataSource(即在properties文件中配置的DataSource,如图3)
- 通过此DataSourse自动创建并注册SqlSessionFactory实例
- 从SqlSessionFactory中注册并创建出一个SqlSessionTemplate实例
- 自动扫描你的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://172.17.22.80:3306/demospring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#mybatis.type-aliases-package=com.example.demo.Model#非必需mybatis.mapper-locations=classpath:mappers/*.xml
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>
- mybatis-spring-boot-starter
- Spring-boot-Mybatis-Starter
- spring boot 整合mybatis 通过官方mybatis-spring-boot-starter
- mybatis-spring-boot-starter 1.0.1 之后的版本问题
- spring boot starter 详解
- spring boot自定义starter
- spring-boot-starter-dubbo
- spring-boot-starter-security
- spring boot 启动器starter
- Spring Boot 自定义starter
- spring-boot-starter
- Spring Boot Starter 介绍
- Druid Spring Boot Starter
- druid-spring-boot-starter
- spring boot-认识spring-boot-starter-parent
- spring-boot-starter-redis 集成
- 自定义spring-boot-starter-hbase
- 自定义spring-boot-starter-dubbox
- js实现全选全不选
- JavaSE基础知识学习—集合之LinkList
- Git之命令总结
- 记录一下自己32位win7安装Android Studio2.33遇到的问题
- windows下修改终端编码
- Spring-boot-Mybatis-Starter
- Android自定义控件带弹性
- Revit二次开发之向Revit窗体发送虚拟按键
- HTML用JS导出Excel的五种方法
- python描述二叉树
- 网路互联参考模型 存档理解
- 基于DJI-OSDK-ROS 3.4版本demo_camera_gimbal.cpp程序阅读注释
- 分布式事务
- 吃货告诉你,PAAS、IAAS和SAAS之间的区别