前言
現在業界比較流行的數據操作層框架 MyBatis,下面就講解下 Springboot 如何整合 MyBatis,這里使用的是xml配置SQL而不是用注解。主要是 SQL 和業務代碼應該隔離,方便和 DBA 校對 SQL。
我的Git
https://github.com/JasperZXY/TestSpringCloud/tree/master/boot-feature
由於我很多功能放在同一個項目里面,所以代碼看起來沒有那么清晰,不過將就看還是可以的。
我的項目結構
src/
+- main/
+- java/
+- zxy.demo.springboot.mybatis
+- entity
+- dao
+- web
|- MainApplicion.java
+- resources/
+- mapper
|- application.properties
數據庫准備
數據庫用的是MySQL
CREATE DATABASE test_spring_boot;
CREATE TABLE `user` (
`id` int(11) NOT NULL COMMENT '主鍵',
`name` varchar(64) NOT NULL COMMENT '姓名',
`birthday` date DEFAULT NULL COMMENT '生日',
`address` varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mybatis-generator
如果沒有mybatis-generator,可以下載一個。
mybatis-generator的下載地址
使用mybatis-generator工具生成相關文件,實體對象、dao接口、xml文件。
pom.xml
添加必要的依賴
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<mybatis-spring-boot.version>1.2.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
打開 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.typeAliasesPackage=zxy.demo.springboot.boot_feature.entity
mybatis.mapperLocations=classpath:mapper/*.xml
注意根據自己的實現項目目錄進行相應的修改。
- mybatis.typeAliasesPackage:為實體對象所在的包,跟數據庫表一一對應
- mybatis.mapperLocations:mapper文件的位置
dao
需要配置dao文件,也即操作數據表的接口。
通過@MapperScan注解進行dao文件的掃描,如下
// MyBatis 支持
@MapperScan("zxy.demo.springboot.mybatis.dao")
@SpringBootApplication
public class MainApplicion {
public static void main(String[] args) throws Exception {
SpringApplication.run(MainApplicion.class, args);
}
}
controller
@RequestMapping("user")
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/list/all")
public Object listAll() {
return userMapper.selectByExample(new UserExample());
}
}
運行
右鍵運行 Application 應用啟動類的 main 函數,然后在瀏覽器訪問即可看到數據。
http://localhost:8080/user/list/all
[
{
id: 1,
name: "張三",
birthday: 1491667200000,
address: "深圳"
}
]
與SpringMVC整合MyBatis的區別
SpringMVC是通過xml進行配置,通過配置DataSource、SqlSessionFactoryBean、MapperScannerConfigurer來完成MyBatis的整合。
而SpringBoot是通過application.properties配置數據源、實體bean包名、mapper文件位置和@MapperScan
注解來配置掃描的dao路徑,從而實現MyBatis的整合。