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);
  • 相关阅读:
    mysql concat
    (三)微信小程序之发送服务通知(模板消息)
    小型web服务器thttpd的学习总结(下)
    小型web服务器thttpd的学习总结(上)
    平方根倒数快速算法
    微信公众平台服务框架
    静态库动态库回顾
    RocketMQ常用命令
    rocketmq配置文件参数(broker-xx.properties)
    RocketmMQ的组成及相关概念
  • 原文地址:https://www.cnblogs.com/flyShare/p/12320301.html
Copyright © 2011-2022 走看看