09-SpringBoot3入门-整合Mybatis

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、测试

启动项目,输入地址:

http://localhost:8080/emp/query

4、参考

149-springboot-mybatis整合和配置_哔哩哔哩_bilibili

相关推荐
Mr_hwt_12337 分钟前
基于mybatis-plus动态数据源实现mysql集群读写分离和从库负载均衡教程(详细案例)
数据库·spring boot·mysql·mybatis·mysql集群
Z_z在努力13 小时前
【杂类】Spring 自动装配原理
java·spring·mybatis
little_xianzhong16 小时前
关于对逾期提醒的定时任务~改进完善
java·数据库·spring boot·spring·mybatis
MadPrinter19 小时前
SpringBoot学习日记 Day11:博客系统核心功能深度开发
java·spring boot·后端·学习·spring·mybatis
奔跑吧邓邓子1 天前
【Java实战㉟】Spring Boot与MyBatis:数据库交互的进阶之旅
java·spring boot·实战·mybatis·数据库交互
lunzi_fly1 天前
【源码解读之 Mybatis】【基础篇】-- 第1篇:MyBatis 整体架构设计
java·mybatis
摸鱼仙人~1 天前
深入理解 MyBatis-Plus 的 `BaseMapper`
java·开发语言·mybatis
隔壁阿布都1 天前
spring boot + mybatis 使用线程池异步修改数据库数据
数据库·spring boot·mybatis
Mcband2 天前
MyBatis 拦截器让搞定监控、脱敏和权限控制
mybatis
╭╰4022 天前
苍穹外卖优化-续
java·spring·mybatis