zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    Javascript之数组遍历
    Javascript中的原型、原型链(十)
    Javascript中的对象(八)
    记一次包含iframe的需要滚动的元素不能滚动到底部的问题
    元素等比缩放解决方案
    元素高度自适应屏幕高度解决方案
    浏览器同源策略及规避方案
    Ansible环境搭建
    Ldap 从入门到放弃(二)
    Ldap 从入门到放弃(一)
  • 原文地址:https://www.cnblogs.com/flyShare/p/12320301.html
Copyright © 2011-2022 走看看