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

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(主键)返回到控制台,是个重点,接下来将讲述有关于修改字段的知识点

http://www.lryc.cn/news/1141.html

相关文章:

  • 2023年,什么样的CRM,才是您最需要的?
  • 【C语言】编程初学者入门训练(6)
  • Java笔记-异常相关
  • pytest-xdist测试用例并发
  • 大数据---Hadoop安装jdk简易版
  • 【0基础学爬虫】爬虫基础之爬虫的基本介绍
  • Python 数据库开发实战 - Python与Redis交互篇- 综合案例 - 新闻管理系统 - 缓存新闻数据至redis
  • Vue拼图验证
  • 这个神器,让 Python 爬虫如此简单
  • 网络舆情公关必须把握的四项基本原则
  • Kafka技术认知
  • 2022年新一代kaldi团队技术输出盘点
  • 数据结构复习(三)顺序表oj
  • 2023.2.10每日一题
  • Homekit智能家居DIY一智能吸顶灯
  • 关于 OAuth 你又了解哪些?
  • 18. 构造函数和析构函数,构造函数的分类和调用
  • JavaScript设计模式es6(23种)
  • 设计「业务」与「技术」方案
  • C/C++:预处理(下)
  • 2023互联网相关岗位转行与就业选择的简单分析
  • LeetCode·每日一题·1223.掷骰子模拟·记忆化搜索
  • 【GPLT 二阶题目集】L2-043 龙龙送外卖
  • Maven:基础知识
  • Web 框架 Flask 快速入门(一)flask基础与模板
  • 1CN/Jaccard/PA/AA/RA/Katz/PageRank/SimRank
  • YOLOv5-Backbone模块实现
  • 【C语言】程序环境和预处理
  • 9.关系查询处理和查询优化
  • 计算机组成原理(三)