SSM+maven实现答题管理系统(二)

简介: 好的,现在我们来实现删除模板(model表删除记录)的功能,删除功能不难做,主要我们这次实现的是批量删除功能。一.思路整理首先我们删除模板是根据模板的id来删除的,不管是单项删除还是批量删除,我们这里使用layui获取当前行的功能就能获取模板的id其次不管单项删除还是批量删除,只要将id放入数组中,后端对数组进行遍历,就能达到单项删除/批量删除二.代码实现思路实现以后,我们上代码。

好的,现在我们来实现删除模板(model表删除记录)的功能,删除功能不难做,主要我们这次实现的是批量删除功能。

一.思路整理

首先我们删除模板是根据模板的id来删除的,不管是单项删除还是批量删除,我们这里使用layui获取当前行的功能就能获取模板的id

其次不管单项删除还是批量删除,只要将id放入数组中,后端对数组进行遍历,就能达到单项删除/批量删除

二.代码实现

思路实现以后,我们上代码。

View层:

 var id_array = []; //获取选中行
            // 获取选中行 这里我们可以选择删除 这里的id_array是一个隐藏的值 device对应device_id user对应code survry对应model_id
            table.on('checkbox(test)', function(obj) { //监听复选框
                if (obj.type == 'all') {
                    if (obj.checked == true) {
                        var data = table.cache.dataCheck; //批量操作的表格复选框
                        id_array = [];
                        for (var l = 0; l < data.length; l++) {
                            id_array.push(data[l].model_id);
                        }
                        console.log(id_array);
                    } else {
                        id_array = [];
                    }
                } else {
                    if (obj.checked == true) {
                        id_array.push(obj.data.model_id);
                        console.log(id_array);
                    } else {
                        var index = id_array.indexOf(obj.data.model_id);
                        id_array.splice(index, 1);
                        console.log(id_array);
                    }
                }
            });

            $('#btn-delete-all').click(function() { //删除全部通过一个获取选中行的值,来删除
                layer.confirm('您确定要删除这些数据吗?', function(index) {
                    //打开正在加载中弹出层
                    layer.msg('加载中', {
                        icon: 16,
                        shade: 0.01,
                        time: '9999999'
                    });
                   var url = "survey/del_model";
                    var data = {
                        model_id: id_array //这里将当前的model_id传到后端
                    }
                    $.post(url, data, function(data) {
                        layer.close(layer.index); //关闭正在加载中弹出层
                        console.log(id_array);
                        if (data.code == 1) {
                            layer.msg(data.msg, {
                                icon: 6
                            });
                            location.reload();
                        } else {
                            layer.msg(data.msg, {
                                icon: 5
                            });
                        }
                    }, "json");
                });

            });

AI 代码解读

首先对数据表格进行监听,如果数据表格的当前行被选中,则往id_array数组中push一个id,有多少个,push多少个,而后我们将数组用ajax上传,键名为model_id.

Controller层:

    //返回数据用responseBody
    //删除model
    @RequestMapping(value="Index/survey/del_model")
    @ResponseBody
    public Map<String,Object> delModel(HttpServletRequest req) throws IOException {
        String[] arr = req.getParameterValues("model_id[]");//前端传来的modelId
        int code;
        String msg;

//        if(arr!=null)
//        return api.returnJson(3,arr[0]);
        for (int i = 0; i < arr.length; i++) {
            List<Choose> is_answer=chooseService.findChooseByModelId(arr[i]);
            if (!is_answer.isEmpty()) {
                return api.returnJson(3,"抱歉,题目已经被作答,无法删除");
            }
            continue;
        }
        //如果没有 那么当前选中模板的题目都没有被答过 作级联删除 删除模板表 删除题目表 删除选项表(根据model查出Qsn 再根据qsnId删除Option)
        int is_del=modelService.deleteModelByIds(arr);//删除模板表
        for (int i = 0; i <arr.length ; i++) {
            int is_del_qsn=qsnService.deleteModel2Qsn(arr[i]);//删除题目表
            List<Qsn> qsnList=qsnService.findQsnList(arr[i]);//得到题目
            System.out.println(qsnList);
            for (int j = 0; j <qsnList.size() ; j++) {//删除选项表
                int isDelOptions=detailService.deleteOptionsByQsnId(qsnList.get(j).getQsnId());
            }
        }

        //先查询模板下的题目list 然后遍历list,根据item.id 即qsnId来删除
//        String[] is_del_option 还缺删除选项表的逻辑
        if (is_del!=0){
            code=1;
            msg="success";
        }else {
            code=2;
            msg="fail";
        }

        return api.returnJson(code,msg);
    }
AI 代码解读

这里进行说明一下,区别于tp5,我们使用httpservlet.request的getParameterValues()方法来获取前端传入的array数组

Service层:
modelService:

package com.sl.example.service;


import com.sl.example.pojo.Model;

import java.util.List;

public interface ModelService {
    public List<Model> findAllModel();

    public int deleteModelById(String modelId);

    public int deleteModelByIds(String[] arr);

    public int InsertModel(Model model);

    public Model selectModelById(String modelId);
}

AI 代码解读

