Spring Boot项目维护全局json数据代码实例

这篇文章主要介绍了Spring Boot项目维护全局json数据代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

概述

过去 我们在每一个方法中处理前端发过来的请求,需要自己构造请求数据,然后通过spring 提供的@ResponseBody 强制转为JSON数据吗,实际上出现了很多重复的代码,我么亦可以通过构造一个

工具类,实现只关注需要改变的数据. 下面给出这个工具类.

public class JsonMsg {
  private int code;
  private String msg;
  private Map<String, Object> extendInfo = new HashMap<>();

  public int getCode() {
    return code;
  }

  public void setCode(int code) {
    this.code = code;
  }

  public String getMsg() {
    return msg;
  }

  public void setMsg(String msg) {
    this.msg = msg;
  }

  public Map<String, Object> getExtendInfo() {
    return extendInfo;
  }

  public void setExtendInfo(Map<String, Object> extendInfo) {
    this.extendInfo = extendInfo;
  }
  public static JsonMsg success(){
    JsonMsg res = new JsonMsg();
    res.setCode(100);
    res.setMsg("操作成功!");
    return res;
  }
  public static JsonMsg fail(){
    JsonMsg res = new JsonMsg();
    res.setCode(200);
    res.setMsg("操作失败!");
    return res;
  }
  public JsonMsg addInfo(String key, Object obj){
    this.extendInfo.put(key, obj);
    return this;
  }
}

下面我给出具体的使用示例:

就是一个普通的CRUD代码

package com.hrms.controller;
import com.hrms.bean.Department;
import com.hrms.service.DepartmentService;
import com.hrms.util.JsonMsg;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

/**
 * @author GenshenWang.nomico
 * @date 2018/3/8.
 */
@Controller
@RequestMapping(value = "/hrms/dept")
public class DepartmentController {

  @Autowired
  DepartmentService departmentService;

  /**
   * 删除
   * @param deptId
   * @return
   */
  @RequestMapping(value = "/delDept/{deptId}", method = RequestMethod.DELETE)
  @ResponseBody
  public JsonMsg deleteDept(@PathVariable("deptId") Integer deptId){
    int res = 0;
    if (deptId > 0){
      res = departmentService.deleteDeptById(deptId);
    }
    if (res != 1){
      return JsonMsg.fail().addInfo("del_dept_error", "删除异常");
    }
    return JsonMsg.success();
  }

  /**
   * 部门更改
   * @param deptId
   * @param department
   * @return
   */
  @RequestMapping(value = "/updateDept/{deptId}", method = RequestMethod.PUT)
  @ResponseBody
  public JsonMsg updateDeptById(@PathVariable("deptId") Integer deptId, Department department){

    int res = 0;
    if (deptId > 0){
      res = departmentService.updateDeptById(deptId, department);
    }
    if (res != 1){
      return JsonMsg.fail().addInfo("update_dept_error", "部门更新失败");
    }
    return JsonMsg.success();
  }

  /**
   * 新增部门
   * @param department
   * @return
   */
  @RequestMapping(value = "/addDept", method = RequestMethod.PUT)
  @ResponseBody
  public JsonMsg addDept(Department department){
    int res = departmentService.addDept(department);
    if (res != 1){
      return JsonMsg.fail().addInfo("add_dept_error", "添加异常!");
    }
    return JsonMsg.success();
  }

  /**
   * 查询部门信息总页码数
   * @return
   */
  @RequestMapping(value = "/getTotalPages", method = RequestMethod.GET)
  @ResponseBody
  public JsonMsg getTotalPages(){

    //每页显示的记录行数
    int limit = 5;
    //总记录数
    int totalItems = departmentService.getDeptCount();
    int temp = totalItems / limit;
    int totalPages = (totalItems % limit== 0) ? temp : temp+1;

    return JsonMsg.success().addInfo("totalPages", totalPages);
  }

  /**
   *
   */

  @RequestMapping(value = "/getDeptById/{deptId}", method = RequestMethod.GET)
  @ResponseBody
  public JsonMsg getDeptById(@PathVariable("deptId") Integer deptId){
    Department department = null;
    if (deptId > 0){
      department = departmentService.getDeptById(deptId);
    }
    if (department != null){
      return JsonMsg.success().addInfo("department", department);
    }
    return JsonMsg.fail().addInfo("get_dept_error", "无部门信息");
  }

