MyBatis案例 | 使用映射配置文件实现CRUD操作——修改数据

news2024/9/22 9:57:34

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址:🔥JavaWeb
Java入门篇: 🔥Java基础学习篇
Java进阶学习篇(持续更新中):🔑Java进阶学习篇

在这里插入图片描述
本系列文章会将讲述有关于如何使用MyBatis完成增删查改的操作,预计本系列文章会有以下这些文章,在写完本系列的文章后会有一篇文章罗列这些文章以及其地址(传送门)小伙伴们直接点击查看即可

文章名称文章地址
查询所有数据使用映射配置文件实现CRUD操作——查询所有数据
查询详情使用映射配置文件实现CRUD操作——通过主键查询对应数据
使用映射配置文件实现CRUD操作——多条件查询
使用映射配置文件实现CRUD操作——动态SQL优化条件查询
添加数据使用映射配置文件实现CRUD操作——添加数据
修改全部字段
修改动态字段
删除一条数据
批量删除数据

文章目录

  • 一、前言
  • 二、修改全部数据
    • 1.BrandMapper接口
    • 2.SQL语句
    • 3.测试类
  • 三、修改动态数据
    • 1.BrandMapper接口
    • 2.SQL语句(set标签使用)
    • 3.测试类
  • 四、结语

一、前言

本文会讲述有关于如何删除数据的问题,在修改数据时,有可能会修改所有数据,也有可能要修改其中的几条数据,后者需要使用动态SQL语句来实现效果,本文也将重点讲述这部分的内容

二、修改全部数据

1.BrandMapper接口

这里由于为了测试方便,能够更加直观的看出被修改的数据有多少条,所以这里不定义一个void方法了,而是用int来接收

    //修改
    int update(Brand brand);

2.SQL语句

修改数据,也可以成为更新数据,会使用到关键字UPDATE,具体语法就是UPDATE 表名 SET 字段1 = 值1 ,字段2 = 值2 ··· WHERE ···这里修改所有数据,所以需要设置表中所有字段(当然这种情况一般人会直接吧它删掉再新建,不然一个个改太麻烦了吧😂)

update tb_brand	
set
brand_name = #{brandName},
company_name = #{companyName},
description = #{description},
status = #{status},
where id = #{id}

3.测试类

这里我们修改几个数据,然后传递进去,并提交事务,这样就可以成功修改数据了,与之前的测试类不同的是,由于这里多了一个参数id,所以在传递的时候也要把id传进去,再用一个count去接收修改的行数

        //执行方法
        int count = brandMapper.update(brand);

        //提交事务
        sqlSession.commit();

        //打印结果
        System.out.println(count);

三、修改动态数据

1.BrandMapper接口

这里由于为了测试方便,能够更加直观的看出被修改的数据有多少条,所以这里不定义一个void方法了,而是用int来接收

    //修改
    int update(Brand brand);

2.SQL语句(set标签使用)

由于我们不一定会修改全部字段,所以要用一个if标签来判断,也就是之前说的多条件动态查询,可以判断需要修改的字段具体是哪一个;同时,由于除了最后一个语句,每个语句后面都有一个逗号,如果最后一个条件不符合的话,SQL语句中就多了个逗号,如果所有的字段都不修改的话,又多了一个set,所以为了避免这种情况,可以使用MyBatis自带的set标签来解决这个问题

<update id="update">
        update tb_brand
        
        <set>
        
          <if test="brandName != null and brandName != '' ">
            brand_name = #{brandName},
          </if>

          <if test="companyName != null and brandName != '' ">
            company_name = #{companyName},
          </if>
          
		  <if test="ordered != null ">
            ordered = #{ordered},
          </if>

          <if test="description != null and description != '' ">
            description = #{description},
          </if>

          <if test="status != null ">
            status = #{status}
          </if>
          
        </set>
        
        where id = #{id}
        
    </update>

3.测试类

测试类和上面一样,这里贴出完整的测试类代码。为了对比明显,我们将第六条数据改为与第五条部分不同,看是否能修改成功

