当前位置: 首页 > news >正文

09-SpringBoot3入门-整合Mybatis

1、简介

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。与 SpringBoot 集成可以简化数据库操作

2、整合

1)导入依赖

核心:mybatis、mysql、druid

        <!--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的功能配置。

 

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类  

 与数据库表对应的实体类

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接口

实现与数据库表的交互

 

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 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接口

 

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接口,调用其中的方法进行数据库操作

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

相关文章:

  • 青少年软件编程(C语言)等级考试试卷(三级)
  • WP Mail 邮件发送:WordPress Mail SMTP设置
  • Python + Chrome 爬虫:如何抓取 AJAX 动态加载数据?
  • 《剑指数据库:MySQL玄阶查术秘典·下卷》
  • C++——类和对象
  • Dear ImGui for Unity 常见问题解决方案
  • 【Agent】OpenManus-Prompt组件详细分析
  • 【安全运营】关于攻击面管理相关概念的梳理(一)
  • Burp Suite从入门到实战之配置启动
  • 【Linux探索学习】第二十九弹——线程概念:Linux线程的基本概念与线程控制详解
  • 如何高效备考蓝桥杯(c/c++)组
  • 蓝桥杯python编程每日刷题 day 21
  • 我的机器学习学习之路
  • 手机蓝牙项目
  • 《构建有效的AI代理》学习笔记
  • QT五 文件系统,QFile,QfileInfo
  • Go 语言规范学习(5)
  • 关于gige与MFC的界面交互
  • 【Python3.12.9安装llama-cpp-python遇到编译报错问题解决】
  • 【Linux网络#14】:数据链路层(以太网 局域网通信 ARP协议 ARP 欺骗 DDos 攻击)
  • 企业信用信息年度报告公示/宁波seo快速优化平台
  • 做潮鞋的网站和平台/人工智能培训班收费标准
  • 南漳网站制作/宁波seo快速优化教程
  • 真人性做爰video网站/宁德市医院东侨院区
  • 用asp.net做的 购物网站视频/软文推广案例大全
  • 中国建筑网官网电工证证件查询/seo专业培训seo专业培训