MyBatis案例 | 使用映射配置文件实现CRUD操作——添加数据
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址:🔥JavaWeb
Java入门篇: 🔥Java基础学习篇
Java进阶学习篇(持续更新中):🔑Java进阶学习篇

本系列文章会将讲述有关于如何使用MyBatis完成增删查改的操作,预计本系列文章会有以下这些文章,在写完本系列的文章后会有一篇文章罗列这些文章以及其地址(传送门)小伙伴们直接点击查看即可
| 文章名称 | 文章地址 |
|---|---|
| 查询所有数据 | 使用映射配置文件实现CRUD操作——查询所有数据 |
| 查询详情 | 使用映射配置文件实现CRUD操作——通过主键查询对应数据 |
| 使用映射配置文件实现CRUD操作——多条件查询 | |
| 使用映射配置文件实现CRUD操作——动态SQL优化条件查询 | |
| 添加数据 | |
| 修改全部字段 | |
| 修改动态字段 | |
| 删除一条数据 | |
| 批量删除数据 |
文章目录
- 一、前言
- 二、添加数据
- 1.BrandMapper接口
- 2.SQL语句
- 3.测试类
- 三、返回主键
- 1.概述
- 2.将id绑定到对象
- 3.改写测试类
- 4.完整代码
- 四、结语
一、前言
本文将讲述有关于添加数据以及添加完数据能够返回主键的功能,这在实际的业务中会有如下的场景:在订单页面会有一个订单项,在订单项处会显示出自己选购的商品,那么要显示自己选购的商品就必然要返回该数据的主键,因此添加完数据能够返回主键的功能是需要重点掌握的

