第十三节:学习Springboot整合mybatis——完整篇(自学Spring boot 3.x的第三天)

news2024/9/20 22:48:48

大家好,今天记录下学习springboot的第三天。​@网创有方
这节详细记录了如何使用springboot整合mybatis方法,并成功实现将请求信息插入本地的mysql数据库。

由于只是为了方便本地验证,实际项目是需要部署到服务器上去的,所以就采用了xampp这类工具快速搭建mysql及phpmyadmin管理工具了。

本篇要实现的效果:

在springboot项目中,使用post方法中的RequestBody方式向本地服务器进行请求,插入学生信息到本地数据库,传入参数为json类型。

在这里插入图片描述
关于传参方式类型,可以参见我上篇学习记录。
也可以使用其他的传入方法,比如post和get表单方式,效果是一样的。下图是get表单方式

在这里插入图片描述

第一步:配置mybatis启动器和mysql连接器依赖(pom.xml)中

版本可以去maven repository网站去查看

  <!-- 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>
        
        <!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <version>9.0.0</version>
        </dependency>

这里注意:最新版本的连接池已从mysql-connector-java迁移到mysql-connector-j
配置好了以后,点击maven的刷新图标或者clean再install下也可以。

第二步:搭建基于本地的mysql数据库环境(实际项目应该搭建在服务器环境下)

下载xampp,在安装时候记得选择开启apache和mysql。如果其中的apache和mysql,以及phpmyadmin出现无法开启的情况,记得修改下各自的端口。如果修改端口也无法启动,查看下面板的提示消息,百度查询各自的解决办法。

在这里插入图片描述

第三步:创建数据库及表,以及字段

数据库的话,直接打开phpmyadmin创建就可以,表及字段的话使用sql语句即可。
本文使用的数据库名称为test123,表名为student。字段信息包含age,name,时间戳三项。使用的sql语句如下所示:

CREATE TABLE student (  
    id INT AUTO_INCREMENT PRIMARY KEY, -- 主键字段  
    age INT NOT NULL,                  -- 年龄字段,不允许为空  
    name VARCHAR(50) NOT NULL,         -- 姓名字段,假设最大长度为50,不允许为空  
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- DATETIME类型的时间戳字段,默认为当前时间  
);

第四步:在配置文件中添加数据源和连接池(在application.yml)

server:
  port: 80
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test123?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.zaxxer.hikari.HikariDataSource
    # 连接池
    hikari:
      minimum-idle: 10
      maximum-pool-size: 20
      idle-timeout: 300000
      max-lifetime: 1800000
      connection-timeout: 30000
      pool-name: SpringHikariCP


mybatis:
  mapper-locations: classpath:mapper/**/*.xml
  configuration:
    #配置mysql打印日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    #配置xml文件扫描路径

注意:上面的url需要填写正确,数据库名和密码都需要正确。由于我的本地mysql初始化是默认账号是root,密码为空,所以上述代码中也保持为空。

项目结构:

在这里插入图片描述

第五步:编写mapper接口(interface)文件

​在数据库环境和数据库表及字段创建好的情况下,就可以正式编写mybatis代码了。
主要是2个,一个是mapper下的接口。另外一个是对应的xml,主要是用来保存sql语句。
在这里插入图片描述

package cn.wcyf.wcai.mapper;

import cn.wcyf.wcai.pojo.Student;
import org.apache.ibatis.annotations.Mapper;


@Mapper
public interface StudentMapper {

    void save(Student student);
}

注意:mapper接口类需要加上@Mapper注解

附录:(Student.java 如下)

