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

相关推荐
KATA~9 分钟前
解决MyBatis-Plus枚举映射错误:No enum constant问题
java·数据库·mybatis
伊成3 小时前
Springboot整合Mybatis+Maven+Thymeleaf学生成绩管理系统
java·maven·mybatis·springboot·学生成绩管理系统
我要学编程(ಥ_ಥ)4 小时前
初始JavaEE篇 —— Mybatis-plus 操作数据库
java·java-ee·mybatis·mybatis-plus
〆、风神5 小时前
装饰器模式与模板方法模式实现MyBatis-Plus QueryWrapper 扩展
mybatis·装饰器模式·模板方法模式
Alt.91 天前
MyBatis基础五(动态SQL,缓存)
java·sql·mybatis
okok__TXF1 天前
Mybatis源码分析
java·后端·mybatis
佩奇的技术笔记1 天前
中级:MyBatis面试题深度剖析
数据库·mybatis
SuperherRo1 天前
Web开发-JavaEE应用&ORM框架&SQL预编译&JDBC&MyBatis&Hibernate&Maven
前端·sql·java-ee·maven·mybatis·jdbc·hibernate
逸狼2 天前
【JavaEE进阶】MyBatis(4)-完善图书管理系统
数据库·java-ee·mybatis