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

Mybatis 操作续集(结合上文)

当我们增加一个数据之后,如果我们想要获取它的 Id 进行别的操作,我们该如何获取 Id 呢?

用那个@Options

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface UserInfoMapper {@Options(useGeneratedKeys = true,keyProperty = "id")@Insert(" insert into userinfo(username,password,age,gender,phone) " +"value(#{username},#{password},#{age},#{gender},#{phone})")Integer insert(UserInfo userInfo);}

然后log.info 里面加上userinfo.getId 

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;@Slf4j
@SpringBootTest
class UserInfoMapperTest {@Autowiredprivate UserInfoMapper userInfoMapper;@Testvoid insert() {UserInfo userInfo = new UserInfo();userInfo.setUsername("zhaoliu");userInfo.setPassword("123");userInfo.setAge(45);userInfo.setGender(0);userInfo.setPhone("1775423");Integer result = userInfoMapper.insert(userInfo);log.info("insert 方法,执行结果:{},自增ID:{}",result,userInfo.getId());}
}

这样就能在日志中拿到这个Id了 

我们在 Mysql 中看到确实是8 

接下来,对 insert 的参数如何进行重命名呢? 

(就是username和password这些属性前面都加上重命名之后的名字,比如重命名为userinfo,就写为userinfo.username,还有@Param()括号里面写下要改的名字)

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface UserInfoMapper {@Options(useGeneratedKeys = true,keyProperty = "id")@Insert(" insert into userinfo(username,password,age,gender,phone) " +"value(#{username},#{password},#{age},#{gender},#{phone})")Integer insert(UserInfo userInfo);@Options(useGeneratedKeys = true,keyProperty = "id")@Insert(" insert into userinfo(username,password,age,gender,phone) " +"value(#{userinfo.username},#{userinfo.password},#{userinfo.age},#{userinfo.gender},#{userinfo.phone})")Integer insert2(@Param("userinfo") UserInfo userInfo);}

然后依旧右键generate,test,勾选,ok

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;@Slf4j
@SpringBootTest
class UserInfoMapperTest {@Autowiredprivate UserInfoMapper userInfoMapper;@Testvoid insert2() {UserInfo userInfo = new UserInfo();userInfo.setUsername("zhaoliu");userInfo.setPassword("123");userInfo.setAge(45);userInfo.setGender(0);userInfo.setPhone("1775423");Integer result = userInfoMapper.insert(userInfo);log.info("insert 方法,执行结果:{},自增ID:{}",result,userInfo.getId());}
}

这样就能成功了 