  /**
   * 分页查询:返回指定页数对应的数据
   * @param pageNo
   * @return
   */
  @RequestMapping(value = "/getDeptList", method = RequestMethod.GET)
  public ModelAndView getDeptList(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo){
    ModelAndView mv = new ModelAndView("departmentPage");
    //每页显示的记录行数
    int limit = 5;
    //总记录数
    int totalItems = departmentService.getDeptCount();
    int temp = totalItems / limit;
    int totalPages = (totalItems % limit== 0) ? temp : temp+1;
    //每页的起始行(offset+1)数据,如第一页(offset=0,从第1(offset+1)行数据开始)
    int offset = (pageNo - 1)*limit;
    List<Department> departments = departmentService.getDeptList(offset, limit);

    mv.addObject("departments", departments)
        .addObject("totalItems", totalItems)
        .addObject("totalPages", totalPages)
        .addObject("curPageNo", pageNo);
    return mv;
  }
  /**
   * 查询所有部门名称
   * @return
   */
  @RequestMapping(value = "/getDeptName", method = RequestMethod.GET)
  @ResponseBody
  public JsonMsg getDeptName(){
    List<Department> departmentList = departmentService.getDeptName();
    if (departmentList != null){
      return JsonMsg.success().addInfo("departmentList", departmentList);
    }
    return JsonMsg.fail();
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • springboot web项目打jar或者war包并运行的实现

    (一)springboot web项目打jar包 1.打包 两种打包方式 maven命令打包 切换目录到工程根下,pom.xml所在位置,运行maven的打包命令 mvn clean package -Dmaven.test.skip=true IDEA 工具执行maven任务打包 会在xxx项目模块下/target目录下生成xxx-0.0.1-SNAPSHOT.jar 2.运行jar包 启动运行(切换目录到target下,执行命令) F:\Java\idea-workspace\shixun0

  • springboot jpa分库分表项目实现过程详解

    这篇文章主要介绍了springboot jpa分库分表项目实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 分库分表场景 关系型数据库本身比较容易成为系统瓶颈,单机存储容量.连接数.处理能力都有限.当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库.优化索引,做很多操作时性能仍下降严重.此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间. 分库分表用于应对当前互联网常见的两个场景--大数

  • SpringBoot多模块项目框架搭建过程解析

    这篇文章主要介绍了SpringBoot多模块项目框架搭建过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建根项目,New Project 创建一个名为 sms-bomber 的 SpringBoot 新项目,打包为 JAR 的即可,这里只添加 Lombok 与 spring-boot-starter-web 依赖,这两个依赖会传递给所有子模块,删除创建完成的项目中的 .mvn\ src\ mvnw mvnw.cmd 创建启动模块,根目

  • 通过idea创建Spring Boot项目并配置启动过程图解

     一.操作步骤 ①使用idea新建一个Spring Boot项目 ②修改pom.xml ③修改application.properties ④修改编写一个Hello Spring Boot的Controller ⑤启动项目访问 二.详细步骤 1.File-->New-->Project 2.选择Spring Initializr 然后Next 3.输入Artiface 然后Next 4.勾选Web .模版我们选择官方推荐的Thymeleaf模版引擎,其他框架.中间件.数据库根据需要选择即可,而

  • 基于idea把springboot项目部署到docker

    这篇文章主要介绍了基于idea把springboot项目部署到docker,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.idea安装docker插件 1.安装 2.配置 备注:要使docker可以通过2375端口访问,需要配置docker vim /lib/systemd/system/docker.service 修改如下 3.配置容器 Dockerfile文件(此处为了方便,将Dockerfile文件放到根目录下面) FROM jav

  • springboot项目访问静态资源的配置代码实例

    这篇文章主要介绍了springboot项目访问静态资源的配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这里只是简单记录当上传图片不是放在tomcat其他服务器中时,只是放在磁盘中便可以这样配置,在项目启动后可以访问到磁盘中的资源. @Configuration public class SystemConfigurer implements WebMvcConfigurer { @Value("${jeewx.path.uploa

  • 如何把springboot jar项目 改为war项目

    这篇文章主要介绍了如何把springboot jar项目 改为war项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 启动类JeewxBootApplication 添加继承SpringBootServletInitializer 重写实现 @SpringBootApplication public class JeewxBootApplication extends SpringBootServletInitializer { public

  • 基于javamelody监控springboot项目过程详解

    JavaMelody是用来在QA和实际运行生产环境中监控Java或Java EE应用程序服务器的一个开源框架.它不是一个工具来模拟来自用户的请求,而是一个测量和计算用户在实际操作中应用程序的使用情况的工具,并以图表的形式显示,图表可以按天,周,月,年或自定义时间段查看. JavaMelody基础的监控包括Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求.sql请求.jsp页面与业务接口方法(EJB3.Spring. Guice)的执行数量,平均执行时

  • 使用Docker部署SpringBoot项目的实现方法

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下. 首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署. 一个简单 Spring Boot 项目 在 pom.xml 中 ,使用 Spring Boot 2.0 相关依赖 <parent> <groupId>org.springframework.boot</groupId>

  • Springboot项目如何使用apollo配置中心

    这篇文章主要介绍了Springboot项目如何使用apollo配置中心,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 引入 apollo 配置依赖 <dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.1.0<

随机推荐