SpringBoot3 整合 Mybatis 完整版

本文记录一下完整的 SpringBoot3 整合 Mybatis 的步骤。
只要按照本步骤来操作,整合完成后就可以正常使用。

1. 添加数据库驱动依赖

以 MySQL 为例。
当不指定 依赖版本的时候,会 由 springboot 自动管理。

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <!-- <version>8.0.32</version> -->
</dependency>

2. 添加 MyBatis 依赖

第三方的依赖库,需要明确的指定版本号。推荐使用最新的即可。

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

3. 配置数据源信息

在 application.yaml 文件中添加数据源的信息

spring:
  datasource:
    # 数据库连接驱动
    driver-class-name: com.mysql.cj.jdbc.Driver
    # 数据源类型: 默认的是 Hikari
    type: com.zaxxer.hikari.HikariDataSource
    # 数据库连接地址
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
    # 数据库连接用户名
    username: root
    # 数据库连接密码
    password: 12345678

4. 配置 mybatis

在 application.yaml 文件中添加mybatis的相关配置。

# mybatis 的配置
mybatis:
  # 配置 mybatis 的xml文件的扫描路径
  mapper-locations: classpath:mybatis/**/*.xml
  # 配置实体类的扫描路径
  type-aliases-package: com.testabc.demo.ssmtest
  configuration:
    # 开启驼峰命名转换
    map-underscore-to-camel-case: true
    # 开启日志
    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl

# 指定日志级别 : 对mybatis的日志输出
logging:
  level:
    com.testabc.demo.ssmtest: debug

5. 功能开发

5.1 建表

简单创建一张表。包含了普通属性,标准的下划线属性。

CREATE TABLE `test`.`student`  (
  `id` int NOT NULL,
  `name` varchar(20) NOT NULL,
  `age` int NOT NULL,
  `other_message` varchar(100) NULL,
  PRIMARY KEY (`id`)
);

5.2 创建普通的bean类

结合表结构,创建普通的一个bean类。此时属性用标准的驼峰命名

package com.testabc.demo.ssmtest;

public class Student {
    private int id;
    private String name;
    private int age;
    private String otherMessage;

    。。。。。。
    构造方法
    getter/setter
    toString 方法

}

5.3 创建mapper接口

注意 : 此处的接口用到了 @Mapper 注解。先写上吧,没有副作用。

package com.testabc.demo.ssmtest;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

@Mapper
public interface StudentMapper {
    // 根据id查询student的方法
    Student getStudentById(@Param("id") int id);
}

5.4 创建xml文件

classpath:/resources/mybatis/ 目录下新增 StudentMapper.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.testabc.demo.ssmtest.StudentMapper">


    <select id="getStudentById" resultType="com.testabc.demo.ssmtest.Student">
        select * from student where id = #{id}
    </select>
  
</mapper>

5.5 创建controller类

package com.testabc.demo.ssmtest;

@RestController
public class StudentController {

    /**
     * 通过构造方法的方式注入 StudentMapper
     */
    private final StudentMapper studentMapper;

    public StudentController(StudentMapper studentMapper) {
        this.studentMapper = studentMapper;
    }

    @GetMapping("/getStudentById/{id}")
    public Student getStudentById(@PathVariable("id") int id){
        Student student = null;
        student = studentMapper.getStudentById(id);
        return student;
    }
}

5.6 配置扫描的包

在 项目的 启动类上添加注解 MapperScan(xxxx), 指定要扫描的 mapper 接口的包路径。

package com.testabc.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.testabc.demo.ssmtest")
public class DemoApplication {

    public static void main(String[] args) {

        // 这个工具会返回一个 ApplicationContext 的对象
        var ioc = SpringApplication.run(DemoApplication.class, args);

    }

}

6. 功能测试

浏览器中访问测试。

在这里插入图片描述
在这里插入图片描述
成功,至此,已经完成了 SpringBoot3 整合 Mybatis 的步骤。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/707793.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++ 33 之 const 修饰静态成员