二、添加数据
1.BrandMapper接口
这里只需要构造一个含参数的add方法即可,括号内返回的参数是Brand实体类和brand对象,然后在爆红处直接使用快捷键Alt+Enter生成Statement
void add(Brand brand);
2.SQL语句
添加数据可以用INSERT ··· INTO语句来写,由于此时不确定我们要添加的数据是什么,所以这里依然使用参数占位符来书写语句,这里应该没有太多难点,直接上代码
insert into tb_brand(brand_Name,company_name,ordered,description,status)
values (#{brandName},#{companyName},#{ordered},#{description},#{status})
3.测试类
这里需要我们传递进去参数,即我们要先设置好参数以后,传递到Brand类中,用Brand类new出来的对象调用set方法,后面的代码与之前相同,我们来执行查看一下结果
int status = 1;String brandName = "戴尔";String companyName = "戴尔公司";String description = "激发人类潜能 —— 这是技术的终极意义,也是戴尔所做一切的源动力";int ordered = 100;Brand brand = new Brand();brand.setStatus(status);brand.setBrandName(brandName);brand.setCompanyName(companyName);brand.setDescription(description);brand.setOrdered(ordered);

这里可以看出有成功添加数据,但是在表格中没有这条添加的数据,刷新完了也没有,这是因为没有提交事务,所以它无法提交到表格中,自然也就不会更新数据了;如下图所示,Setting autocommit to false on JDBC Connection,所以这里我们要在执行完方法后多加一个提交事务的语句

提交事务
sqlSession.commit();
这时候再执行一下语句,发现表格更新了,出现了我们刚刚新增的数据,如果不写这个提交事务的话,也可以在openSession方法中传递参数true,开启自动提交事务

三、返回主键
1.概述
如果需要将刚添加成功的数据添加到订单项的数据库中,那么必然要设置所属订单的id,那么就需要获取id,也就是在添加完数据后要返回主键。其实在刚刚我们执行了SQL语句后,id就已经存在了,只不过没有绑定到对象中,所以我们要绑定一下才行
2.将id绑定到对象
这里只需要设置两个参数就可以完成绑定,并将添加完的数据的id返回出来:useGeneratedKeys="true"以及keyProperty="id"
<!--添加数据--><insert id="add" useGeneratedKeys="true" keyProperty="id">insert into tb_brand(brand_Name,company_name,ordered,description,status)values (#{brandName},#{companyName},#{ordered},#{description},#{status});</insert>
3.改写测试类
在执行方法时,要获取id,就要调用get方法,并打印输出,看结果
Integer id = brand.getId();
System.out.println(id);
执行结果
Brand{id=6, brandName=‘惠普’, companyName=‘惠普公司’, ordered=75, description=‘作为一家科技公司,我们的目标不仅仅是赚取丰厚的利润。还希望能够让世界变得更加美好’, status=1}
6
4.完整代码
public class MyBatisTest_add {@Testpublic void add() throws IOException {//接收参数int status = 1;String brandName = "惠普";String companyName = "惠普公司";String description = "作为一家科技公司,我们的目标不仅仅是赚取丰厚的利润。还希望能够让世界变得更加美好";int ordered = 75;Brand brand = new Brand();brand.setStatus(status);brand.setBrandName(brandName);brand.setCompanyName(companyName);brand.setDescription(description);brand.setOrdered(ordered);//加载MyBatis的核心配置文件,获取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//SqlSession获取对象SqlSession sqlSession = sqlSessionFactory.openSession();//获取BrandMapper接口代理对象BrandMapper brandMapper= sqlSession.getMapper(BrandMapper.class);//执行方法brandMapper.add(brand);Integer id = brand.getId();//提交事务sqlSession.commit();//打印结果System.out.println(brand);System.out.println(id);//释放资源sqlSession.close();}
}
四、结语
添加数据比较简单,主要是能够将添加完的数据id(主键)返回到控制台,是个重点,接下来将讲述有关于修改字段的知识点
相关文章:
MyBatis案例 | 使用映射配置文件实现CRUD操作——添加数据
本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址:🔥JavaWeb Java入门篇: 🔥Java基础学习篇 Java进阶学习篇&…...
2023年,什么样的CRM,才是您最需要的?
春节假期刚刚结束,当大家还沉浸在新春佳节的喜悦中时,很多地方已经争先恐后地奋力开跑了。近日,全国各地方政府相继出台并发布了2023年数字化转型规划,纷纷结合自身的区位特色和优势资源,明确2023年乃至此后数年的数字…...
【C语言】编程初学者入门训练(6)
文章目录51. 计算一元二次方程52. 获取月份天数53. 简单计算器54. 线段图案55. 正方形图案56. 直角三角形图案57. 翻转直角三角形图案58. 带空格直角三角形图案59. 金字塔图案60. 翻转金字塔图案51. 计算一元二次方程 问题描述:从键盘输入a, b, c的值,编…...
Java笔记-异常相关
一、异常概述与异常体系结构 Error:Java虚拟机无法解决的严重问题: JVM系统内部错误,资源耗尽,如:StackOverflow \OOM堆栈溢出 处理办法:只能修改代码,不能编写处理异常的代码 Exception:可以处理的异常 &…...
pytest-xdist测试用例并发
官方文档:pytest-xdist初次使用参考:Python测试框架pytest(22)插件 - pytest-xdist(分布式执行)pytest测试框架系列 - Pytest pytest-xdist 分布式、多进程并发执行用例你会用吗?Pytest-xdist并…...
大数据---Hadoop安装jdk简易版
编写自动安装jdk的shell脚本 完整流程: 大数据—Hadoop安装教程(一) 文章目录编写自动安装jdk的shell脚本上传压缩包编写shell脚本vim autoinstall.sh解压更名添加环境运行上传压缩包 在opt目录下创建连个目录install和soft 将压缩包上传到install目录…...
【0基础学爬虫】爬虫基础之爬虫的基本介绍
大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学…...
Python 数据库开发实战 - Python与Redis交互篇- 综合案例 - 新闻管理系统 - 缓存新闻数据至redis
接下来这个章节将继续来完成 《新闻管理系统》 这个项目,上一章节我们完成了 “发表新闻” 这个功能,在发表新闻后,什么时候才会缓存该条新闻记录呢?并不是说在发表新闻成功之后就立刻被缓存,而是该新闻被管理员审批通…...
Vue拼图验证
vue-puzzle-verification 封装的一个用于登录验证的拼图的vue组件,使用了canvas画图和拖拽的一些技巧。支持大小、形状、图片、偏差、范围的自定义。 一、安装使用 npm install vue-puzzle-verification 二、main.js里引入 import PuzzleVerification from vue…...
这个神器,让 Python 爬虫如此简单
相信大家应该都写过爬虫,简单的爬虫只需要使用 requests 即可。遇到复杂的爬虫,就需要在程序里面加上请求头和参数信息。类似这种: 我们一般的步骤是,先到浏览器的网络请求中找到我们需要的请求,然后将请求头和参数信…...
网络舆情公关必须把握的四项基本原则
在这个网络媒体占主导的时代,舆情公关进入了网络自媒体时代,有时候可能企业认为是小事儿,也可能在网上掀起轩然大波,所以网络舆情优化成为营销推广工作中重要一环。网络舆情优化的目标是让网络舆论对企业经营发展有利的方向发展&a…...
Kafka技术认知
文章目录概念理解名词解释基本架构工作流程Kafka的特性概念理解 Kafka是分布式的基于发布-订阅消息队列。是一个分布式、支持分区的、多副本的,基于 Zookeeper 协调的分布式消息中间件系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景…...
2022年新一代kaldi团队技术输出盘点
目录 1. 技术创新 1.1 Pruned RNN-T loss 1.2 RNN-T 的快速 GPU 解码 1.3 多码本量化索引的知识蒸馏 1.4 RNN-T 和 CTC 的低延时训练 1.5 Zipformer 1.6 Small tricks 2. 模型部署 2.1 Sherpa 2.1 Sherpa-ncnn 3. 更多的 recipe 和模型 参考资料 1. 技术创新 1.1 …...
数据结构复习(三)顺序表oj
目录 27. 移除元素 26. 删除有序数组中的重复项 88. 合并两个有序数组 27. 移除元素 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外…...
2023.2.10每日一题
每日一题题目描述解题核心解法一:模拟题目描述 题目链接:2553. 分割数组中数字的数位 给你一个正整数数组nums,请你返回一个数组answer,你需要将nums中每个整数进行数位分割后,按照nums中出现的相同顺序放入答案数组…...
Homekit智能家居DIY一智能吸顶灯
买灯要看什么因素 好灯具的灯光可以说是家居的“魔术师”,除了实用的照明功能外,对细节的把控也非常到位。那么该如何选到一款各方面合适的灯呢? 照度 可以简单理解为清晰度,复杂点套公式来说照度光通量(亮度&#x…...
关于 OAuth 你又了解哪些?
作者罗锦华,API7.ai 技术专家/技术工程师,开源项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者。 OAuth 的背景 OAuth,O 是 Open,Auth 是授权,也就是开放授权的意思。OAuth 始于 2006 年&a…...
18. 构造函数和析构函数,构造函数的分类和调用
构造函数和析构函数 构造函数 //没有返回值 不用写void//函数名 与 类名相同//可以有参数 ,可以发生重载//构造函数 由编译器自动调用一次 无须手动调用析构函数 //没有返回值 不用写void函数名 与类名相同 函数名前 加 ~不可以有参数 ,不可以发生重载析构函数 也是由编译器自…...
JavaScript设计模式es6(23种)
设计模式简介设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的…...
设计「业务」与「技术」方案
三天研发,两天设计; 01【优先做设计方案】 职场中的那些魔幻操作,研发最烦的是哪个? 作为一个数年且资深的互联网普通开发,可以来说明一下为什么是:缺乏设计; 面对业务需求的时候,…...
Axure RP中文语言包:3分钟快速汉化你的原型设计工具
Axure RP中文语言包:3分钟快速汉化你的原型设计工具 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 对于…...
Linux服务器卡死?5分钟定位hung task与soft lockup的实战技巧
Linux服务器卡死?5分钟定位hung task与soft lockup的实战技巧 凌晨三点,服务器监控突然告警——核心业务节点失去响应。作为运维工程师,这种场景往往意味着不眠之夜。但不同于新手的手足无措,经验丰富的系统管理员知道:…...
2026年网盘性价比终极对决,10款网盘实测
上传龟速、下载受限、会员条约复杂——这是不少用户在2026年使用网盘时的真实痛点。面对市面上琳琅满目的云存储选项,很多人陷入了选择焦虑。为了解决这一问题,我们将视角聚焦于“效率”与“安全”,对市面上的10款主流网盘进行了系统性实测。…...
多智能体概述
一、多智能体概述 多智能体系统通过协调多个专职智能体或组件来完成复杂流程。并非所有复杂任务都需要多智能体——单个智能体配合合适的工具与提示词往往就够用。我们何时采用多智能体模式更有价值,以及 AgentScope 支持哪些模式? 1、为什么要用多智能体…...
别再死记硬背了!用一次完整的网页访问,帮你彻底搞懂HCIA/HCIP里的TCP/IP和OSI模型
从输入网址到页面加载:用真实场景拆解TCP/IP与OSI模型 想象一下这个场景:你在浏览器地址栏输入"www.baidu.com",按下回车键,不到一秒就看到了熟悉的搜索页面。这看似简单的操作背后,隐藏着一场精密的网络协议…...
阴阳师自动化脚本百鬼夜行智能控制指南:从配置到精通
阴阳师自动化脚本百鬼夜行智能控制指南:从配置到精通 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师自动化脚本是一款强大的游戏辅助工具,专为提升…...
绝区零一条龙自动化工具:从机械操作到智能游戏的进化指南
绝区零一条龙自动化工具:从机械操作到智能游戏的进化指南 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 当你第…...
飞书机器人深度集成:OpenClaw+Qwen3-32B-Chat智能问答系统搭建
飞书机器人深度集成:OpenClawQwen3-32B-Chat智能问答系统搭建 1. 项目背景与需求拆解 去年底接手了一个技术团队的知识库建设项目,需要为百人规模的研发团队搭建一个智能问答系统。核心诉求是:通过飞书机器人接口,让成员能快速查…...
计算机毕业设计:携程美食数据分析与个性化推荐平台 Django框架 爬虫 协同过滤推荐算法 可视化 推荐系统 数据分析 大数据(建议收藏)✅
1、项目介绍 技术栈 Python 语言、Django 框架、requests 爬虫技术、基于用户的协同过滤推荐算法、Echarts 可视化库、携程美食网数据源 功能模块 美食数据分析可视化模块美食数据模块美食推荐模块后台数据管理模块数据爬取模块注册登录模块留言板模块 项目介绍 本系统是基…...
SDMatte提示词(Prompt)高级使用技巧:引导模型优化抠图边缘
SDMatte提示词(Prompt)高级使用技巧:引导模型优化抠图边缘 1. 为什么提示词对抠图质量至关重要 你可能已经发现,同样的图片在不同提示词下,SDMatte生成的蒙版质量会有明显差异。这就像给修图师不同的工作指令——说&…...
