【Java框架】Mybatis(04)- 增强版

Mybatis框架 - 动态修改数据功能的实现

文章概述

【说明】

  • 文章后面附有具体操作内容
  • 还有相关一系列的组合文章;
  • 内容均附有简易版和最终版;

功能描述

【说明】

动态SQL机制中,使用<if>标签可用于对某参数值进行判断,从而生成不同的SQL语句片段,常用于设计更新数据的操作。

【目标】

仅使用一个方法来实现多种不同的数据更新操作(想更新哪些字段就更新哪些字段,不想更新的字段值将保持不变)。

具体实现

【代码01】

《描述》

  • Mapper接口文件
package com.example.mybatisDemo.mapper;

public interface DemoMapper {

   /**
     * 根据id,动态修改数据
     *
     * 传入的参数应该封装了需要修改的字段值,保持为null的属性对应的字段将不会被修改
     * 注意:必须封装id属性
     *
     * @param demo 封装了新的值的对象
     * @return 受影响的行数,当修改成功时,将返回"1",如果无此id对应的数据,将返回"0"
     */
    int updateById(Demo Demo);

}

【代码02】

《描述》

  • Mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisDemo.mapper.DemoMapper">

    <!--int updateById(Demo demo);-->
    <update id="updateById">
        update
            demo_db
        <set>
            <if test="paramA != null">
                paramA = #{paramA},
            </if>
            <if test="paramB != null">
                paramB = #{paramB},
            </if>
            <if test="paramC != null">
                paramC = #{paramC},
            </if>
        </set>
        where
            id=#{id}
    </update>

</mapper>

【代码03】

《描述》

  • 测试代码,用于测试程序;
package com.example.mybatisDemo.mapper;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class DemoMapperTests {

    @Autowired
    CheerMapper cheerMapper;

    @Test
    void testUpdateById() {
        Long id = 7L;
        String paramA = "DEMO_A";
        String ParamB = "DEMO_B";
        Demo demo = new Demo();
        demo.setId(id);
        demo.setParamA(paramA);
        demo.setParamB(paramB);
        int rows = cheerMapper.updateById(demo);
        System.out.println("修改完成,受影响的行数=" + rows);
        System.out.println("【动态修改】测试完成!!!");
    }

}

相关标签

【说明】

  • 具体参见其他文章;

【示例】

  • 具体参见其他文章;

if

《功能》

《属性》

  • test

set

《功能》

《属性》

update

《功能》

《属性》

  • id

项目文件

【源项目】

具体参见"最终版"

【数据库】

具体参见"最终版"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SUNxRUN

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

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

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

打赏作者

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

抵扣说明:

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

余额充值