#include <iostream> #include <string.h> using namespace std;// 定义静态const数据成员时&#xff0c;最好在类内部初始化,避免在类外重复初始化&#xff0c;也为了代码的可读性和可维护性class Students03{ public:// 两种写法都可以const static int s_a 10;…

期末测试2(1)---PTA

一开始写错了&#xff0c; 因为这个再定义一个和原函数一样类型的进行存储&#xff0c; 然后将第一个设置为最大的&#xff0c;依次用循环比较后面的&#xff0c; 最后输出 但是这个适用于找最大的、字符串这样最后只输出一个最大项比较好 对于结构体不好将比较的这个数所…

Java9 后String 为什么使用byte[]而不是char?

之前认知里面&#xff0c;java的String一直是使用char数组&#xff0c;但是今天点进去瞟了一眼&#xff0c;发现不对。 源码如下&#xff1a; /*** The value is used for character storage.** implNote This field is trusted by the VM, and is a subject to* constant fold…

boot项目配置邮箱发送

最近项目准备进入测试阶段&#xff0c;时间相对充沛些&#xff0c;便对邮箱的信息发送记录下&#xff01; 邮箱设置-开启smtp协议及获取授权码 以QQ邮箱为例&#xff0c;其他邮箱大同小异&#xff01; 开启协议 获取授权码 具体代码 基于javax.mail实现 原文可看 前辈帖子…

vscode 终端无法正常执行脚本命令如何解决

我们经常需要在vscode的中安装第三方依赖包&#xff0c;npm是前端目前最大的Node.js模块化管理系统&#xff0c;它能帮助开发者管理和发布Node.js模块。但很多时候我们在vscode的终端中执行npm install命令时经常会报以下错误&#xff1a; 但是在Windows的cmd命令提示符中执行n…

观测云产品更新 | BPF 网络日志、智能监控、告警策略等

观测云更新 网络 BPF 网络日志&#xff1a;优化 BPF 网络功能&#xff0c;增强 L4/L7 网络联动。 APM/RUM APM/RUM&#xff1a;新增 【Issue 自动发现】功能。启用该配置后&#xff0c;观测云会将符合配置项规则的错误数据记录自动创建 Issue。 监控 1、智能监控&#xff1…

【CT】LeetCode手撕—102. 二叉树的层序遍历

目录 题目1-思路2- 实现⭐102. 二叉树的层序遍历——题解思路 3- ACM实现3-1 二叉树构造3-2 整体实现 题目 原题连接&#xff1a;102. 二叉树的层序遍历 1-思路 1.借助队列 Queue &#xff0c;每次利用 ①while 循环遍历当前层结点&#xff0c;②将当前层结点的下层结点放入 …

GitCode热门开源项目推荐:Spider网络爬虫框架

在数字化高速发展时代&#xff0c;数据已成为企业决策和个人研究的重要资源。网络爬虫作为一种强大的数据采集工具受到了广泛的关注和应用。在GitCode这一优秀的开源平台上&#xff0c;Spider网络爬虫框架凭借其简洁、高效和易用性&#xff0c;成为了众多开发者的首选。 一、系…

反向海淘建站技术:开启跨境电商新篇章

反向海淘&#xff0c;作为跨境电商的一种创新模式&#xff0c;正逐渐改变着传统贸易的格局。在这个模式下&#xff0c;国内消费者能够直接购买到国外的商品&#xff0c;而国内的商家也能将产品销往海外市场。为了抓住这一机遇&#xff0c;建立一套高效、稳定的反向海淘网站至关…

线代老师大PK,这四位胜出!

说实话&#xff0c;线代真的别乱跟老师 因为每个老师讲课适用的人群不一样&#xff0c;比如都说李永乐老师线代讲的好&#xff0c;但是我去听完发现&#xff0c;李永乐老师的线代讲的虽然好&#xff0c;但是对于零基础或者基础不好的考生来说&#xff0c;真的有点不友好&#…