modelServiceImpl:

package com.sl.example.service;

import com.sl.example.dao.ModelMapper;
import com.sl.example.pojo.Model;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;

@Service("modelService")
@Transactional
public class ModelServiceImpl implements ModelService{

    @Resource
    private ModelMapper modelMapper;

    @Override
    public List<Model> findAllModel() {
        return modelMapper.selectAllModel();
    }

    @Override
    public int deleteModelById(String modelId) {
        return modelMapper.deleteByPrimaryKey(modelId);
    }

    @Override
    public int deleteModelByIds(String[] arr) {
        return modelMapper.deleteByIds(arr);
    }

    @Override
    public int InsertModel(Model model) {
        return modelMapper.insertSelective(model);
    }

    @Override
    public Model selectModelById(String modelId) {
        return modelMapper.selectByPrimaryKey(modelId);
    }
}

AI 代码解读

将DAO层也贴出来:

package com.sl.example.dao;

import com.sl.example.pojo.Model;

import java.util.List;

public interface ModelMapper {
    int deleteByPrimaryKey(String modelId);

    int deleteByIds(String[] list);

    int insert(Model record);

    int insertSelective(Model record);

    Model selectByPrimaryKey(String modelId);

    List<Model> selectAllModel();

    int updateByPrimaryKeySelective(Model record);

    int updateByPrimaryKey(Model record);
}
AI 代码解读

对应的ModelMapper.xml:

