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

news/2024/9/15 17:02:16/ 标签: 学习, spring boot, mybatis

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

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

本篇要实现的效果:

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

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

在这里插入图片描述

mybatismysqlpomxml_13">第一步:配置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=UTCusername: rootpassword:driver-class-name: com.mysql.cj.jdbc.Drivertype: com.zaxxer.hikari.HikariDataSource# 连接池hikari:minimum-idle: 10maximum-pool-size: 20idle-timeout: 300000max-lifetime: 1800000connection-timeout: 30000pool-name: SpringHikariCPmybatis:mapper-locations: classpath:mapper/**/*.xmlconfiguration:#配置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 {@Resourceprivate 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.ppmy.cn/news/1519894.html

相关文章

“NoSQL数据库技术及其应用”写作框架,软考高级,系统架构设计师

论文真题 随着互联网web2.0网站的兴起&#xff0c;传统关系数据库在应对web2.0 网站&#xff0c;特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心&#xff0c;暴露了很多难以克服的问题&#xff0c;而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…

汽车免拆诊断案例 | 2012 款大众速腾车发动机偶尔抖动

故障现象 一辆2012款大众速腾车&#xff0c;搭载CST发动机和干式双离合变速器&#xff0c;累计行驶里程约为17万km。车主反映&#xff0c;发动机偶尔抖动。 故障诊断 接车后试车&#xff0c;确认发动机怠速偶尔抖动&#xff0c;且在D挡起步时抖动明显。用故障检测仪检测&…

仿论坛项目--开发社区首页

• 开发流程 1次请求的执行过程 • 分步实现开发社区首页&#xff0c;显示前10个帖子开发分页组件&#xff0c;分页显示所有的帖子 项目调试技巧 • 响应状态码的含义 • 服务端断点调试技巧 • 客户端断点调试技巧 • 设置日志级别&#xff0c;并将日志输出到不同的终端 h…

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…

SAPUI5基础知识25 - 聚合绑定(Aggregation Binding)

1. 背景 Aggregation Binding 是 SAPUI5 中的一种数据绑定方式&#xff0c;用于将数据模型中的集合&#xff08;如数组&#xff09;绑定到 UI 控件的聚合&#xff08;如列表项、表格行等&#xff09;。 常见的场景包括将一个数组绑定到 sap.m.List 的 items 聚合&#xff0c;…

如何定义核心场景用例?

​首先我们解决两个问题&#xff1a; 1.什么是场景测试&#xff1f; 2.什么是核心场景&#xff1f; 1、什么是场景测试&#xff1f; &#x1f3af; 1.1&#xff1a;什么是场景 事件触发时的情景形成了场景。场景必不可少的几个要素&#xff1a;环境、人、时间、行为。简而…

JavaWeb——介绍(什么是Web、Web网站的开发模式)、初始Web前端(Web标准、学习内容)

目录 介绍 什么是Web Web网站的开发模式 初识Web前端 Web标准 学习内容 介绍 JavaWeb学习路线 &#xff08;仅用作参考&#xff09; 什么是Web Web&#xff1a;全球广域网&#xff0c;也称为万维网&#xff08;www World Wide Web)&#xff0c;能够通过浏览器访问的…

揭秘面试官常见问题 —— JavaScript 闭包

1. 什么是闭包&#xff1f; 闭包是 JavaScript 中的一种特性&#xff0c;它允许一个函数在定义的环境之外仍然能够访问和操作定义时的作用域中的变量。换句话说&#xff0c;闭包是指函数可以“记住”并访问它被创建时所处的词法作用域。 简单来说&#xff1a; - 当一个函数被…

[Meachines] [Medium] SecNotes XSRF跨站请求伪造+SMB-Webshell上传+Linux子系统命令历史记录泄露权限提升

信息收集 IP AddressOpening Ports10.10.10.97TCP:80&#xff0c;445&#xff0c;8808 $ nmap -p- 10.10.10.97 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 | http-title: Secure Notes - Login |…

SpringBoot中基于MongoDB的findAndModify原子操作实现分布式锁原理详解

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

