1、简介
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。与 SpringBoot 集成可以简化数据库操作。
2、整合
1)导入依赖
核心:mybatis、mysql、druid
XML
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
<!-- druid启动器的依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.18</version>
</dependency>
<!-- mysql驱动类-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
2)配置数据源
在application.yml中配置数据库连接信息,包括数据库的url、用户名、密码、mybatis的功能配置。

XML
server:
port: 8080
servlet:
context-path: /
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
url: jdbc:mysql://localhost:3306/sgu # url
username: root # 用户名
password: 123456 # 密码
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
configuration: # setting配置
auto-mapping-behavior: full
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
type-aliases-package: com.sgu.pojo # 配置别名
mapper-locations: classpath:/mapper/*.xml # Mapper.xml位置
3)Emp类
与数据库表对应的实体类

java
package com.sgu.pojo;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 满堂花醉三千客,一剑寒霜十四州。
*
* @Author 中瑞
* @Date 2025/3/28 23:20
*/
@Data
public class Emp {
private Integer empno; // 员工编号
private String ename; // 员工姓名
private String job; // 职位
private Integer mgr; // 上级经理编号
private Date hiredate; // 入职日期
private BigDecimal sal; // 薪水
private BigDecimal comm; // 佣金
private Integer deptno; // 部门编号
}
4)EmpMapper接口
实现与数据库表的交互

java
package com.sgu.mapper;
import com.sgu.pojo.Emp;
import java.util.List;
/**
* 满堂花醉三千客,一剑寒霜十四州。
*
* @Author 中瑞
* @Date 2025/3/30 13:55
*/
public interface EmpMapper {
List<Emp> queryAll();
}
5)EmpMapper.xml
Mapper接口的SQL实现,位置:src/main/resources/mapper

XML
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace = 接口的全限定符 -->
<mapper namespace="com.sgu.mapper.EmpMapper">
<select id="queryAll" resultType="emp">
select * from emp
</select>
</mapper>
6)启动类添加@MapperScan注解
用于扫描和注册Mapper接口

java
package com.sgu;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* 满堂花醉三千客,一剑寒霜十四州。
*
* @Author 中瑞
* @Date 2025/3/30 14:01
*/
@MapperScan("com.sgu.mapper") //mapper接口扫描配置
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
7)EmpController类
通过依赖注入实例化Mapper接口,调用其中的方法进行数据库操作

java
package com.sgu.controller;
import com.sgu.mapper.EmpMapper;
import com.sgu.pojo.Emp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* 满堂花醉三千客,一剑寒霜十四州。
*
* @Author 中瑞
* @Date 2025/3/28 23:26
*/
@RestController
@RequestMapping("emp")
public class EmpController {
@Autowired
private EmpMapper empMapper;
// 查询员工
@GetMapping("query")
public List<Emp> queryAll() {
return empMapper.queryAll();
}
}
注意:druid的兼容性问题!参考:07-SpringBoot3入门-整合druid连接池-CSDN博客
3、测试
启动项目,输入地址: