layui+SSM的数据表的增删改实例(利用弹框添加、修改)

本人前端知识相当于小白,初学SSM时,了解了layui前端框架,所以开始研究了数据表的增删改查,由于js、ajax知识不是很好,所以百度了相关ajax操作,用以借鉴。希望能帮助有需要的初学者,不喜勿喷,另外有相关不足,希望大家可以指出,谢谢!

注: 以下前端代码都是利用layui的框架,后台是SSM

前端:

<%--
 Created by IntelliJ IDEA.
 User: SL
 Date: 2019/2/26
 Time: 14:03
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType=\"text/html;charset=UTF-8\" language=\"java\" %>
<html>
<head>
 <meta charset=\"utf-8\">
 <meta name=\"viewport\"
   content=\"width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\">
 <title>layui在线调试</title>
 <link rel=\"stylesheet\" href=\"${ctx}/static/layui/css/layui.css?t=1545041465443\" rel=\"external nofollow\" media=\"all\">
 <script src=\"${ctx}/static/jquery/jquery-3.3.1.js\"></script>
 <style>
  body {
   margin: 10px;
  }

  .demo-carousel {
   height: 200px;
   line-height: 200px;
   text-align: center;
  }
 </style>
</head>
<body>

<table class=\"layui-hide\" id=\"demo\" lay-filter=\"test\"></table>

<script type=\"text/html\" id=\"barDemo\">
 <a class=\"layui-btn layui-btn-primary layui-btn-xs\" lay-event=\"detail\">查看</a>
 <a class=\"layui-btn layui-btn-xs\" lay-event=\"edit\">编辑</a>
 <a class=\"layui-btn layui-btn-danger layui-btn-xs\" lay-event=\"del\">删除</a>
</script>


