现在业界比较流行的数据操作层框架 MyBatis, 下面就讲解下 Springboot 如何整合 MyBatis, 这里使用的是 xml 配置 SQL 而不是用注解. 主要是 SQL 和业务代码应该隔离, 方便和 DBA 校对 SQL.
我的项目结构
- src/
- +- main/
- +- java/
+- com.springboot.mybatis
- +- pojo
- +- mapper
- +- controller
- +- service
- |- MainApplicion.java
- +- resources/
- +- mybatis
- +- mapper
- |-mapper.xml
|- mybatis-config.xml
- |- application.properties
- pom.xml
添加必要的依赖
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <java.version>1.8</java.version>
- <mybatis-spring-boot.version>1.3.0</mybatis-spring-boot.version>
- <mysql-connector.version>5.1.39</mysql-connector.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>${mybatis-spring-boot.version}</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>${mysql-connector.version}</version>
- </dependency>
- </dependencies>
- application.properties
- spring.datasource.url=jdbc:mysql://localhost:3306/test_spring_boot?useUnicode=true&characterEncoding=utf8
- spring.datasource.username=root
- spring.datasource.password=123456
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- #mybatis
- mybatis.configLocation=classpath:mybatis/mybatis-config.xml
- mybatis.mapperLocations=classpath:mybatis/mapper/*.xml
注意根据自己的实现项目目录进行相应的修改.
mybatis-config.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <typeAliases>
- </typeAliases>
- </configuration>
- mapper
通过 @MapperScan 注解进行 dao 文件的扫描, 此时 mapper 接口上不需要再加 @Mapper 注解, 如下
- // MyBatis 支持
- @MapperScan("com.springboot.mybatis.mapper")
- @SpringBootApplication
- public class MainApplicion {
- public static void main(String[] args) throws Exception {
- SpringApplication.run(MainApplicion.class, args);
- }
- }
与 SpringMVC 整合 MyBatis 的区别
SpringMVC 是通过 xml 进行配置, 通过配置 DataSource,SqlSessionFactoryBean,MapperScannerConfigurer 来完成 MyBatis 的整合.
而 SpringBoot 是通过 application.properties 配置数据源, mapper 文件位置和 @MapperScan 注解来配置扫描的 apper 路径, 从而实现 MyBatis 的整合.
往常我们使用 springboot 集成 web,redis 等依赖之所以不需要指定版本号, 是因为我们引入的 Maven Parent 中指定了 SpringBoot 的依赖, SpringBoot 官方依赖 Pom 文件中已经指定了它自己集成的第三方依赖的版本号, 对于 Mybatis,Spring 官方并没有提供自己的 starter, 而是 mybatis 为 spring 提供的 starter 依赖, 所以必须跟正常的 maven 依赖一样, 要加版本号.
来源: http://www.bubuko.com/infodetail-2556256.html