接下来是删除操作

 

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface UserInfoMapper {@Delete("delete from userinfo where id=#{id}")Integer delete(Integer id);//想根据什么条件删除,括号就传什么条件}

右键,generate,test,勾选,ok

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;@Slf4j
@SpringBootTest
class UserInfoMapperTest {@Autowiredprivate UserInfoMapper userInfoMapper;@Testvoid delete() {userInfoMapper.delete(9);}
}

这样就运行成功了 

我们就会发现Id为 9 的数据被删除了 

 上面的 select 是 delete之前查找的,下面的是 delete 之后查找的

接下来是"改"操作 

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import org.apache.ibatis.annotations.*;import java.util.List;@Mapper
public interface UserInfoMapper {@Update("update userinfo set age=#{age} where id=#{id}")Integer update(UserInfo userInfo);}

右键,generate,test,勾选,OK

package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;import static org.junit.jupiter.api.Assertions.*;@Slf4j
@SpringBootTest
class UserInfoMapperTest {@Autowiredprivate UserInfoMapper userInfoMapper;@Testvoid update() {UserInfo userInfo = new UserInfo();userInfo.setAge(78);userInfo.setId(7);Integer result=userInfoMapper.update(userInfo);//受影响的行数,也就是一般Mysql执行一段语句之后的最后一行if (result>0){//如果受影响的行数大于0,说明执行成功了log.info("数据修改成功");}}
}

 

Id 为 7 的年龄改为 78 

 

相关文章:

Mybatis 操作续集(结合上文)

当我们增加一个数据之后,如果我们想要获取它的 Id 进行别的操作,我们该如何获取 Id 呢? 用那个Options package com.example.mybatisdemo.mapper;import com.example.mybatisdemo.model.UserInfo; import org.apache.ibatis.annotations.*;import java.util.List;Mapper pub…...

JVM基础篇:垃圾回收

目录 1.前言 1.1C/C的内存管理 1.2Java的内存管理 2.方法区的回收 3.堆回收 3.1引用计数法和可达性分析法 3.2五种对象引用 强引用 软引用 弱引用 虚引用 终结器引用 3.3垃圾回收算法评价标准 ①吞吐量 ②最大暂停时间 ③堆使用效率 3.4垃圾回收算法 ①标记清…...

蓝桥杯ACwing习题

题目 :https://www.acwing.com/problem/content/4409/ 解析 :根据题目我们可以知道 问的是方案数 那么首先就想到了 dp 仔细想一下 发现类似于蒙德里安的梦想那道状态压缩的题 , 所以我们先考虑怎么定义 f[i][j] f[i][j] 表示的是 已经放了…...

vue发送请求携带token,拼接url地址下载文件

封装请求 ,该请求为普通的get请求 该请求返回值为: 请求成功之后拼接URL地址下载文件 代码块 downTemplateRequest(activeKeys.value).then((res) > {let url http://47.169.168.99:18888/media/${res.data.name};var elink document.createElemen…...

【PTA-C语言】编程练习3 - 循环结构Ⅱ

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习3 - 循环结构(9~15) 7-9 特殊a串数列求和(分数 15)7-10 穷举法搬运砖块问题(分数 15)7-11 数字金字塔(分数 15&…...

Google Chrome 下载 (离线版)

1 访问网址 Google Chrome 网络浏览器 2 点击 下载Chrome 3 直接运行 ChromeStandaloneSetup64.exe 其他: ####################### 谷歌浏览器 (Google Chrome) 最新版离线安装包下载 https://www.iplaysoft.com/tools/chrome/#google_vignette Google Chrome …...

2023年GopherChina大会-核心PPT资料下载

一、峰会简介 自 Go 语言诞生以来,中国便是其应用最早和最广的国家之一,根据 Jetbrains 在 2021 年初做的调查报告,总体来说目前大概有 110 万专业的开发者 选择 Go 作为其主要开发语言。就其全球分布而言, 居住在亚洲的开发者最多&#xff…...

从源代码出发,Jenkins 任务排队时间过长问题的解决过程

最近开发了一个部署相关的工具,使用 Jenkins 来构建应用。Jenkins 的任务从模板中创建而来。每次部署时,通过 Jenkins API 来触发构建任务。在线上运行时发现,通过 API 触发的 Jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的…...

openssl 生成CA及相关证书

实验环境:ubuntu18.04-desktop 获取openssl.cnf配置文件 # 这个返回的路径,不一定被使用了(经测试,ubuntu18下的openssl似乎未加载任何配置文件) openssl version -d生成私钥文件(pem) # 生成私钥 # genrsa&#xf…...

App测试之App日志收集及adb常用命令

文章目录 前言一、adb是什么1.APP测试收集手机日志常用的工具2.adb下载与安装3.ADT/SDK/ADB是什么4.adb连接真机 二、adb常用命令三、android系统日志文件1.logcat日志文件2.logcat日志文件分析 四、分析crash & ANR 日志1.发生crash如何分析2.发生ANR如何分析 总结扩展&am…...

【Java面试——并发基础、并发关键字】

3.1 并发基础 Java 并发 - 理论基础Java 并发 - 线程基础 多线程的出现是要解决什么问题的? 本质什么? CPU、内存、I/O 设备的速度是有极大差异的,为了合理利用 CPU 的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都…...

如何使用 Java 在Excel中创建下拉列表

下拉列表(下拉框)可以确保用户仅从预先给定的选项中进行选择,这样不仅能减少数据输入错误,还能节省时间提高效率。在MS Excel中,我们可以通过 “数据验证” 提供的选项来创建下拉列表,但如果要在Java程序中…...

Python安装步骤介绍

本文将介绍Python安装的详细步骤如下: 下载 python安装 python配置环境变量(安装时勾选配置环境变量的则无需此步骤) 一、python下载 官网:Download Python | Python.org 根据电脑位数下载所需的版本 二、Python安装 1.打开安…...

学习80min快速了解大型语言模型(ChatGPT使用)笔记

学习李宏毅:80min快速了解大型语言模型(ChatGPT使用)笔记 链接:https://www.youtube.com/watch?vwG8-IUtqu-s 1、创建一个属于自己的GPT 目前,GPT4具备一个功能,Create a GPT。利用这个功能可以创建一个…...

SQL错题集1

1.找出选修课程成绩最差的选课记录 注: 聚合函数只能用在group by和()括号中 找最值可用排序order bylimit 1 2. 查询选修成绩 合格的课程 超过2门的 学生编号 3.删除姓名为"LiMing"的学生信息 注: 删除一整行信息&…...

uniapp运行到安卓基座app/img标签不显示

img是html中的标签,他也是一个单标签 image属于服务器控件,是个双标签 问题:uniapp运行到app安卓基座后图片无法显示 原因:自己使用了img标签,而且输入路径无提示,img标签导致图片不显示 解决&#xff…...

vscode非常好用的扩展插件

1、Code Spell Checker: 帮助我们检查单词是否拼写错误,检查规则遵循驼峰拼写法。 2、Color Highlight:高亮显示颜色值 3、Svg Preview: 实时预览svg图片(修改width、height、fill等值来实时查看效果) 4、…...

一文弄懂BFS【广度优先搜索(Breadth-First Search)】

BFS,全名为广度优先搜索(Breadth-First Search),是一种用于图或树的遍历或搜索的算法。它的主要思想是由节点自身开始向它的邻居节点新进展开搜索,因此也常被形象地称为“层序遍历”。 BFS 基本思想 BFS 工作原理是,从开始节点开…...

深度学习记录--logistic回归函数的计算图

计算图用于logistic回归函数 先回顾一下单一样本的logistic回归损失函数的公式,公式如下: 将logistic函数用计算图表示出来(以两个基础量为例),计算图如下: 前向传播已经完成,接下来完成后向传播 运用链式法则依次求…...

Java基本数据类型详解

✨个人主页:全栈程序猿的CSDN博客 💨系列专栏:Java从入门到精通 ✌座右铭:编码如诗,Bug似流星,持续追求优雅的代码,解决问题如同星辰般自如 Java是一种强类型语言,数据类型在程序中起…...

原神玩家效率革命:BetterGI开源自动化解决方案全解析

原神玩家效率革命:BetterGI开源自动化解决方案全解析 【免费下载链接】better-genshin-impact 🍨BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools For …...

【Unity 贪吃蛇大作战模板】高并发IO游戏怎么做?拆解Snake Warz核心架构

Snake Warz IO 是一个基于 Photon Fusion v2 构建的多人在线贪吃蛇游戏完整模板。它不仅提供了可直接上线的游戏内容,还涵盖了完整的多人联机框架、AI系统、UI流程以及跨平台适配能力。该插件支持最多 10 名真实玩家与 30 个 AI 同场竞技,并提供多种游戏…...

HY-MT1.5-1.8B助力内容本地化:一键翻译33种语言,保留原文格式

HY-MT1.5-1.8B助力内容本地化:一键翻译33种语言,保留原文格式 1. 引言 1.1 多语言翻译的挑战与机遇 在全球化的数字时代,内容本地化已成为企业出海、文化交流和技术传播的关键环节。传统翻译工具往往面临三大痛点:语言覆盖有限…...

实时手机检测-通用部署指南:3步完成环境搭建与模型调用

实时手机检测-通用部署指南:3步完成环境搭建与模型调用 1. 环境准备与快速部署 1.1 系统要求 操作系统:Linux/Windows/macOS(推荐Ubuntu 20.04)Python版本:3.7-3.10GPU支持:NVIDIA显卡(可选&…...

Visual C++ Redistributable开源项目故障排除终极指南:从问题诊断到系统优化

Visual C Redistributable开源项目故障排除终极指南:从问题诊断到系统优化 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 开源项目故障排除是开发者…...

【具身智能07】具身智能世界模型与端到端架构:从看见到理解物理规律

07_具身智能世界模型与端到端架构 关键词 世界模型,端到端架构,VLA模型,DreamerV3,RoboCat,WALL-A,云边端协同,系统012架构,多时间尺度预测,因果推理一、引言:从反应式感知到预测式认知的范式转变 2024年之前,具身智能的主流是"感知-行动"反应式回路——机器人看到杯…...

Open WebUI:重构人机交互的开源解决方案

Open WebUI:重构人机交互的开源解决方案 【免费下载链接】open-webui Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,设计用于完全离线操作,支持各种大型语言模型(LLM)运行器,包括Ollama和兼…...

Python内存管理进入“自动驾驶”时代:详解memguard-core插件的AI预测式回收机制,安装仅需3行命令

第一章:Python智能体内存管理策略Python智能体(如基于LLM的Agent、ReAct架构或Tool-Calling Agent)在运行过程中常面临对象生命周期长、中间状态缓存多、工具调用频繁导致引用残留等问题。其内存管理不能仅依赖CPython默认的引用计数与循环垃…...

AsyncAPI消息模式匹配:基于内容路由消息的终极指南

AsyncAPI消息模式匹配:基于内容路由消息的终极指南 【免费下载链接】spec The AsyncAPI specification allows you to create machine-readable definitions of your asynchronous APIs. 项目地址: https://gitcode.com/gh_mirrors/spec/spec AsyncAPI规范允…...

手把手教你用Verilog写一个纯组合逻辑的FP32加法器(附完整代码与避坑指南)

手把手教你用Verilog实现纯组合逻辑FP32加法器(附完整代码与避坑指南) 在数字电路设计中,浮点运算单元一直是性能优化的关键路径。相比时序逻辑实现,纯组合逻辑的FP32加法器能在一个时钟周期内完成所有计算,显著提升吞…...