springboot+mybatisplus+layui+restful实现弹出层异步提交表单

简介: springboot+mybatisplus+layui+restful实现弹出层异步提交表单

1.News.java

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sys_news")
@ToString
public class News implements Serializable {
    private static final long serialVersionUID=1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private String title;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date newstime;
    private String content;
}

2.NewsVo.java

@Data
@EqualsAndHashCode(callSuper = false)
public class NewsVo extends News {
    private Integer page=1;
    private Integer limit=10;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
}

3.ResultObj.java

@Data
@AllArgsConstructor
@NoArgsConstructor
public class ResultObj {
  //添加或者失败的提示消息
  private Integer code;
    private String msg;
}

4.NewsService.java

public interface NewsService extends IService<News> {
}

5.NewsServiceImpl.java

@Service
@Transactional
public class NewsServiceImpl extends ServiceImpl<NewsMapper, News> implements NewsService {
}

6.NewsMapper.java


@Mapper
public interface NewsMapper extends BaseMapper<News> {
}


7.NewsController.java


@RestController
@RequestMapping("news")
public class NewsController {
    @Autowired
    private NewsService newsService;
  /**
     * 添加新闻 addNews
     */
    @RequestMapping("addNews")
    public ResultObj addNews(NewsVo newsVo){
        boolean save = newsService.save(newsVo);
        if (save = true){
            return new ResultObj(200,"添加成功!");
        }else {
            return new ResultObj(-1,"添加失败!");
        }
    }
}


8.页面

<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="utf-8">
  <title>首页--工作台</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="apple-mobile-web-app-status-bar-style" content="black">
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="format-detection" content="telephone=no">
  <link rel="stylesheet" th:href="@{/resources/layui/css/layui.css}" media="all" />
  <link rel="stylesheet" th:href="@{/resources/css/public.css}" media="all" />