public class MyBatisTest_update {
    @Test
    public void update() throws IOException {
        //接收参数
        int status = 1;
        String brandName = "戴尔";
        String companyName = "美国戴尔公司";
        String description = "激发人类潜能 —— 这是技术的终极意义,也是戴尔所做一切的源动力";
        int ordered = 49;
        int id = 6;

        Brand brand = new Brand();
        brand.setStatus(status);
        brand.setBrandName(brandName);
        brand.setCompanyName(companyName);
        brand.setDescription(description);
        brand.setOrdered(ordered);
        brand.setId(id);

        //加载MyBatis的核心配置文件,获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


        //SqlSession获取对象
        SqlSession sqlSession = sqlSessionFactory.openSession(true);


        //获取BrandMapper接口代理对象
        BrandMapper brandMapper= sqlSession.getMapper(BrandMapper.class);

        //执行方法
        int count = brandMapper.update(brand);

        //提交事务
        sqlSession.commit();

        //打印结果
        System.out.println(count);

        //释放资源
        sqlSession.close();
    }
}

执行结果
在这里插入图片描述

四、结语

接下来将会讲述有关于删除数据相关知识点,有任何问题可以评论留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341708.html

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

相关文章

简单易懂、无线产品上市认证:进网许可证、入网证、CTA认证

简单易懂、无线产品上市认证:进网许可证、入网证、CTA认证 通信产品想在中国市场进行销售,一般需要通过以下三种认证 : CCC强制认证、TA型号核准(SRRC)、NAL进网许可(CTA) 今天我们来详细了解一下NAL(Network Access License)工信部信息通信管理局的相关要求。 那么…

【软考】系统集成项目管理工程师(二十一)项目收尾管理

1. 项目验收2. 项目总结3. 系统维护4. 项目后评价补充:人员转移和资源遣散广义的系统集成项目收尾管理工作通常包含四类典型的工作:项目验收工作、项目总结工作、系统维护工作 以及 项目后评价工作,此外项目团队成员的后续工作也应在收尾管理时妥善安排;狭义的系统集成项目…

C++程序中执行abort等操作导致没有生成dump文件的问题案例分析

目录 1、概述 2、查看C运行时函数abort的内部实现 3、开源库jsoncpp中调用abort的代码场景说明 4、开源库WebRTC中调用abort的代码场景说明 5、项目问题实例分析 5.1、问题说明 5.2、进一步分析 5.3、动态申请内存失败的可能原因分析 6、最后 VC常用功能开发汇总&…

计算机网络(第三版) 胡亮 课后习题第二章答案

计算机网络&#xff08;第三版&#xff09; 胡亮 课后习题第二章答案 1、数据通信系统由哪些部分组成&#xff1f; 信源、发送设备、传输设备、接受设备&#xff0c;信宿 2、数据通信应该解决的主要问题有哪些&#xff1f; 提高传输系统的利用率接口&#xff0c;编码和同步交换…

C++类基础(十二)

运算符重载&#xff08;终&#xff09; ● 类型转换运算符 – 函数声明为 operator type() const – 与单参数构造函数一样&#xff0c;都引入了一种类型转换方式 struct Str {Str(int p): val(p){}operator int() const //重载类型转换运算符: 没有显示声明返回类型&#xff…

百趣代谢组学分享,补充α-酮酸的低蛋白饮食对肾脏具有保护作用

文章标题&#xff1a;Reno-Protective Effect of Low Protein Diet Supplemented With α-Ketoacid Through Gut Microbiota and Fecal Metabolism in 5/6 Nephrectomized Mice 发表期刊&#xff1a;Frontiers in Nutrition 影响因子&#xff1a;6.59 作者单位&#xff1a;…

opencv调取摄像头录制

大家好&#xff0c;我是csdn的博主&#xff1a;lqj_本人 这是我的个人博客主页&#xff1a; lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识https://blog.csdn.net/lbcyllqj?spm1011.2415.3001.5343哔哩哔哩欢迎关注…

月薪11k!从财务专员到软件测试工程师,成都校区小哥哥用三个月实现转行换岗

好久没和大家分享学员的转行经历了&#xff0c;或许在一些人看来他们的故事与自己无关&#xff0c;但同样也能引起一些人的共鸣&#xff0c;可以帮助到那些陷于就业焦虑的同学找到目标和方向。相仿的年龄、相同的职业、相似的压力…在转行软件测试追求更好生活的路上&#xff0…

Python - 文件基础操作

目录 文件的读取 open()打开函数 read类型 read()方法 readlines()方法 readline()方法 for循环读取文件行 close() 关闭文件对象 with open 语法 文件的写入 文件的追加 文件的读取 操作 功能 文件对象 open(file, mode, encoding) 打开文件获得文件对象 文件…

