Spring Boot 整合 MyBatis

时间:2022-06-01 18:25:45

前言

现在业界比较流行的数据操作层框架 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的整合。