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

后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用

目录

  • 后端数据增删改查
    • Springboot 实体(entity)类引进
      • 添加UserMapper接口
    • 创建对用的UserController
    • 注意
    • 数据库查询不一致
    • 新增
    • 数据更新
    • 删除
    • postman测试

后端数据增删改查

基于之前构建系统,实现用户数据的CRUD。

  1. 打开navicat16,新建表sys_user·,表内字段如下图所示,注意创建之后应设置为主键自增
    在这里插入图片描述
  2. 设置create_time为当前时间自动填充。
    在这里插入图片描述
  3. 添加信息
    在这里插入图片描述

Springboot 实体(entity)类引进

在IDEA中创建一个包entity,并新建一个实体类UserEntity。

代码如下

public class UserEntity {private Integer id;private String username;private String password;private String email;private String phone;private String nickname;private String address;private String create_time;private String avatar;private String role;public UserEntity() {}public UserEntity(Integer id, String username, String password, String email, String phone, String nickname, String address, String create_time, String avatar, String role) {this.id = id;this.username = username;this.password = password;this.email = email;this.phone = phone;this.nickname = nickname;this.address = address;this.create_time = create_time;this.avatar = avatar;this.role = role;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getNickname() {return nickname;}public void setNickname(String nickname) {this.nickname = nickname;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getCreate_time() {return create_time;}public void setCreate_time(String create_time) {this.create_time = create_time;}public String getAvatar() {return avatar;}public void setAvatar(String avatar) {this.avatar = avatar;}public String getRole() {return role;}public void setRole(String role) {this.role = role;}
}

在这里插入图片描述
也可使用lombok提供的插件,使用@Date
实现上述功能,代码如下:

import lombok.Data;@Data
public class UserEntity {private Integer id;private String username;private String password;private String email;private String phone;private String nickname;private String address;private String create_time;private String avatar;private String role;}

在这里插入图片描述

添加UserMapper接口

在项目目录下建一个mapper包,在此包下建立UserMapper接口,UserMapper接口中代码如下:

@Mapper
public interface UserMapper {@Select("select * from sys_user")List<UserEntity> findAll();
}

在这里插入图片描述
@Mapper:为注入接口注解。
@Select:查询语句注解。

创建对用的UserController

在这里插入图片描述

@Autowiredprivate UserMapper userMapper;@GetMapping("/")public List<UserEntity> index(){return userMapper.findAll();}

注意

这里我们已经开始不使用html文件了,也就不需要插件了,请大家务必记得将这个依赖删除,否则运行的时候就会报错。
在pom文件中删除这个thymeleaf依赖。

在这里插入图片描述
运行前检查连接数据库
在这里插入图片描述
在这里插入图片描述

数据库查询不一致

在这里插入图片描述
在这里插入图片描述
与表内数据不一致,分析原因:
数据库未引入:
在这里插入图片描述
在注解@selectalt+enter弹出如下界面:
在这里插入图片描述
第一次使用这个会自动下载包等待片刻后出现:
在这里插入图片描述

连接成功!
点击Idea右侧与navicat 16 一致说明连接成功
在这里插入图片描述
在这里插入图片描述
这个地方全局与全项目都设置为Mysql
在这里插入图片描述
但是修改后还是有问题,冥思苦想Controller更改代码为:

@Controllerpublic class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/user")@ResponseBodypublic List<UserEntity> index(){return userMapper.findAll();}

成功:
在这里插入图片描述
其实也可修改为:

@RestControllerpublic class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/")public List<UserEntity> index(){return userMapper.findAll();}}

效果与上诉一致,注意 @RestController相当于@Controller + @ResponseBody但前者无法返回界面只能返回数据

仔细搜索资料@RequestMapping("/user")不好用原因找到,既应改成@RequestMapping("user")输入连接为:http://localhost:8080/user/
修改后代码为:

@RestController
@RequestMapping("user")
public class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/")public List<UserEntity> index(){return userMapper.findAll();}}

新增

  1. 在mapper中新增方法代码如下:
    @Insert("insert into sys_user(username,password,email,phone,nickname,address,avatar,role) " +"VALUES(#{username},#{password},#{email},#{phone},#{nickname},#{address},#{avatar},#{role});")//这里只是做测试使用int insert(UserEntity userEntity);

在这里插入图片描述
特别说明: 不管是新增还是更新,这样写是最简单的方式,没有表关联,也还不能实现对个别字段的新增。这时候就需要动态SQL语句,后面会讲xml文件。

