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

本文详细介绍了在JavaWeb开发中,如何利用MyBatis框架进行数据的增删查改,特别是如何实现动态SQL来修改全部或部分字段。文章通过示例代码展示了如何编写BrandMapper接口、SQL语句以及测试类,包括无条件更新所有数据和根据条件动态更新数据的方法。
摘要由CSDN通过智能技术生成

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

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

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

一、前言

本文会讲述有关于如何删除数据的问题,在修改数据时,有可能会修改所有数据,也有可能要修改其中的几条数据,后者需要使用动态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();
    }
}

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

四、结语

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

  • 27
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alita11101_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值