</head>
<body class="childrenBody">
  <!--表单开始-->
  <form class="layui-form" id="searchFrm" method="post" action="">
    <!--搜索框-->
    <div class="layui-inline">
      <label class="layui-form-label">按开始日期</label>
      <div class="layui-input-inline">
        <input type="text" name="startDate" id="startDate"  placeholder="yyyy-MM-dd"  class="layui-input">
      </div>
    </div>
    <div class="layui-inline">
      <label class="layui-form-label">按结束日期</label>
      <div class="layui-input-inline">
        <input type="text" name="endDate" id="endDate"  placeholder="yyyy-MM-dd"  class="layui-input">
      </div>
    </div>
    <div class="layui-form-item">
      <div class="layui-inline">
        <label class="layui-form-label">单选下拉框</label>
        <div class="layui-input-inline">
          <select name="typeid" id="search_typeid">
            <option value="1">请选择</option>
          </select>
        </div>
      </div>
    </div>
    <div class="layui-form-item">
      <div class="layui-input-block">
        <button type="button" class="layui-btn" lay-submit="" lay-filter="doSearch">查询</button>
        <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        <button type="button" id="doAdd" class="layui-btn layui-btn-primary">添加</button>
      </div>
    </div>
  </form>
  <!--表格容器-->
  <table id="demo" lay-filter="test"></table>
  <!--表格容器结束-->
  <!--添加新闻数据的弹出层开始-->
  <div id="addNewsDiv" style="display: none;">
    <form id="dataFrm" method="post" class="layui-form" action="">
      <div class="layui-form-item">
        <label class="layui-form-label">标题</label>
        <div class="layui-input-block">
          <input type="text" name="title"  placeholder="请输入标题" autocomplete="off" class="layui-input">
        </div>
        <div class="layui-inline">
          <label class="layui-form-label">按结束日期</label>
          <div class="layui-input-inline">
            <input type="text" name="endDate" id="newstime"  placeholder="yyyy-MM-dd"  class="layui-input">
          </div>
        </div>
      </div>
      <div class="layui-form-item layui-form-text">
        <label class="layui-form-label">内容文本域</label>
        <div class="layui-input-block">
          <textarea name="content" placeholder="请输入内容" class="layui-textarea"></textarea>
        </div>
      </div>
      <div class="layui-form-item">
        <div class="layui-input-block">
          <button  class="layui-btn" lay-submit lay-filter="doSubmit">立即提交</button>
          <button type="reset" class="layui-btn layui-btn-primary">重置</button>
        </div>
      </div>
    </form>
  </div>
  <!--添加数据的弹出层结束-->
  <script type="text/javascript" th:src="@{/resources/layui/layui.js}"></script>
  <script type="text/javascript">
    //加载layui
    layui.use(['form','element','layer','laydate','jquery','table'],function(){
      var laydate = layui.laydate;
      var form = layui.form, $ = layui.jquery;
      var table = layui.table;
      //第一个实例
      var tableIns = table.render({
        elem: '#demo'
        ,height: 312
        ,url: '/news/listNews' //数据接口
        ,page: true //开启分页
        ,cols: [ [ //表头
          {field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'}
          ,{field: 'title', title: '用户名', width:80}
          ,{field: 'content', title: '性别', width:80, sort: true}
        ] ]
      });
      //绑定时间选择器
      laydate.render({
        elem:'#newstime',
        type:'datetime'
      });
      //获取到 初始化下拉查询列表
      $.get("/type/loadAllType",function (objs) {
        var types = objs.data;
        var search_typeid = $("#search_typeid");
        $.each(types,function (index,item) {
          //追加数据
          search_typeid.append("<potion value="+item.id+">"+item.name+"</potion>");
        });
        //重新渲染
        form.render("select");
      });
      //模糊查询
      form.on("submit(doSearch)",function (data) {
        //ajax方式发送数据
        $.post("/news/listNews",data.field,function () {
          tableIns.reload({
            url:'/news/listNews',
            where:data.field
          });
        return false;
        });
        //添加弹出层
        var mainIndex;
        $("#doAdd").on("click",function () {
          mainIndex = layer.open({
            type:1,
            content:$("#addNewsDiv"),
            area:['500px','600px']
            //弹出层加载成功之后success:function(获取div追加数据){}
          })
        });
        //监控提交弹出层的按钮
        form.on("submit(doSubmit)",function (data) {
          //发送数据
          $.post("/news/addNews",data.field,function (res) {
            layer.msg(res.msg); //弹出来看看结果
            if(res.code==200){ //添加成功,询问是否关闭
              layer.confirm('是否要关闭?',{
                btn: ['继续','取消']
              },function () {
                $("#dataFrm")[0].reset();
              },function () {//关闭弹窗
                layer.close(mainIndex);
              });
            }
            //无论成功还是失败,父页面 要刷新
            tableIns.reload();
          });
          return false;
        });
      });
    });
  </script>
</body>
</html>


目录
相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
48 4
|
2月前
|
Java API 数据库
如何使用Spring Boot构建RESTful API,以在线图书管理系统为例
【10月更文挑战第9天】本文介绍了如何使用Spring Boot构建RESTful API,以在线图书管理系统为例,从项目搭建、实体类定义、数据访问层创建、业务逻辑处理到RESTful API的实现,详细展示了每个步骤。通过Spring Boot的简洁配置和强大功能,开发者可以高效地开发出功能完备、易于维护的Web应用。
63 3
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
374 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
100 1
|
2月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
145 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
3月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
3月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
JSON Java 测试技术
springboot统一表单数据校验
统一表单数据校验 在开发中经常需要写一些字段校验的代码,比如字段非空,字段长度限制,邮箱格式验证等等,写这些与业务逻辑关系不大的代码个人感觉有两个麻烦: 验证代码繁琐,重复劳动 方法内代码显得冗长 每次要看哪些参数验证是否完整,需要去翻阅验证逻辑代码 hibernate validator(官方文档)提供了一套比较完善、便捷的验证实现方式。
1892 0
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
162 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
104 62