Spring Boot集成MyBatis访问MySQL
一、引言
在当今企业级应用开发中,Spring Boot、MyBatis与MySQL的组合凭借其高效性和灵活性,成为构建数据驱动型应用的首选方案。本文将带你从零开始搭建项目,掌握Spring Boot集成MyBatis的基础入门内容。
二、项目搭建
1.1 初始化Spring Boot项目
访问Spring Initializr创建项目:
- Project:Maven
- Language:Java
- Spring Boot:3.4.2
- Dependencies:
- Spring Web
- MyBatis Framework
- MySQL Driver
1.2 项目结构预览
src
├── main
│ ├── java
│ │ └── com/example/hello/mybatis
│ │ ├── entity # 实体类
│ │ ├── mapper # Mapper接口
│ │ └── Application.java
│ └── resources
│ ├── mapper # XML映射文件
│ └── application.yml # 配置文件
└── test # 单元测试
三、依赖(POM)
MyBatis依赖(mybatis-spring-boot-starter-test)
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.4</version><scope>test</scope></dependency>
MySQL驱动
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>
POM完整示例
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.2</version><relativePath/></parent><groupId>com.example</groupId><artifactId>hello-mybatis</artifactId><version>0.0.1-SNAPSHOT</version><name>hello-mybatis</name><description>Spring Boot 集成 MyBatis 访问 MySQL 数据库</description><properties><java.version>21</java.version></properties><dependencies><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.4</version></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter-test</artifactId><version>3.0.4</version><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><annotationProcessorPaths><path><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></path></annotationProcessorPaths></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
四、应用配置
spring:application:name: hello-mybatisdatasource:url: jdbc:mysql://localhost:3306/mybatis_testusername: mybatis_test_userpassword: 123456mybatis:mapper-locations:- classpath:mapper/*.xmlconfiguration:map-underscore-to-camel-case: true
1. 配置数据源
application.yml
文件中,添加数据源配置(MySQL数据库),包括:数据库url,用户名,密码。
spring:datasource:url: jdbc:mysql://localhost:3306/mybatis_testusername: mybatis_test_userpassword: 123456
注意:不配置数据源会导致应用启动失败。
2. 配置扫描路径
在Spring Boot中,默认的XML映射文件需要放在resources目录下,并且路径要和Mapper接口的包名一致。
自定义XML映射文件的存放目录,在 application.yml
中配置扫描路径:
mybatis:mapper-locations:- classpath:mapper/*.xml
3. 配置下划线转驼峰
map-underscore-to-camel-case: true
是 MyBatis 框架中的一个配置项,用于自动将数据库字段的下划线命名风格(如 user_name
)映射到 Java 对象的驼峰命名风格属性(如 userName
)。
mybatis:configuration:map-underscore-to-camel-case: true
通过 map-underscore-to-camel-case: true
,MyBatis 自动处理数据库字段与 Java 属性之间的命名风格差异,显著减少手动映射的工作量,是提升 ORM 开发效率的实用配置。
五、配置Mapper接口和XML映射文件
1. Mapper接口(UserMapper接口)
package com.example.hello.mybatis.mapper;import com.example.hello.mybatis.entity.User;
import org.apache.ibatis.annotations.Mapper;import java.util.List;@Mapper
public interface UserMapper {List<User> listUser();
}
2. XML 映射文件(UserMapper.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.hello.mybatis.mapper.UserMapper"><select id="listUser" resultType="com.example.hello.mybatis.entity.User">select * from user</select></mapper>
3. 实体类(User)
package com.example.hello.mybatis.entity;import lombok.Data;@Data
public class User {private String id;private String name;private Integer age;private String mobilePhone;
}
4. 单元测试
调用Mapper接口中方法查询数据库。
package com.example.hello.mybatis;import com.example.hello.mybatis.entity.User;
import com.example.hello.mybatis.mapper.UserMapper;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@Slf4j
@SpringBootTest
class HelloMybatisApplicationTests {@Autowiredprivate UserMapper userMapper;@Testpublic void testUserMapper() {List<User> users = userMapper.listUser();log.info("用户列表 :{}", users);}}
六、运行效果
执行单元测试,调用Mapper接口中方法查询数据库,运行成功,能够正常查询数据。
七、数据库:用户表
1. 列和DDL
DDL:
-- mybatis_test.`user` definitionCREATE TABLE `user` (`id` varchar(100) NOT NULL COMMENT '主键',`name` varchar(100) DEFAULT NULL COMMENT '姓名',`age` int DEFAULT NULL COMMENT '年龄',`mobile_phone` varchar(20) DEFAULT NULL COMMENT '手机号码',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';
2. 用户数据
八、MyBatis官方文档
MyBatis官方文档