• mybatis postgresql 批量删除


    一、需求介绍

     前端是一个列表页面,列表可以进行复选框的选择,后台进行关联表数据的删除。

    二、框架介绍

     springboot+mybatis 数据库用的postgresql

    三、具体代码(前端js)

    1、前端涉及到的代码

    //判断选中状态
    var ids ="";

    $(".checkbox").each(function () {
    if($(this).is(':checked'))
    ids +=$(this).val() + ",";
    });
    ids = ids.slice(0,ids.length-1);
    //删除
    $.ajax({
    cache: false,
    type: "post",
    dataType:'json',
    data:{
    id:ids,
    },
    2、逻辑处理层
    Map<String, Object> m = getMaps(req);
    log.info("|" + m + "|");
    // 获取选中的id
    String ids=m.get("id").toString();
    //将获取到的选中的列表封装在list中
    List<String> list = new ArrayList<String>();
    String[] stIds = ids.split(",");
    for (String value : stIds){
    list.add(value);
    }
    int row = knowledgeDao.deleteById(list);
    3、dao层处理
    这个仔细测试发现,只是删除了(USING前)file_info 表中的数据,主表数据并没有删除
    @Delete("<script>" +
    "delete from file_info f USING resource_info k WHERE f.id = k.file_id and k.id in " +
    " <foreach collection="list" open="(" close=")" separator="," item="ids">#{ids}</foreach>;" +
    "</script>")
    int deleteById(List<String> ids);

    /**
    * 删除选择的文件信息 先删除字表数据,再删除主表数据,多个sql实现,目前没发现更好的办法
    * * @return
    */
    @Delete("<script>" +
    "delete from file_info f USING knowledge_info k WHERE f.id = k.file_id and k.id in " +
    " <foreach collection="list" open="(" close=")" separator="," item="ids">#{ids}</foreach>;" +
    " delete from knowledge_info WHERE id in " +
    " <foreach collection="list" open="(" close=")" separator="," item="ids">#{ids}</foreach>;"+
    "</script>")
    int deleteById(List<String> ids);
  • 相关阅读:
    怎么做接口测试,概念及常用方法一
    Maven 常用命令
    终端/Shell 快捷键
    Linux/Unix split 大文件分割合并
    macOS 跳过非 AppStore 下载的软件打开时的验证步骤
    docker[-compose] 连接内网其他容器地址
    iOS现有工程 集成 Cordova/Ionic
    Retrofit2 上传图片等文件
    ButterKnife 绑定 RadioGroup
    使用 Sublime Text 3 开发 React
  • 原文地址:https://www.cnblogs.com/flyShare/p/12320301.html
Copyright © 2020-2023  润新知