C语言学习笔记(六): 探索函数与变量

函数的定义 形参和实参 在定义函数时函数名后面括号中的变量名称为“形式参数”&#xff08;简称“形参”&#xff09;或“虚拟参数”。 在主调函数中调用一个函数时&#xff0c;函数名后面括号中的参数称为“实际参数”&#xff08;简称“实参”&#xff09;。 当函数被调用…

独自开:提供创业机会、享受平台分红、推出新颖赚钱副业

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 前言 独自开&#xff1a;一款聚焦软件定制开发&#xff0c;独立、自主、开放平台 独创分层标准化平台架构,满足系统不断生长的个性化需求多端一键部署前端业务交互与展…

KMP算法详解

注意&#xff1a;PC阅读效果更佳&#xff0c;建议阅读的同时完成代码实践加深理解一、问题描述指定文本串&#xff1a;aabaabaaf和模式串&#xff1a;aabaaf使用KMP算法判断模式串是否在文本串中出现过&#xff1f;假定模式串的长度小于文本串二、思路解析BF算法的问题是&#…

【pytorch安装】conda安装pytorch无法安装cpu版本(完整解决过程)

问题描述 在安装pytorch过程中&#xff0c;发现最后验证torch时总是返回结果为False&#xff0c;结果翻上去发现自己安装的是cpu版本的。 然后又通过conda去更换不同版本尝试&#xff0c;发现都是cpu版本的。 问题分析 通过conda安装pytorch是从源中搜索匹配指令中的文件&am…

@Validated注解不生效问题汇总

Validated注解不生效问题汇总 文章目录Validated注解不生效问题汇总背景&#xff1a;一&#xff1a;可能原因原因1&#xff1a;原因2&#xff1a;原因3&#xff1a;原因4&#xff1a;二&#xff1a;补充全局异常对validation的处理背景&#xff1a; 项目框架应用的是validatio…

捕鱼大作战协议解密

捕鱼大作战协议解密协/议/流/量/解/密分析捕鱼大作战这款游戏流量的加密方式及解密方法。序捕鱼大作战是tuyoo公司在很多年前上线的一款休闲游戏&#xff0c;对&#xff0c;就是那个之前本号批斗过的途游&#xff0c;这款游戏以海洋深处作为背景&#xff0c;玩家通过在海底施展…

D31 Vue2 + Vue3 K104-K123

D31.Vue F17.打包 图片懒加载&#xff08;K104-K106&#xff09; 1.打包 1&#xff09;vue.config.js module.exports {//打包时不生成map文件(用来进行错误提示的文件&#xff0c;很占用空间)productionSourceMap: false,// 关闭ESLINT校验工具lintOnSave: false, }pnp…

学完Scrapy-Splash秒变爬虫大佬

在做爬虫的时候&#xff0c;大多数的网页中会存在数据动态加载的部分&#xff0c;而且多数都是后期渲染上的。正常情况下爬虫程序仅能爬取被渲染过的数据。因此我们看到的数据也许并非是爬虫直接获取来的。 而scrapy-splash担任了一个中间人的角色&#xff0c;程序通过splash服…

吴思进——复杂美创始人首席执行官

杭州复杂美科技有限公司创始人兼CEO, 本科毕业于浙江大学机械专业&#xff0c;辅修过多门管理课程&#xff1b;1997年获经济学硕士学位&#xff0c;有关对冲基金的毕业论文被评为优秀&#xff1b;2008年创办杭州复杂美科技有限公司。 吴思进 中国电子学会区块链委员会专家&…

计算机网络-基本概念

目录 计算机网络-基本概念 互联网 Java的跨平台原理 ​编辑 C\C的跨平台原理 解释性语言的跨平台原理(python,js等) 客户端 vs 服务器 什么是协议&#xff1f; 网络互连模型 请求过程 计算机之间的通信基础 计算机之间的连接方式-网线直连(需要用交叉线&#xff0c;而…

GIS数据经纬度投影坐标转换总结(涵盖几乎全行业的坐标转换方法)

在处理GIS数据的过程中,避免不了要与坐标和坐标系打交道。这篇文章对能够进行地理坐标转换的所有软件框架做一个一次性总结。 软件类: 1.arcgis arcgis能够进行很全面的很方便的坐标处理,无论是经纬度坐标转投影坐标还是投影坐标转经纬度坐标都非常的简单。arcgis能够对导…