layui框架与SSM前后台交互的方法

采用layui前台框架实现前后台交互,数据分页显示以及删除操作,具体方式如下:

一、数据分页显示

1.前端

(1)html页面

<!--轮播数据分页显示-->
<table class=\"layui-hide\" id=\"content_lbt\" lay-filter=\"content_lbt_filter\"></table>

(2)请求渲染数据

$(function() {
 /*轮播数据分页显示*/
 layui.use([\'table\', \'update\'], function() {
 var table = layui.table,
  upload = layui.upload;
 
 table.render({
  elem: \'#content_lbt\',
  height: 500
  //,url: \'data/content_lbt.json\' //数据接口
  ,
  url: \'http://localhost:9911/cms/queryCarouselList\' //数据接口
  ,
  page: true //开启分页
  ,
  loading: true,//分页查询是否显示等待图标
  text: {//若查询记录为空,执行此操作
  none: \'暂无相关数据\'
  } //默认:无数据。注:该属性为 layui 2.2.5 开始新增
  ,
  cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增
  ,
  cols: [
  [{
   field: \'id\',
   width: \'10%\',
   title: \'ID\',
   sort: true
  }, {
   field: \'posterId\',
   width: \'10%\',
   title: \'上传者ID\',
   sort: true
  }, {
   field: \'posterName\',
   width: \'15%\',
   title: \'上传者姓名\'
  }, {
   field: \'description\',
   width: \'28%\',
   title: \'描述\',
   minWidth: 200
  }, {
   field: \'photoPath\',
   width: \'10%\',
   title: \'图片\',
   minWidth: 100
  }, {
   field: \'createTime\',
   width: \'10%\',
   title: \'上传时间\',
   minWidth: 100
  }]
  ],
  request: {
  pageName: \'page\',
  limitName: \'size\'
  },
  limit: 10,
  limits: [10, 20, 30, 40, 50]
 });
   });

2.后端

后端采用SpringBoot,利用SSM框架

(1)mapper:(注意@Mapper注解)

/**
   * 查询所有轮播图信息
   *
   * @return
   */
  List<Carousel> queryCarousel(@Param(\"start\") Integer start, @Param(\"size\") Integer size);
 
  /**
   * 查询轮播记录条数
   *
   * @return
   */
  Integer countCarousel();

注意po类采用驼峰式写法

<select id=\"queryCarousel\" resultType=\"com.jingling.basic.po.Carousel\">
     SELECT id, poster_id AS posterId, poster_name AS posterName, description AS description , photo_path AS photoPath, create_time AS createTime
     FROM carousel
     LIMIT #{start}, #{size}
  </select>
 
  <select id=\"countCarousel\" resultType=\"int\">
    SELECT COUNT(*) FROM carousel
  </select>

(2)service

  /**
   * 查询全部轮播信息
   *
   * @return
   */
  List<Carousel> queryCarousel(Integer page,Integer size);
 
  /**
   * 查询轮播记录条数
   *
   * @return
   */
  Integer countCarousel();

(3)serviceImpl(注意要有@Service注解)

 @Autowired
  private CarouselMapper carouselMapper;
 
  @Override
  public List<Carousel> queryCarousel(Integer page,Integer size) {
    if(page == null || page <= 0){
      page = 1;
    }
    if (size == null || size <= 0){
      size = 10;
    }
 
    Integer start = (page - 1) * size;
    return carouselMapper.queryCarousel(start,size);
  }
 
  @Override
  public Integer countCarousel() {
    return carouselMapper.countCarousel();
  }

(4)Controller(注意要有@RequestController注解)

@RestController
@RequestMapping(\"/cms\")
  @Autowired
  public CmsService cmsService;
 
  /**
   * 查询轮播图信息
   *
   * @return
   */
  @GetMapping(\"/queryCarouselList\")
  public Object queryCarouselList(HttpServletResponse response, @RequestParam(\"page\") Integer page, @RequestParam(\"size\") Integer size){
    response.setHeader(\"Access-Control-Allow-Origin\", \"*\");//解决跨域的问题
    List<Carousel> carouselList = cmsService.queryCarousel(page,size);
    if (carouselList == null){
      return RecycleResult.build(500,\"轮播图为空\");
    }
    //return RecycleResult.ok(carouselList);
    //return carouselList;
    Integer count = cmsService.countCarousel();
    return new LayuiReplay<Carousel>(0, \"OK\", count, carouselList);
  }

二、删除操作

1.前端

<script type=\"text/html\" id=\"barDemo\">
  <a class=\"layui-btn 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>
                {
   fixed: \'right\',
   width: \'15%\',
   align: \'center\',
   title: \'操作\',
   toolbar: \'#barDemo\'
  }
   fixed: \'right\',
   width: \'15%\',
   align: \'center\',
   title: \'操作\',
   toolbar: \'#barDemo\'
  }
//监听工具条
 table.on(\'tool(content_lbt_filter)\', 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结构
   delCarouselById(data.id);
   layer.close(index);
   //向服务端发送删除指令
  });
  }
  /*else if(layEvent === \'edit\'){
    layer.msg(\'编辑操作\');
   }*/
 });
 
 
 //删除记录
 function delCarouselById(id) {
  $.get(\"http://localhost:9911/cms/delCarouselById?id=\" + id,
  function(data, status) {
   layer.msg(\'删除成功\');
  });
 }

2.后端(此处仅显示controller层和mapper)

 @GetMapping(\"/delCarouselById\")
  public RecycleResult delCarouselById(HttpServletResponse response,@RequestParam(\"id\") Integer id){
    response.setHeader(\"Access-Control-Allow-Origin\", \"*\");
    cmsService.delCarouselById(id);
    return RecycleResult.ok();
  }
<delete id=\"delCarouselById\">
    DELETE FROM carousel
    WHERE id = #{id}
  </delete>

补充LayuiReplay类(其中get、set方法省略)

public class LayuiReplay <T> {
  private int code;
  private String msg;
  private int count;
  private List<T> data;
 
  public LayuiReplay(int code, String msg, int count, List<T> data) {
    this.code = code;
    this.msg = msg;
    this.count = count;
    this.data = data;
  }
 
  public String toJson() {
    Gson gson = new Gson();
    String json = gson.toJson(this);
    return json;
  }
 
  public static <T> String toJson(int count, List<T> data) {
    LayuiReplay<T> replay = new LayuiReplay<>(ReplyCode.OK.getCode(), ReplyCode.OK.getMessage(), count, data);
    return replay.toJson();
  }
}

补充ReplyCode.java枚举类

public enum ReplyCode {
  NOT_LOGIN(-1,\"您尚未登录或登录时间过长,请重新登录或刷新页面!\"),
  OK(0, \"OK\"),
  WRONG_URL(400,\"请求路径错误\"),
  WRONG_ROLE(401, \"身份错误\"),
  REQUEST_FAILED(500, \"请求失败,请重试\"),
  NULL_ATTR(30,\"属性不能为空\"),
  ATTR_WRONG(31, \"属性填写错误\"),
  WRONG_LENGTH(32, \"数据长度不符合要求\"),
  WRONG_PATTERN(33, \"数据格式错误\"),
  VAILD_WRONG(100,\"验证码错误\"),
  CUSTOM(999, \"\")
  ;
 
  ReplyCode(int code, String message) {
    this.code = code;
    this.message = message;
  }
 
  private int code;
  private String message;
 
  public int getCode() {
    return code;
  }
 
  public ReplyCode setCode(int code) {
    this.code = code;
    return this;
  }
 
  public String getMessage() {
    return message;
  }
 
  public ReplyCode setMessage(String message) {
    this.message = message;
    return this;
  }
 
}

以上这篇layui框架与SSM前后台交互的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

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

请登录后发表评论

    暂无评论内容