AI绘画SD3已来,本地首发实测体验,含本地部署说明(内附网盘模型及ComfyUI工作流下载)

大家好&#xff0c;我是画画的小强 SD3已来&#xff0c;Stability AI 此前宣布SD3将于6月12开源20 亿参数的SD3 模型SD3 Medium&#xff0c;昨天它已如期而至了。 根据官方内容所了解&#xff0c;SD3 Medium 可以说是目前很先进的文本到图像开放模型&#xff0c;包含 20 亿个…

C++ 34 之 单例模式

#include <iostream> #include <string.h> using namespace std;class King{// 公共的函数&#xff0c;为了让外部可以获取唯一的实例 public:// getInstance 获取单例 约定俗成static King* getInstance(){return true_king;}private: // 私有化// 构造函数设置为…

线性代数|机器学习-P12Ax=b条件下x最小值问题

文章目录 1. Axb下的最值问题-图形转换2. Gram-Schmidt 标准形3. 迭代法-Krylov子空间法 1. Axb下的最值问题-图形转换 假设我们有一个直线方程如下&#xff1a; 3 x 1 4 x 2 1 \begin{equation} 3x_14x_21 \end{equation} 3x1​4x2​1​​ 在二维平面上&#xff0c;各个范…

微信小程序投票系统(包含微信小程序端)

&#x1f4f1;微信投票小程序&#xff1a;轻松发起&#xff0c;快速统计 一、引言 在数字化时代&#xff0c;微信作为我们日常生活中不可或缺的社交工具&#xff0c;不仅为我们提供了沟通交流的平台&#xff0c;还衍生出了许多实用的小程序。其中&#xff0c;微信投票小程序凭…

C# WPF入门学习主线篇(三十三)—— 使用ICommand实现命令绑定

C# WPF入门学习主线篇&#xff08;三十三&#xff09;—— 使用ICommand实现命令绑定 在MVVM模式中&#xff0c;命令绑定是将用户交互&#xff08;如按钮点击&#xff09;与ViewModel中的方法连接起来的一种机制。使用ICommand接口可以实现这一功能&#xff0c;从而将UI逻辑与业…

快速掌握 Python requests 库发送 JSON 数据的 POST 请求技巧

在现代 Web 开发中&#xff0c;客户端与服务器之间进行数据交换的需求越来越普遍。而在 Python 这个强大的编程语言中&#xff0c;requests 库是一个广泛使用且功能强大的 HTTP 请求库。特别是在进行 API 调用时&#xff0c;发送 POST 请求并附带 JSON 数据是一个非常常见的需求…

跟卖五种常用采集方式,关键词采集升级,更加让新手上手更快!

今天给大家分享一个跟卖选品软件&#xff0c;相信很多卖家都在为选品而苦恼&#xff0c;人工筛选一天也筛选不出几个能用的链接&#xff0c;不仅耗费时间精力&#xff0c;还提升不了选品效率&#xff0c;今天就分享一款实用的选品工具&#xff0c;它能够帮助我们节省选品时间&a…

C++ 35 之 对象模型基础

#include <iostream> #include <string.h> using namespace std;class Students05{ public:// 只有非静态成员变量才算存储空间&#xff0c;其他都不算int s_a; // 非静态成员变量&#xff0c;算对象的存储空间double s_c;// 成员函数 不算对象的存储空间void f…

uniapp 仿写弹窗

页面 <template><view click"close" class"mask"><view click.stop"onClick" class"content"><text class"text">点击蒙层关闭</text></view></view> </template><scr…

Spring Cloud Alibaba Nacos作为服务配置中心实践

Nacos官网文档&#xff1a;Nacos 融合 Spring Cloud&#xff0c;成为注册配置中心 【1】服务实例 ① pom依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </de…