网络是怎样连接的

网络是怎样连接的 HTTPDNS数据通信协议栈——TCP/IPRJ-45接口信号衰减噪声干扰双绞线MDI接口集线器交换机路由器接入网ADSL接入网FTTH接入网用户认证和配置下发DHCPPOPWeb服务器的部署地点防火墙 HTTP HTTP发展史&#xff1a; 1991 – HTTP/0.91996 – HTTP/1.01997 – HTTP/…

人工智能领域面试基础问题整理(二):什么是人工智能?

当你说你的专业是“人工智能”时&#xff0c;面试官问你&#xff1a;“假如我是一个不懂AI的人&#xff0c;你能和我说说&#xff0c;什么是AI吗&#xff1f;”你会怎么回答。 我们可以从以下几个方面入手&#xff1a; 1、人工智能的定义 人工智能&#xff08;Artificial Inte…

Android Studio gradle下载太慢了!怎么办?(已解决)

Android Studio&#xff01;你到底干了什么&#xff1f;&#xff01; 不能高速下载gradle&#xff0c;我等如何进行app编程&#xff1f;&#xff01; 很简单&#xff0c;我修改gradle地址不就是了。 找到gradle-wrapper.properties文件 修改其中distributionUrl的地址。 将 ht…

[Leetcode 51][Hard]-n皇后问题-回溯

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 这种可以算是组合问题的变种&#xff0c;在回溯函数中我们要保存当前已放置皇后的所有位置&#xff0c;同时递归调用时要进行寻找下一个皇后的放置位置。那么我们可以逐行遍历棋盘并作为递归调…

如何完美实现 Go 服务的平滑升级

Go 服务作为常驻进程,如何进行服务升级呢?你可能会觉得这还不简单,先将现有服务停止,再启动新的服务不就可以了。可是将现有服务停止时,如果它还在处理请求,那么这些请求该如何处理?另外,在现有服务已经退出但是新服务还没有启动期间,新的请求到达了又该如何处理? Go…

Logistic分类算法原理及Python实践

一、Logistic分类算法原理 Logistic分类算法&#xff0c;也称为逻辑回归&#xff08;Logistic Regression&#xff09;&#xff0c;是机器学习中的一种经典分类算法&#xff0c;主要用于解决二分类问题。其原理基于线性回归和逻辑函数&#xff08;Sigmoid函数&#xff09;的组…

3.4 数据传送指令

&#x1f393; 微机原理考点专栏&#xff08;通篇免费&#xff09; 欢迎来到我的微机原理专栏&#xff01;我将帮助你在最短时间内掌握微机原理的核心内容&#xff0c;为你的考研或期末考试保驾护航。 为什么选择我的视频&#xff1f; 全程考点讲解&#xff1a;每一节视频都…

使用JavaScript读取手机联系人列表:从理论到实践

更多内容前往个人网站&#xff1a;孔乙己大叔 在现代Web开发中&#xff0c;随着技术的不断进步&#xff0c;以前看似不可能的任务现在变得可行。例如&#xff0c;使用JavaScript读取手机联系人列表这一功能&#xff0c;在几年前几乎是不可想象的&#xff0c;但现在随着Web API的…

MyBatis之XML配置文件(一)

Mbatis是一个ORM框架&#xff0c;可以用XML配置文件或注解映射SQL语句&#xff0c;映射文件是MyBatis框架的核心&#xff0c;本文主要讲述XML 映射文件的结构和使用方法。 一、SQL映射文件 SQL映射文件就是mapperxml配置文件&#xff0c;主要实现SQL语句的配置和映射&#xf…

pdf.js如何支持base64的查看

1.pdf.js 作为一个查看在线阅读pdf的软件&#xff0c;常常被运用到前端开发中&#xff0c;但是如何让pdf支持base64的查看&#xff0c;这边就需要去进行修改一些代码了 这边我们就进行开发修改 首先去下载 https://mozilla.github.io/pdf.js/ 当然了&#xff0c;低版本的可以…