現在業界比較流行的數據操作層框架 MyBatis,下面就講解下 Springboot 如何整合 MyBatis,這里使用的是xml配置SQL而不是用注解。主要是 SQL 和業務代碼應該隔離,方便和 DBA 校對 SQL。
我的項目結構
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.mapperLocations=classpath:mybatis/mapper/*.xml
注意根據自己的實現項目目錄進行相應的修改。
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依賴一樣,要加版本號。