  1. 新建UserService类
    新建一个service包,并新建一个UserService类,进行数据业务逻辑。
    在这里插入图片描述
    注意注解位置。
@Service
public class UserService {@Autowiredprivate UserMapper userMapper;public int save(UserEntity userEntity){return userMapper.insert(userEntity);}
}
  1. UserController类添加save接口
    注意添加或者修改使用post,查询一般为get,代码如下:
    @Autowiredpublic UserService userService;@PostMapping//这里做了一个单纯的添加的示例,使用的是mapper中的insert方法,修改也用这个方法public Integer save(@RequestBody UserEntity userEntity){return userService.save(userEntity);}

在这里插入图片描述

数据更新

在这里插入图片描述

    @Update("update sys_user set username=#{username},password=#{password}," +"nickname=#{nickname},email=#{email},phone=#{phone},address=#{address} where id=#{id}")int update(UserEntity userEntity);

在这里插入图片描述

 private UserMapper userMapper;public int save(UserEntity userEntity){//如果user没有id则表明是新增if(userEntity.getId()==null){return userMapper.insert(userEntity);}//否则就是更新else {return userMapper.update(userEntity);}}

使用postman作为测试接口,进行更新测试。这时候就会发现,更新的时候虽然可以实现对ID的判断,但是如果只是更新某一个字段,就会发现,其他的字段值变为空了,这时候就需要动态SQL了,后面XML需要登场了。

删除

在这里插入图片描述

 @Delete("delete from sys_user where id=#{id}")int deleteById(@Param("id") Integer id);

在这里插入图片描述

 public Integer deleteById(Integer id) {return userMapper.deleteById(id);}

在这里插入图片描述

 @DeleteMapping("/{id}")public Integer deleteById(@PathVariable Integer id){return  userService.deleteById(id);}

postman测试


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
id 为1的数据发生了改变。

在这里插入图片描述
在这里插入图片描述
id 为一数据被删除。

相关文章:

后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用

目录 后端数据增删改查Springboot 实体&#xff08;entity&#xff09;类引进添加UserMapper接口 创建对用的UserController注意数据库查询不一致新增数据更新删除postman测试 后端数据增删改查 基于之前构建系统&#xff0c;实现用户数据的CRUD。 打开navicat16&#xff0c;…...

《Python编程实训快速上手》第九天--调试技巧

一、抛异常 异常类型分为两类&#xff0c;第一类是Python自带的异常类型&#xff08;见《Python编程快速上手》第一天---前三章打基础&#xff09;&#xff0c;第二类是自定义异常。 面对自定义异常类型&#xff0c;使用raise抛异常&#xff0c;类型值默认为Exception&#x…...

html5复习一

目标 1、html5介绍及开发工具 2、html5标签 3、文本样式 4、图片标签和超链接标签 知识点&#xff1a; 万维网的构成&#xff1a; 1、url:统一资源定位器 2、http/https:超文本传输协议 3、html&#xff1a;超文本标记语言 html的后缀名&#xff1a; .html 和 .htm html基本…...

SSL/TLS,SSL,TLS分别是什么

SSL/TLS&#xff0c;SSL&#xff0c;TLS分别是什么 SSL&#xff08;Secure Sockets Layer&#xff0c;安全套接层&#xff09; 定义与发展历程&#xff1a; SSL 是一种早期的网络安全协议&#xff0c;旨在为网络通信提供保密性、数据完整性和身份验证等安全保障。它最初由网景…...

css iframe标签使用

<iframe> 标签用于在网页中嵌入另一个 HTML 页面。它非常灵活&#xff0c;可用于嵌入内容&#xff0c;比如其他网站、视频、地图等。以下是有关 <iframe> 的详细介绍及使用方法&#xff1a; 基本语法 <iframe src"URL" width"宽度" height…...

API的妙用

我们都知道&#xff0c;通过使用API可以快速开发部署应用&#xff0c;不需要从头开始收集处理数据。能够很好地提高效率。 一、加速应用程序开发和部署 通过调用API接口&#xff0c;可以快速获取数据、实现功能或整合其他服务&#xff0c;无需从零开始编写大量的代码&#xf…...

HTML5超酷响应式视频背景动画特效(六种风格,附源码)

文章目录 1.设计来源1.1 大气蓬勃动态背景界面效果1.2 星空闪闪动态背景界面效果1.3 眼神深眸动态背景界面效果1.4 星空银河动态背景界面效果1.5 花开花落动态背景界面效果1.6 海底世界动态背景界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开…...

Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图

用户打开 PDF 文档时&#xff0c;他们会看到 PDF 的初始视图。默认情况下&#xff0c;打开 PDF 时不会显示书签面板或缩略图面板。在本文中&#xff0c;我们将演示如何设置文档属性&#xff0c;以便每次启动文件时都会打开书签面板或缩略图面板。 Spire.PDF for .NET 是一款独…...

算法中常用到的数学知识:埃拉托色尼筛法(获取质数)、欧几里得算法(求两个数最大公因数)

不管是在项目中还是面试时&#xff0c;一定的算法能力都是极其重要的。大多数算法只要有一定的基础&#xff0c;给足够的时间是可以写出来的&#xff0c;然而有一类算法&#xff0c;说难也不难&#xff0c;说简单也不简单&#xff0c;这种算法通常涉及到某种数学知识&#xff0…...

实战OpenCV之人脸识别

基础入门 随着计算机视觉技术和深度学习的发展,人脸识别已经成为一项广泛应用的技术,涵盖了从安全监控、身份验证、智能家居到大型公共安全项目等多个领域。 人脸识别技术通常包括以下几个主要步骤。 图像采集:通过摄像头或其他图像采集设备,捕获包含人脸的图像或视频帧。 …...

图像预处理之图像滤波

目录 图像滤波概览 均值滤波&#xff08;Mean Filter&#xff09; 中值滤波&#xff08;Median Filter&#xff09; 高斯滤波&#xff08;Gaussian Filter&#xff09; 双边滤波&#xff08;Bilateral Filter&#xff09; 方框滤波&#xff08;Box Filter&#xff09; S…...

【通俗理解】隐变量的变分分布探索——从公式到应用

【通俗理解】隐变量的变分分布探索——从公式到应用 关键词提炼 #隐变量 #变分分布 #概率模型 #公式推导 #期望最大化 #机器学习 #变分贝叶斯 #隐马尔可夫模型 第一节&#xff1a;隐变量的变分分布的类比与核心概念【尽可能通俗】 隐变量的变分分布就像是一场“捉迷藏”游戏…...

PyTorch 分布式并行计算

0. Abstract 使用 PyTorch 进行多卡训练, 最简单的是 DataParallel, 仅仅添加一两行代码就可以使模型在多张 GPU 上并行地计算. 但它是比较老的方法, 官方推荐使用新的 Distributed Data Parallel, 更加灵活与强大: 1. Distributed Data Parallel (DDP) 从一个简单的非分布…...

[cg] vulkan external_memory

最近在写硬件编码的代码&#xff0c;渲染器渲染出的RT需要给到编码器做硬编&#xff0c;有两种方法能做。 一是通过 map的方式&#xff0c;把显存里的数据读到cpu&#xff0c;拷贝一份cpu data给编码器&#xff0c;但这种方式会有内存拷贝的开销。所以&#xff0c;我们思考是否…...

如何使用Python代码实现给GPU预加热

如何使用Python代码实现给GPU预加热 一、引言二、使用深度学习框架进行预加热2.1 TensorFlow预加热2.2 PyTorch预加热三、使用CUDA进行预加热四、预加热的效果评估与优化五、结论与展望在高性能计算和深度学习领域,GPU(图形处理器)已经成为不可或缺的加速工具。然而,在实际…...

硬件知识 cadence16.6 原理图输出为pdf 网络名下划线偏移 (ORCAD)

1. cadence原理图输出为PDF网络名下划线偏移 生这种情况的原因 1. 设计的原理图图纸大小比正常的 A4图纸大。 2. 打印为PDF 的时候&#xff0c;打印机的设置有问题。 2.cadence原理图输出为 PDF网络名下划线偏移的情况 可以看到上图&#xff0c;网络名往上漂移。 3. 解决办法 …...

ffmpeg视频滤镜:提取缩略图-framestep

滤镜描述 官网地址 > FFmpeg Filters Documentation 这个滤镜会间隔N帧抽取一帧图片&#xff0c;因此这个可以用于设置视频的缩略图。总体上这个滤镜比较简单。 滤镜使用 滤镜参数 framestep AVOptions:step <int> ..FV....... set frame st…...

RecyclerView详解——(四)缓存复用机制

稍微看了下源码和部分文章&#xff0c;在此做个小小的总结 RecyclerView&#xff0c;意思为可回收的view&#xff0c;那么相对于listview&#xff0c;他的缓存复用肯定是一大优化。 具体而言&#xff0c;当一个列表项被移出屏幕后&#xff0c;RecyclerView并不会销毁其视图&a…...

进程 系统调用 中断

进程P通过执行系统调用从键盘接收一个字符的输入&#xff0c;已知此过程中与进程P相关的操作包括&#xff1a; ①将进程P插入就绪队列&#xff1b; ②将进程P插入阻塞队列&#xff1b; ③将字符从键盘控制器读入系统缓冲区&#xff1b; ④启动键盘中断处理程序&#xff1b; …...

演讲回顾丨杭州悦数 CTO 叶小萌:图数据库发展新航向——拥抱 GQL,融合 HTAP,携手 AI

本文为杭州悦数 CTO 叶小萌在“标准智能&#xff1a;新质生产力的原动力”悦数图数据库新产品发布会上的演讲回顾&#xff0c;主题为&#xff1a;《新标准、新期待&#xff1a;展望图数据库发展的关键方向》 各位嘉宾、悦数图数据库的用户以及线上的观众朋友们大家好&#xff0…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...