<script src=\"${ctx}/static/layui/layui.js?t=1545041465443\" charset=\"utf-8\"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 -->
<script>
 layui.config({
  version: \'1545041465443\' //为了更新 js 缓存,可忽略
 });

 layui.use([\'layer\', \'table\', \'element\'], function () {
  var layer = layui.layer //弹层
   , table = layui.table //表格
   , element = layui.element //元素操作
   , form = layui.form


  //监听Tab切换
  element.on(\'tab(demo)\', function (data) {
   layer.tips(\'切换了 \' + data.index + \':\' + this.innerHTML, this, {
    tips: 1
   });
  });

  //执行一个 table 实例
  table.render({
   elem: \'#demo\'
   , height: 420
   , url: \'${ctx}/news/main/\' //数据接口
   , title: \'新闻表\'
   , page: true //开启分页
   , toolbar: \'default\' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
   , totalRow: true //开启合计行
   , cols: [[ //表头
    {type: \'checkbox\', fixed: \'left\'}
    , {field: \'id\', title: \'新闻编号\', width: 30, sort: true, fixed: \'left\'}
    , {field: \'title\', title: \'新闻名称\', width: 180}
    , {field: \'summary\', title: \'新闻摘要\', width: 180}
    , {field: \'author\', title: \'作者\', width: 70}
    , {field: \'createDate\', title: \'创建时间\', width: 100}
    , {fixed: \'right\', width: 165, align: \'center\', toolbar: \'#barDemo\'}
   ]]
  });

  //监听头工具栏事件
  table.on(\'toolbar(test)\', function (obj) {
   var checkStatus = table.checkStatus(obj.config.id)
    , data = checkStatus.data; //获取选中的数据
   switch (obj.event) {
    case \'add\':
     /*layer.msg(\'添加\');*/
     layer.open({
      //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
      type: 1,
      title: \"添加新闻信息\",
      area: [\'420px\', \'330px\'],
      content: $(\"#popAddTest\")//引用的弹出层的页面层的方式加载修改界面表单
     });
     //动态向表传递赋值可以参看文章进行修改界面的更新前数据的显示,当然也是异步请求的要数据的修改数据的获取
     /*setFormValue(obj,data);*/
     form.on(\'submit(submit12)\', function (massage) {

      $.ajax({
       url: \'${ctx}/news/add/\',
       type: \'POST\',
       dataType: \'json\',
       contentType: \"application/json; charset=utf-8\",
       data: JSON.stringify({
        /*id: JSON.stringify(data.id),*/
        id: data.id,
        newtitle: massage.field.newtitle,
        newsummary: massage.field.newsummary,
        newauthor: massage.field.newauthor
       }),
       success: function (msg) {
        var returnCode = msg.returnCode;//取得返回数据(Sting类型的字符串)的信息进行取值判断
        if (returnCode == 200) {
         layer.closeAll(\'loading\');
         layer.load(2);
         layer.msg(\"添加成功\", {icon: 6});
         setTimeout(function () {
           location.reload();//刷新页面
           /* layer.closeAll();//关闭所有的弹出层*/
          },
          1000
         );
         //加载层-风格
        } else {
         layer.msg(\"添加失败\", {icon: 5});
        }
       }
      })
      return false;//false:阻止表单跳转 true:表单跳转
     })
     break;
    case \'update\':
     if (data.length === 0) {
      layer.msg(\'请选择一行\');
     } else if (data.length > 1) {
      layer.msg(\'只能同时编辑一个\');
     } else {
      layer.alert(\'编辑 [id]:\' + checkStatus.data[0].id);
     }
     break;
    case \'delete\':  /*批量删除*/
     if (data.length === 0) {
      layer.msg(\'请选择需要删除的数据\');
     } else {
      /*layer.msg(\'删除\');*/
      /* var checkStatus = table.checkStatus(\'demo\');*/
      var ids = \"\";
      for(var i=0;i<data.length;i++){
       ids += data[i].id+\",\";
      }
      alert(ids);
      parent.layer.msg(\'删除中...\', {icon: 16,shade: 0.3,time:2000});
      $.ajax({
       url: \'${ctx}/news/mulDelete/\',
       type: \'POST\',
       dataType: \'json\',
       contentType: \"application/json; charset=utf-8\",
       data: JSON.stringify({
        /*id: JSON.stringify(data.id),*/
        ids: ids
       }),
       success: function (msg) {
        var returnCode = msg.returnCode;//取得返回数据(Sting类型的字符串)的信息进行取值判断
        if (returnCode == 200) {
         layer.closeAll(\'loading\');
         layer.load(2);
         layer.msg(\"删除成功\", {icon: 6});
         setTimeout(function () {
           location.reload();//刷新页面
           /* layer.closeAll();//关闭所有的弹出层*/
          },
          1000
         );
         //加载层-风格
        } else {
         layer.msg(\"删除失败\", {icon: 5});
        }
       }
      })
      return false;//false:阻止表单跳转 true:表单跳转
     }
     break;
   }
   ;
  });

  //监听行工具事件
  table.on(\'tool(test)\', function (obj) { //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter=\"对应的值\"
   var data = obj.data //获得当前行数据
    , layEvent = obj.event; //获得 lay-event 对应的值
   if (layEvent === \'detail\') {
    layer.msg(\'查看操作\');
   } else if (layEvent === \'del\') {
    /*layer.confirm(\'真的删除行么\', function(index){
     obj.del(); //删除对应行(tr)的DOM结构
     layer.close(index);
     //向服务端发送删除指令

    });*/

    layer.confirm(\'真的删除行么\', function (index) {
     obj.del(); //删除对应行(tr)的DOM结构
     layer.close(index);
     //向服务端发送删除指令
     $.ajax({
      url: \'${ctx}/news/delete/\'
      , type: \'POST\'
      , data: \"{\\\"id\\\":\\\"\" + data.id + \"\\\"}\"
      , dataType: \'json\'
      , contentType: \"application/json; charset=utf-8\"
      , success: function (msg) {
       var returnCode = msg.returnCode;//取得返回数据(Sting类型的字符串)的信息进行取值判断
       if (returnCode == 200) {
        layer.closeAll(\'loading\');
        layer.load(2);
        layer.msg(\"删除成功\", {icon: 6});
        setTimeout(function () {
          location.reload();//刷新页面
          /* layer.closeAll();//关闭所有的弹出层*/
         },
         1000
        );
        //加载层-风格
       } else {
        layer.msg(\"删除失败\", {icon: 5});
       }
      }
     });
     return false;
    });


   } else if (layEvent === \'edit\') {
    /* layer.prompt({
      formType: 2
      ,value: data.summary
     }, function(value, index){
      obj.update({
       summary: value
      });
      layer.close(index);
     });*/

    $(\"#newtitle\").val(data.title);
    $(\"#newsummary\").val(data.summary);
    $(\"#newauthor\").val(data.author);

    layer.open({
     //layer提供了5种层类型。可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层)
     type: 1,
     title: \"修改新闻信息\",
     area: [\'420px\', \'330px\'],
     content: $(\"#popUpdateTest\")//引用的弹出层的页面层的方式加载修改界面表单
    });
    //动态向表传递赋值可以参看文章进行修改界面的更新前数据的显示,当然也是异步请求的要数据的修改数据的获取
    /*setFormValue(obj,data);*/
    form.on(\'submit(submit11)\', function (massage) {

     $.ajax({
      url: \'${ctx}/news/update/\',
      type: \'POST\',
      dataType: \'json\',
      contentType: \"application/json; charset=utf-8\",
      data: JSON.stringify({
       /*id: JSON.stringify(data.id),*/
       id: data.id,
       newtitle: massage.field.newtitle,
       newsummary: massage.field.newsummary,
       newauthor: massage.field.newauthor
      }),
      success: function (msg) {
       var returnCode = msg.returnCode;//取得返回数据(Sting类型的字符串)的信息进行取值判断
       if (returnCode == 200) {
        layer.closeAll(\'loading\');
        layer.load(2);
        layer.msg(\"修改成功\", {icon: 6});
        setTimeout(function () {
          obj.update({
           title: massage.field.newtitle,
           summary: massage.field.newsummary,
           author: massage.field.newauthor
          });//修改成功修改表格数据不进行跳转
          location.reload();//刷新页面
          /* layer.closeAll();//关闭所有的弹出层*/
         },
         1000
        );
        //加载层-风格
       } else {
        layer.msg(\"修改失败\", {icon: 5});
       }
      }
     })
     return false;//false:阻止表单跳转 true:表单跳转
    })
   }
  });

 });
</script>

<%--这里是弹出层表单(修改)--%>
<div class=\"layui-row\" id=\"popUpdateTest\" style=\"display:none;\">
 <div class=\"layui-col-md10\">
  <form class=\"layui-form layui-from-pane\" action=\"\" style=\"margin-top:20px\" method=\"\">
   <div class=\"layui-form-item\"><label class=\"layui-form-label\">新闻标题</label>
    <div class=\"layui-input-block\"><input type=\"text\" name=\"newtitle\" id=\"newtitle\"
              autocomplete=\"off\" placeholder=\"请输入新闻标题\" class=\"layui-input\">
    </div>
   </div>
   <div class=\"layui-form-item\"><label class=\"layui-form-label\">新闻摘要</label>
    <div class=\"layui-input-block\"><input type=\"text\" name=\"newsummary\" id=\"newsummary\"
              autocomplete=\"off\" placeholder=\"请输入新闻编号\" class=\"layui-input\">
    </div>
   </div>
   <div class=\"layui-form-item\"><label class=\"layui-form-label\">作者</label>
    <div class=\"layui-input-block\"><input type=\"text\" name=\"newauthor\" id=\"newauthor\"
              autocomplete=\"off\" placeholder=\"请输入作者\" class=\"layui-input\">
    </div>
   </div>
   <div class=\"layui-form-item\" style=\"margin-top:40px\">
    <div class=\"layui-input-block\">
     <button class=\"layui-btn layui-btn-submit \" lay-submit=\"\" lay-filter=\"submit11\">确认修改</button>
     <button type=\"reset\" class=\"layui-btn layui-btn-primary\">重置</button>
    </div>
   </div>
  </form>
 </div>
</div>


<%--这里是弹出层表单(添加)--%>
<div class=\"layui-row\" id=\"popAddTest\" style=\"display:none;\">
 <div class=\"layui-col-md10\">
  <form class=\"layui-form layui-from-pane\" action=\"\" style=\"margin-top:20px\" method=\"\">
   <div class=\"layui-form-item\"><label class=\"layui-form-label\">新闻标题</label>
    <div class=\"layui-input-block\"><input type=\"text\" name=\"newtitle\"
              autocomplete=\"off\" placeholder=\"请输入新闻标题\" class=\"layui-input\">
    </div>
   </div>
   <div class=\"layui-form-item\"><label class=\"layui-form-label\">新闻摘要</label>
    <div class=\"layui-input-block\"><input type=\"text\" name=\"newsummary\"
              autocomplete=\"off\" placeholder=\"请输入新闻编号\" class=\"layui-input\">
    </div>
   </div>
   <div class=\"layui-form-item\"><label class=\"layui-form-label\">作者</label>
    <div class=\"layui-input-block\"><input type=\"text\" name=\"newauthor\"
              autocomplete=\"off\" placeholder=\"请输入作者\" class=\"layui-input\">
    </div>
   </div>
   <div class=\"layui-form-item\" style=\"margin-top:40px\">
    <div class=\"layui-input-block\">
     <button class=\"layui-btn layui-btn-submit \" lay-submit=\"\" lay-filter=\"submit12\">确认添加</button>
     <button type=\"reset\" class=\"layui-btn layui-btn-primary\">重置</button>
    </div>
   </div>
  </form>
 </div>
</div>
</body>
</html>


后台:

package com.sl.controller;

import com.sl.model.NewsDetail;
import com.sl.service.NewsDetailService;
import com.sl.util.DateUtil;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@Controller
@RequestMapping(\"/news\")
public class NewsDetailController {

 /*注入NewsDetailService*/
 /**
  *
  */
 @Autowired
 private NewsDetailService newsDetailService;

 @RequestMapping(\"/main\")
 @ResponseBody
 private Map<String, Object> queryAll() {
  Map<String, Object> map = new HashMap<>();
  List<NewsDetail> list = newsDetailService.queryAll();
  int count = newsDetailService.queryAllCount();
  map.put(\"data\", list);
  map.put(\"code\", 0);
  map.put(\"count\", count);

  return map;
 }


 @RequestMapping(value = \"/delete\", method = RequestMethod.POST, produces = \"application/json\")
 @ResponseBody
 private Map<String, Object> deleteById(@RequestBody HashMap<String, String> map2) {
  Map<String, Object> map = new HashMap<>();
  int id = Integer.parseInt(map2.get(\"id\"));
  int row = newsDetailService.deleteById(id);
  if (row == 1) {
   List<NewsDetail> list = newsDetailService.queryAll();
   int count = newsDetailService.queryAllCount();
   map.put(\"data\", list);
   map.put(\"returnCode\", \"200\");
   map.put(\"count\", count);
   map.put(\"code\", 0);
   return map;
  } else {
   map.put(\"code\", 1);
   return map;
  }
 }

 @RequestMapping(value = \"/mulDelete\", method = RequestMethod.POST, produces = \"application/json\")
 @ResponseBody
 public Map<String, Object> mulDelete(@RequestBody HashMap<String, String> map2){
  Map<String, Object> map = new HashMap<>();

  String ids = map2.get(\"ids\");
  String mulid[] = ids.split(\",\");
  int row = 0;
  for(int i=0; i<mulid.length; i++){
   row = newsDetailService.mulDelete(mulid[i]);
  }

  if(row != 0){
   List<NewsDetail> list = newsDetailService.queryAll();
   int count = newsDetailService.queryAllCount();
   map.put(\"code\", 0);
   map.put(\"data\", list);
   map.put(\"count\", count);
   map.put(\"returnCode\", \"200\");
   return map;
  } else {
   map.put(\"code\", -1);
   return map;
  }
 }

 @RequestMapping(value = \"/update\", method = RequestMethod.POST, produces = \"application/json\")
 @ResponseBody
 public Map<String, Object> updateById(@RequestBody HashMap<String, String> map2) throws IOException {
  Map<String, Object> map = new HashMap<>();

  int id = Integer.parseInt(map2.get(\"id\"));
  String title = map2.get(\"newtitle\");
  String summary = map2.get(\"newsummary\");
  String author = map2.get(\"newauthor\");
  /*System.out.println(id+\" \"+title +\" \"+summary+\" \"+author);
  System.out.println(1);
  System.out.println(new Date());
  System.out.println(DateUtil.getCurrentDateString());
  System.out.println(2);*/
  NewsDetail newsDetail = new NewsDetail();
  newsDetail.setId(id);
  newsDetail.setTitle(title);
  newsDetail.setSummary(summary);
  newsDetail.setAuthor(author);
  newsDetail.setCreateDate(DateUtil.formatDate(new Date(), \"yyyy-MM-dd HH-mm-ss\"));
  /*System.out.println(newsDetail.getCreateDate());
  System.out.println(DateUtil.formatDate(new Date(), \"yyyy-MM-dd HH-mm-ss\"));*/

  int row = newsDetailService.updateById(newsDetail);
  if (row == 1) {
   List<NewsDetail> list = newsDetailService.queryAll();
   int count = newsDetailService.queryAllCount();
   map.put(\"data\", list);
   map.put(\"count\", count);
   map.put(\"code\", 0);
   map.put(\"returnCode\", \"200\");
   return map;
  } else {
   map.put(\"code\", 1);
   return map;
  }
 }

 @RequestMapping(\"/update2\")
 @ResponseBody
 public Map<String, Object> update2(NewsDetail newsDetail) {
  Map<String, Object> map = new HashMap<>();
  /*newsDetail.setCreateDate(new Date());*/
  int row = newsDetailService.updateById(newsDetail);
  if (row == 1) {
   List<NewsDetail> list = newsDetailService.queryAll();
   int count = newsDetailService.queryAllCount();
   map.put(\"data\", list);
   map.put(\"count\", count);
   map.put(\"code\", 0);
   return map;
  } else {
   map.put(\"code\", 1);
   return map;
  }

 }

 @RequestMapping(\"/add\")
 @ResponseBody
 public Map<String, Object> add(@RequestBody HashMap<String, String> map2) {
  Map<String, Object> map = new HashMap<>();
  String title = map2.get(\"newtitle\");
  String summary = map2.get(\"newsummary\");
  String author = map2.get(\"newauthor\");
  NewsDetail newsDetail = new NewsDetail();
  newsDetail.setTitle(title);
  newsDetail.setSummary(summary);
  newsDetail.setAuthor(author);
  newsDetail.setCreateDate(DateUtil.formatDate(new Date(), \"yyyy-MM-dd HH-mm-ss\"));
  boolean row = newsDetailService.addNews(newsDetail);
  if (row) {
   List<NewsDetail> list = newsDetailService.queryAll();
   int count = newsDetailService.queryAllCount();
   map.put(\"data\", list);
   map.put(\"count\", count);
   map.put(\"returnCode\", \"200\");
   map.put(\"code\", 0);
   return map;
  } else {
   map.put(\"code\", 1);
   return map;
  }
 }

}


亲测有效,希望大家提出不足!谢谢!另外后台里面有一个时间转换的类(DateUtil.formatDate()),前端有一个例如url: \’${ctx}/news/update/\’,其中的${cxt}是一个指定的路径,后台写了一个类,这些有需要的,可以看我的博客,谢谢!

以上这篇layui+SSM的数据表的增删改实例(利用弹框添加、修改)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容