<?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.sl.example.dao.ModelMapper" >
  <resultMap id="BaseResultMap" type="com.sl.example.pojo.Model" >
    <constructor >
      <idArg column="model_id" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="name" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="time" jdbcType="DATE" javaType="java.util.Date" />
      <arg column="create_name" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="rmk2" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="rmk3" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="rmk4" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="rmk5" jdbcType="VARCHAR" javaType="java.lang.String" />
    </constructor>
  </resultMap>
  <sql id="Base_Column_List" >
    model_id, name, time, create_name, rmk2, rmk3, rmk4, rmk5
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
    select 
    <include refid="Base_Column_List" />
    from t_gr_qsn_model
    where model_id = #{modelId,jdbcType=VARCHAR}
  </select>
  <select id="selectAllModel" resultMap="BaseResultMap" resultType="java.util.List">
    select
    <include refid="Base_Column_List" />
    from t_gr_qsn_model
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.String" >
    delete from t_gr_qsn_model
    where model_id = #{modelId,jdbcType=VARCHAR}
  </delete>
  <delete id="deleteByIds" parameterType="java.util.Arrays">
    delete from t_gr_qsn_model
    where model_id in
    <foreach collection="array" index="index" item="item" open="(" separator="," close=")">
      #{item}
    </foreach>
  </delete>
  <insert id="insert" parameterType="com.sl.example.pojo.Model" >
    insert into t_gr_qsn_model (model_id, name, time, 
      create_name, rmk2, rmk3, 
      rmk4, rmk5)
    values (#{modelId,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{time,jdbcType=DATE}, 
      #{createName,jdbcType=VARCHAR}, #{rmk2,jdbcType=VARCHAR}, #{rmk3,jdbcType=VARCHAR}, 
      #{rmk4,jdbcType=VARCHAR}, #{rmk5,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="com.sl.example.pojo.Model" >
    insert into t_gr_qsn_model
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="modelId != null" >
        model_id,
      </if>
      <if test="name != null" >
        name,
      </if>
      <if test="time != null" >
        time,
      </if>
      <if test="createName != null" >
        create_name,
      </if>
      <if test="rmk2 != null" >
        rmk2,
      </if>
      <if test="rmk3 != null" >
        rmk3,
      </if>
      <if test="rmk4 != null" >
        rmk4,
      </if>
      <if test="rmk5 != null" >
        rmk5,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="modelId != null" >
        #{modelId,jdbcType=VARCHAR},
      </if>
      <if test="name != null" >
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="time != null" >
        #{time,jdbcType=DATE},
      </if>
      <if test="createName != null" >
        #{createName,jdbcType=VARCHAR},
      </if>
      <if test="rmk2 != null" >
        #{rmk2,jdbcType=VARCHAR},
      </if>
      <if test="rmk3 != null" >
        #{rmk3,jdbcType=VARCHAR},
      </if>
      <if test="rmk4 != null" >
        #{rmk4,jdbcType=VARCHAR},
      </if>
      <if test="rmk5 != null" >
        #{rmk5,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.sl.example.pojo.Model" >
    update t_gr_qsn_model
    <set >
      <if test="name != null" >
        name = #{name,jdbcType=VARCHAR},
      </if>
      <if test="time != null" >
        time = #{time,jdbcType=DATE},
      </if>
      <if test="createName != null" >
        create_name = #{createName,jdbcType=VARCHAR},
      </if>
      <if test="rmk2 != null" >
        rmk2 = #{rmk2,jdbcType=VARCHAR},
      </if>
      <if test="rmk3 != null" >
        rmk3 = #{rmk3,jdbcType=VARCHAR},
      </if>
      <if test="rmk4 != null" >
        rmk4 = #{rmk4,jdbcType=VARCHAR},
      </if>
      <if test="rmk5 != null" >
        rmk5 = #{rmk5,jdbcType=VARCHAR},
      </if>
    </set>
    where model_id = #{modelId,jdbcType=VARCHAR}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.sl.example.pojo.Model" >
    update t_gr_qsn_model
    set name = #{name,jdbcType=VARCHAR},
      time = #{time,jdbcType=DATE},
      create_name = #{createName,jdbcType=VARCHAR},
      rmk2 = #{rmk2,jdbcType=VARCHAR},
      rmk3 = #{rmk3,jdbcType=VARCHAR},
      rmk4 = #{rmk4,jdbcType=VARCHAR},
      rmk5 = #{rmk5,jdbcType=VARCHAR}
    where model_id = #{modelId,jdbcType=VARCHAR}
  </update>
</mapper>
AI 代码解读

我们来试验一下。


img_aaf25921d88f73856d704c481b9e701d.gif
1.gif

成功啦,下一节我们讲对应某一套题目模板下的题目的增删。

目录
打赏
0
0
0
0
3
分享
相关文章
ssm026校园美食交流系统(文档+源码)_kaic
本文介绍了基于Java语言和MySQL数据库的校园美食交流系统的设计与实现。该系统采用B/S架构和SSM框架,旨在提高校园美食信息管理的效率与便捷性。主要内容包括:系统的开发背景、目的及内容;对Java技术、MySQL数据库、B/S结构和SSM框架的介绍;系统分析部分涵盖可行性分析、性能分析和功能需求分析;最后详细描述了系统各功能模块的具体实现,如登录、管理员功能(美食分类管理、用户管理等)和前台首页功能。通过此系统,管理员可以高效管理美食信息,用户也能方便地获取和分享美食资讯,从而提升校园美食交流的管理水平和用户体验。
weixin050高校体育场管理系统+ssm(文档+源码)_kaic
本文针对高校体育场管理系统的开发与实现进行详细介绍。随着经济快速发展,人们对手机软件需求增加,高校体育场管理系统应运而生。系统采用JAVA技术、Mysql数据库和SSM框架等成熟技术,通过分析功能需求、可行性及性能,设计出包含管理员、用户和学生角色的功能模块。系统实现用户注册登录、信息管理等功能,简化传统手工统计模式,提高管理效率,满足用户对信息获取的及时性与准确性需求。
weixin050高校体育场管理系统+ssm(文档+源码)_kaic
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
45 17
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
63 19
[Java计算机毕设]基于ssm的OA办公管理系统的设计与实现,附源码+数据库+论文+开题,包安装调试
OA办公管理系统是一款基于Java和SSM框架开发的B/S架构应用,适用于Windows系统。项目包含管理员、项目管理人员和普通用户三种角色,分别负责系统管理、请假审批、图书借阅等日常办公事务。系统使用Vue、HTML、JavaScript、CSS和LayUI构建前端,后端采用SSM框架,数据库为MySQL,共24张表。提供完整演示视频和详细文档截图,支持远程安装调试,确保顺利运行。
56 17
基于ssm的网络直播带货管理系统,附源码+数据库+论文
该项目为网络直播带货网站,包含管理员和用户两个角色。管理员可进行主页、个人中心、用户管理、商品分类与信息管理、系统及订单管理;用户可浏览主页、管理个人中心、收藏和订单。系统基于Java开发,采用B/S架构,前端使用Vue、JSP等技术,后端为SSM框架,数据库为MySQL。项目运行环境为Windows,支持JDK8、Tomcat8.5。提供演示视频和详细文档截图。
46 10
基于ssm的台球厅管理系统,附源码+数据库+论文
本项目为新锐台球厅管理系统,支持管理员和会员两种角色。管理员可进行会员管理、台球桌管理、订单管理等;会员可查看台球桌、预约、购买商品等。技术框架基于Java,采用B/S架构,前端使用Vue+HTML+JavaScript+CSS+LayUI,后端使用SSM框架,数据库为MySQL。运行环境为Windows,JDK8+MySQL5.7+Tomcat8.5。提供演示视频及详细文档截图。
ssm064农产品仓库管理系统系统(文档+源码)_kaic
农产品仓库管理系统基于现代经济快速发展和信息化技术的升级,采用SSM框架、Java语言及Mysql数据库开发。系统旨在帮助管理者高效处理大量数据信息,提升事务处理效率,实现数据管理的科学化与规范化。该系统涵盖物资基础数据管理、出入库订单管理等功能,界面简洁美观,符合用户操作习惯,并提供数据安全解决方案,确保信息的安全性和可靠性。通过自动化和集中处理,系统显著提高了仓库管理的效率和准确性。
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件
这篇文章介绍了如何在Mac系统下配置Java JDK、Maven和Tomcat的环境变量,包括配置文件的选择、解决环境变量在zsh shell中无效的问题、查看和设置系统环境变量的方法,以及JDK和Maven的下载、配置和测试步骤。
1962 1
Mac系统下配置环境变量:Javajdk、maven、tomcat 环境变量配置及对应配置文件

热门文章

最新文章

推荐镜像

更多