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

大家好,今天记录下学习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=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.mzph.cn/diannao/53070.shtml

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

相关文章

开学啦!校园跑腿小程序开发,焕新生活尽在指尖!

随着移动互联网技术的不断发展&#xff0c;校园跑腿小程序成为了高校生活中不可或缺的一部分。无论是代拿快递、代买物品&#xff0c;还是代办各种事务&#xff0c;校园跑腿小程序都能为学生提供极大的便利。 校园内的人群密集&#xff0c;购买东西的需求尤为强烈&#xff0c;…

tornado获取请求参数

在Tornado框架中&#xff0c;获取请求参数&#xff08;包括查询字符串参数、表单数据、JSON数据等&#xff09;可以通过RequestHandler类提供的方法来完成。以下是一些常用的方法来获取不同类型的请求参数&#xff1a; 1. 获取查询字符串参数 查询字符串参数是附加在URL后面的…

2023年中国90后十大影响力人物

“2023年中国90后十大影响力人物” 2024年1月23日&#xff0c;揭晓了由网友投票评选的中国2023年90后十大影响力人物。

每日一练2:两个数组的交集(含链接)

链接&#xff1a; 两个数组的交集_牛客题霸_牛客网 代码&#xff1a; class Solution {public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {bool hash[1001] { };vector<int> ret;for(auto a : nums1){hash[a] tr…

SprinBoot+Vue宠物领养救助微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求&#xff0c;首先根据服务名注册到nacos&#xff0c;然后发送请求&#xff0c;nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了openfeign发出的请求&#xff0c;对地址做了修…

SpringBoot链路追踪②:如何集成?

首先下载Zipkin的jar包&#xff1a;Central Repository: io/zipkin/zipkin-server (maven.org) 根据自己的项目版本。我的版本分别是&#xff1a; <spring-boot.version>2.7.18</spring-boot.version> <spring-cloud.version>2021.0.8</spring-cloud.ve…

滚雪球学MyBatis-Plus(07):分页与排序

前言 在上期内容中&#xff0c;我们深入探讨了如何创建服务类和控制器&#xff0c;并通过 RESTful API 提供对外服务。我们学会了如何处理客户端的各种请求并返回相应的结果&#xff0c;这为构建一个完整的 Web 应用程序打下了基础。 本期内容将进一步深入&#xff0c;重点介…

【kafka】在Linux系统中部署配置Kafka的详细用法教程分享

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

文件IO函数练习

作业&#xff1a;使用write和read完成文件的拷贝。 代码 #include <myhead.h>int main(int argc, const char *argv[]) {int fd open("./1.txt",O_RDONLY);//已只读打开被拷贝文件if(-1 fd){perror("open");return -1;}int fd1 open("./2.…

uniapp微信小程序开发测试获取手机号码

先申请测试号 注意认证但是没有完全认证不要试测试号解密如下 总结我自己的两大坑 1.官网的WXBizDataCrypt需要导入crypto要提前下载但是试了很多次没有效果重新编写这个。将crypto库换成crypto-js库 2.我一直在尝试用下有下面这个界面的测试号不行获取不到用户的code还是啥忘记…

【Unity编辑器扩展】SpriteAltas资源一键转换为TMP_SpriteAsset或Sprite图集

【Unity编辑器扩展】艺术字/自定义图片字体/TextMeshPro艺术字生成工具_unity 艺术字-CSDN博客 博文工具源码见GF_X自动化游戏开发框架&#xff1a;GitHub - sunsvip/GF_X: Unity GameFramework HybridCLR&#xff0c;Includes several automated editor extension tools, an …

【时间盒子】-【3.新建项目】创建元服务工程,选择默认模板Empty Ability

一、新建项目 1、打开DevEco Studio >>文件>>新建>>新建项目&#xff0c;选择元服务 Atomic Service>>默认模板Empty Ability。 2、设置元服务的工程名称、Bundle name等&#xff0c;模型选Stage&#xff0c;语言是ArkTS&#xff0c;支持的设备类型只…

文本字面相似度算法回顾整理

概述&#xff1a; 通常大家说的文本相似度多指文本语义的相似度&#xff0c;但是对于部分场景却会非常关注文本字面上的相似度&#xff0c;比如对于内容投放平台需要去判重&#xff0c;这就涉及看文本是否字面大量重复&#xff0c;需要去比较文本的字面相似度。 梳理了下常用…

学习记录——day41 运算符重载

运算符默认不支持自定义的类&#xff0c;但是可以通过运算符重载扩展运算符的属于范围 运算符重载&#xff0c;也是实现泛型编程的一种&#xff0c;能够实现“一符多用”&#xff0c;可以使用运算符重载来完成对象与对象之间的符号运算 注&#xff1a;运算符重载仅针对类对象 不…

Python量化交易需要注意的股票交易佣金包含哪些

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…

Web安全:SQL注入实战测试.(扫描 + 测试)

Web安全&#xff1a;SQL注入实战测试. SQL注入就是 有些恶意用户在提交查询请求的过程中 将SQL语句插入到请求内容中&#xff0c;同时程序的本身对用户输入的内容过于相信&#xff0c;没有对用户插入的SQL语句进行任何的过滤&#xff0c;从而直接被SQL语句直接被服务端执行&am…

【Python】3.基础语法(3)函数

文章目录 1.函数2.语法格式3.函数参数4. 函数返回值5. 变量作用域6.函数执行过程7. 链式调用8.嵌套调用9. 函数递归10. 参数默认值11. 关键字参数 1.函数 编程中的函数, 是一段 可以被重复使用的代码片段。 代码示例: 求数列的和, 不使用函数 # 1. 求 1 - 100 的和 sum 0 f…

“立创EDA专业版”笔记

目录 二、立创EDA专业版 2.0 整体功能 2.0.1 快捷键 2.1 右侧功能栏 2.1.1 过滤 2.2 PCB设计 2.2.1 切换亮度 2.2.2 偏移 2.2.3 单位切换 2.2.4 检查DRC 2.2.5 重新铺铜 2.2.6 布线 2.2.7 锁定 2.2.8 “过滤”设置锁定 2.3 上方菜单栏 2.3.1 保存文件 2.4 元件…

安卓(Android)平台上的MVVM架构:关键知识点、优劣分析及实践示例

​ 一、安卓MVVM架构核心知识点 1.1、架构组成 1.1.1、Model层 承载业务逻辑与数据实体&#xff0c;独立于UI并与ViewModel进行交互&#xff0c;实现数据获取与处理功能。 1.1.2、View层 负责用户界面展示&#xff0c;借助Android XML布局文件及Activity/Fragment等组件&a…