在 MyBatis 中,可以使用相同的 SQL 映射语句进行批量删除和单个删除。

10 篇文章 0 订阅
6 篇文章 0 订阅

目录

前端代码: 

后端代码:

controller

 service层接口

service接口的实现

mapper层接口

xml

sql

效果:(点击操作列的删除,可删除一行数据。勾选多个多选框再点击批量删除,可删除多个) 

 

前端代码: 

<el-input placeholder="请输入姓名" v-model="keyWord" style="width: 400px">
  <el-button slot="append" icon="el-icon-search" @click="selectAllUser()"></el-button>
</el-input>
<el-button type="primary" @click="batchDeleteUser()">批量删除</el-button>
<el-table :data="tableData" border style="width: 100%" @selection-change="handleSelectionChange">
  <el-table-column type="selection" width="55"></el-table-column>
  <el-table-column prop="name" label="姓名" width="180"></el-table-column>
  <el-table-column prop="phone" label="电话" width="180"></el-table-column>
  <el-table-column prop="grades" label="班级" width="180"></el-table-column>
  <el-table-column prop="operate" label="操作" align="center" fixed="right">
    <template slot-scope="scope">
      <!-- (scope.row.userId)用于获取当前行数据对象中的用户ID(或其他字段) -->
      <el-button size="mini" type="text" @click="openDialog(scope.row)">编辑</el-button>
      <el-button size="mini" type="text" @click="deleteOneUser(scope.row)">删除</el-button>
    </template>
  </el-table-column>
</el-table>
export default {
  data() {
    return {
      tableData: [],
      selectedIds: [], // 存储选中行的ID的数组
      
    }
  },
  methods: {
     //判断用户选择了什么
    handleSelectionChange(selection) {
      this.selectedIds = selection.map(item => item.id);
    },
    //删除用户(删除多个)
    batchDeleteUser() {
      this.deleteUser(this.selectedIds)
    },
    //删除用户(删除单个)
    deleteOneUser(row) {
      let selectIdArray = [];
      selectIdArray.push(row.id);
      this.deleteUser(selectIdArray)
    },
    //删除用户逻辑
    deleteUser(selectIdArray) {
      this.$confirm('确认删除?')
        .then(() => {
          //点击确定后的逻辑
          this.$axios({
            method: "post",
            url: "http://localhost:8080/api/user/deleteUser",
            data: selectIdArray
          }).then((res) => {
            if (res.data.code === '200') {
              this.$message({
                message: res.data.message,
                type: "success"
              });
              this.selectAllUser();
            } else {
              this.$message({
                message: res.data.message,
                type: "failed"
              });
            }
          })
        })
        .catch(() => {});
    }
  }
}

后端代码:

  • controller

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    UserService userService;

    //删除用户
    @PostMapping("/deleteUser")
    public Result deleteUser(@RequestBody String[] userArray){
        return  userService.deleteUser(Arrays.asList(userArray));
    }
  
}
  •  service层接口
public interface UserService {

    Result deleteUser(List<String> UserList);
}
  • service接口的实现
public Result deleteUser(List<String> userList) {
    // 判断userList是否为空
    if (CollectionUtils.isEmpty(userList)) {
        // 如果是空,则返回删除成功信息和删除数量为0
        return Result.succeed("删除成功", 0);
    }

    // 调用userMapper.deleteUser方法来删除指定的用户
    int count = userMapper.deleteUser(userList);

    // 判断删除是否成功
    if (count == userList.size()) {
        // 如果全部删除成功,则返回删除成功信息和删除的用户数量
        return Result.succeed("删除成功", count);
    } else {
        // 如果只有部分删除成功,则返回部分删除成功信息和删除的用户数量
        return Result.succeed("删除部分成功", count);
    }
}
  • mapper层接口
public interface UserMapper {

    int deleteUser(List<String> userList);

}
  • xml
    <update id="deleteUser">
        update user
        set
        status='0'
        where id in
        <foreach collection="list" item="item" open="(" close=")" separator=",">
            #{item}
        </foreach>
    </update>

数据库

 

  • sql
/*
 Navicat Premium Data Transfer

 Source Server         : database
 Source Server Type    : MySQL
 Source Server Version : 80029
 Source Host           : localhost:3306
 Source Schema         : score_management_db

 Target Server Type    : MySQL
 Target Server Version : 80029
 File Encoding         : 65001

 Date: 18/02/2024 13:52:16
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `userId` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '账号',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '姓名',
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '密码',
  `phone` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '手机号',
  `grades` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '班级',
  `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '性别',
  `age` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '年龄',
  `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '地址',
  `status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT '1' COMMENT '状态',
  `id` int NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('zhangsan', '张三', '1234', '1778299200', '软件一班', '男', '341', '广西1', '1', 1);
INSERT INTO `user` VALUES ('zhangsi', '张四', '1234', '1778299200', '软件一班', '男399999', '3嗯嗯嗯', '广v', '1', 2);
INSERT INTO `user` VALUES ('liuliu', '刘六', '1234', '1778299200', '软件二班', '男', '34', '广西', '1', 3);
INSERT INTO `user` VALUES ('1', '陈万祥222', '1', '55566777888', '软件二班', NULL, NULL, NULL, '0', 10);
INSERT INTO `user` VALUES ('laoxiaming', '劳霞明', 'laoxiaming', '4646436', '软件二班', NULL, NULL, NULL, '1', 11);

SET FOREIGN_KEY_CHECKS = 1;

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Mybatis映射文件是指Mapper文件,它是Mybatis用于配置SQL语句的文件。在Mybatis的全局配置文件,会配置Mapper文件的资源路径,创建SqlSessionFactory时会加载这些Mapper文件。Mapper文件包含了SQL语句映射以及相应的参数配置。\[1\] Mapper文件的标签包括cache、cache-ref、resultMap、parameterMap、sql、insert、update、delete和select等。其,resultMap是最复杂也是最强大的元素,用于描述如何从数据库结果集加载对象;parameterMap已经被废弃,不推荐使用sql是可被其他语句引用的可重用语句块;insert、update、delete和select分别对应映射的插入、更新、删除和查询语句。\[2\] 在Mapper文件,可以使用不同的方式传递参数。单个参数可以是基本类型或对象类型,Mybatis会直接使用这个参数。多个参数会被重新包装成一个Map传入,Map的key是param1、param2或者0、1等,值就是参数的值。也可以为参数使用@Param起一个名字,Mybatis会将这些参数封装进Map,key就是我们自己指定的名字。当参数属于业务POJO时,可以直接传递POJO。还可以封装多个参数为Map进行传递,或者将Collection/Array封装成Map传入。\[3\] 总结来说,Mybatis映射文件是用于配置SQL语句的文件,其包含了SQL语句映射以及参数的配置。在Mapper文件,可以使用不同的方式传递参数。 #### 引用[.reference_title] - *1* [Mybatis 映射文件](https://blog.csdn.net/dingd1234/article/details/123028627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Mybaits(映射文件)](https://blog.csdn.net/weixin_45739322/article/details/109193542)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

娃哈哈哈哈呀

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

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

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

打赏作者

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

抵扣说明:

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

余额充值