@Component("student")
public class Student {
    private String  name;//姓名
    private int age;//年龄
    private Date create_time;//时间戳
    public Date getCreate_time() {
        return create_time;
    }
    public void setCreate_time(Date create_time) {
        this.create_time = create_time;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

第六步:编写mapper 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="cn.wcyf.wcai.mapper.StudentMapper">
    <insert id="save">
            INSERT INTO student (age, name,create_time)
        VALUES (#{age}, #{name},#{create_time})
    </insert>
</mapper>

注意:这里的namespace命名空间需要保持和接口所在的类名一致,否则会报错。这里的id和接口中的方法名也要保持一致

第七步:在controller中调用mapper接口方法进行数据库增删改查,这里是增

@RequestMapping("/student")
@RestController
public class StudentController {
    @Resource
    private StudentMapper studentMapper;

    @PostMapping("/insert1")
    public ResponseObject<Student> save( Student student){

        return ResponseObject.createSuccessfulResp("请求成功",student);
    }

    @PostMapping(value = "/save/json")
    public Student save1(@RequestBody Student student){

        return student;
    }
    @GetMapping("/get")
    public Student get(Student student){
        return student;
    }

    @GetMapping("/get1/{age}")
    public Student get1(@PathVariable Integer age){
        Student student = new Student();
        student.setAge(age);
        return student;
    }
    @GetMapping("/getParam")
    public Student getParam(@RequestParam Integer age,@RequestParam String name){
        Student student = new Student();
        student.setName(name);
        student.setAge(age);
        student.setCreate_time(new Date());
        studentMapper.save(student);
        return student;
    }
}

第八步:使用postman等调试工具进行调试

构建好要发送的json数据,然后点击发送。
在这里插入图片描述
实际执行后的插入结果如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MQ专题:消费幂等性

一、提要 1.1 通过本文将获得 消息投递的通用代码 非事务消息的投递事务消息的投递任意延迟消息的投递&#xff0c;不依赖于任何MQ上面这些投递都支持批量的方式投递失败自动重试的代码 幂等消费的通用代码消费失败&#xff0c;衰减式自动重试的通用代码 1.2本文涉及到的主要…

新一代网络研发利器——开物™,让用户每一行代码都贡献在核心创新

随着云计算、人工智能、大数据的快速发展&#xff0c;现有的IT系统越来越复杂&#xff0c;传统网络技术难以满足新的业务需求&#xff0c;DPU技术开始崭露头角&#xff0c;越来越多的企业与研究机构认识到高性能网络处理技术带来的巨大价值&#xff0c;并积极开展创新与实践&am…

985硕闭着眼都有15k以上的月薪

985 闭眼 今天在牛客上看到一篇直呼好家伙的帖子&#xff1a; 这位同学指出&#xff1a;论坛里个个 985 的硕士闭着眼睛都有 15k 以上的月薪&#xff0c;还天天嚷嚷着研究生白读了&#xff0c;天天嚷嚷着反向读研了 ... 通常这样的帖子&#xff0c;都会被评论区喷成筛子。 结果…

微积分复习笔记 Calculus Volume 1 - 1.3Trigonometric Functions

1.3 Trigonometric Functions - Calculus Volume 1 | OpenStax

ELK日志服务收集SpringBoot日志案例

第一步&#xff1a;准备docker-compose文件 首先准备 docker-compose.yaml 文件 version: "3" services:elasticsearch:image: elasticsearch:7.17.2container_name: elasticsearch-servernetworks:- hostenvironment:- "cluster.nameelasticsearch" #设…

NeRF原理学习

一个2020年的工作我现在才来学习并总结它的原理&#xff0c;颇有种“时过境迁”的感觉。这篇总结是基于NeRF原文 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 阅读理解后写的&#xff0c;作用是以后如果记不太清了可以回忆。 目的&应用 先说…

80.动态申请内存

目录 一.malloc函数 二.其他注意事项 三.视频教程 在定义变量的时候会在内存中申请空间。除了在定义变量的时候申请内存空间&#xff0c;也可以使用库函数动态申请内存&#xff0c; 一.malloc函数 作用&#xff1a;动态申请一块连续的任意尺寸的内存空间。 函数原型&…

【前端9】手风琴v1.0版本:使用插槽实现动态内容插入的Vue组件

【前端9】手风琴&#xff1a;使用插槽实现动态内容插入的Vue组件 写在最前面一、插槽的基本概念1.默认插槽2.具名插槽 二、实现一个折叠面板组件0.关键点和注意事项1.父组件 App.vue2.子组件 Collapse.vue总结 3.详细解读&#xff08;可以略过&#xff09;父组件子组件 三、小结…

通用后台管理系统实战演示(Vue3 + element-plus)汇总篇三

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Python任务编排和工作流管理库之prefect使用详解

概要 在数据工程和科学的世界中,任务编排和工作流管理变得越来越重要。随着数据处理任务的复杂性增加,开发人员需要一种可靠且易于使用的工具来设计、监控和管理这些任务。Prefect 是一个用于构建、监控和管理数据管道的 Python 库,它简化了工作流的创建和执行,同时提供了…

028、架构_高可用_主从原理

MySQL半同步复制概览 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。主从复制的基本过程如下图所示: 主从复制的完成通过以下三个进程实现的主库 binary log dump 线程:当从库连接主库时,…

22. K8S及DevOps

22. K8S及DevOps 一. 章节简介二. DevOps1. 简介2. CICD三. Kubernetes1. [官网](https://kubernetes.io/zh-cn/)--------------------------------------------------------------------------------------------------------一. 章节简介 二. DevOps 1. 简介 2. CICD

【科研新手必备】如何高效、高质量、科学的科研?

文献下载网站—英文写作小工具—SCI选刊 1、文献下载网站 中国知网 sci-hub 大木虫学术导航 学术资源搜索 2、英文写作小工具 DeepL 学术短语库 SCI写作辅导材料 赛特新思 3、SCI选刊 Journal Finder SPRINGER NATURE

除了黑神话,探索3A游戏大作:不可错过的经典与录屏软件推荐

在游戏的天地里&#xff0c;3A 大作凭借其美轮美奂的画面、丰富多彩的内容以及意蕴深邃的剧情&#xff0c;俘获了无数玩家的倾心。除了广受瞩目的《黑神话&#xff1a;悟空》&#xff0c;还有诸多其他的 3A 游戏大作值得您去尝试。此类游戏不但在视觉与技术方面臻至行业的巅峰水…

Linux中如何查看一个进程?如何杀死一个进程?如何查看某个端口有没有被占用?

在Linux中 如何查看一个进程&#xff1f; 使用 ps 命令 ps aux这会显示所有正在运行的进程&#xff0c;可以使用 grep 来过滤特定的进程 ps aux | grep process_name使用 top 命令 top这个命令会实时的显示系统重正在运行的进程 如何杀死一个进程&#xff1f; 使用 kill …

C++ | 泛型编程:模板初阶与函数模板深度解析

文章目录 C 泛型编程&#xff1a;模板初阶与函数模板深度解析1. 泛型编程&#xff1a;实现代码的通用性2. 函数模板&#xff1a;代码的模具2.1 什么是函数模板&#xff1f;2.2 函数模板的格式2.3 函数模板的原理2.4 函数模板的实例化2.5 模板参数的匹配原则 3. 类模板&#xff…

【maven】阿里云和apache仓库配置

阿里云公共仓库的配置看起来有多种类型的仓库: 配置指南 我的maven是idea 自带的:D:\Program Files\JetBrains\IntelliJ IDEA 2022.3.1\plugins\maven\lib\maven3\</

校园跑腿系统小程序开发需求分析

校园跑腿系统小程序的开发需求分析是一个综合性的过程&#xff0c;旨在确保系统能够满足校园内用户的实际需求&#xff0c;并具备良好的用户体验。以下是对校园跑腿系统小程序开发需求分析的详细阐述&#xff1a; 一、功能需求分析 注册与登录&#xff1a;支持多种注册方式&am…

WebSphereMQ中间件监控指标解读

监控易是一款功能全面的IT监控系统&#xff0c;能够实时监控各种IT设施的性能和状态&#xff0c;帮助企业及时发现并解决潜在问题。在本次解读中&#xff0c;我们将聚焦于WebSphereMQ&#xff08;现更名为IBM MQ&#xff09;中间件的监控指标&#xff0c;深入剖析其含义和作用。…

[Linux] 权限

标题&#xff1a;[Linux] 权限 水墨不写bug 目录 一、Linux下对用户的分类 二、Linux的文件访问者的分类 三、修改文件的属性 1.修改文件的权限 &#xff08;只有拥有者和root可以修改某一个文件的权限&#xff09; 2.修改文件的拥有者 3.修改文件的所属组 四、文件创建…