1:概述

过去 我们在每一个方法中处理前端发过来的请求,需要自己构造请求数据,然后通过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();
} }

Spring Boot 项目维护全局json数据的更多相关文章

  1. Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)

    Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...

  2. spring boot 项目连接数据库查询数据过程

    spring boot 项目搭建 pom.xml <?xml version="1.0" encoding="UTF-8"?> <projec ...

  3. Spring Boot项目使用Swagger2文档教程

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 前言 Sprin ...

  4. 后端开发实践——Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  5. 后端开发实践:Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...

  6. Myeclipse下使用Maven搭建spring boot项目(第二篇)

    现在需要搭建spring boot框架,并实现一个HelloWorld的项目,让程序真正运行起来. 一.在pom.xml中引入spring-boot-start-parent,spring官方的叫st ...

  7. 在Spring Boot项目中使用Spock框架

    转载:https://www.jianshu.com/p/f1e354d382cd Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring B ...

  8. Spring Boot 项目学习 (一) 项目搭建

    0 引言 本文主要记录借用Idea 开发环境下,搭建 Spring Boot 项目框架的过程. 1 系列文档目录 Spring Boot 项目学习 (一) 项目搭建 Spring Boot 项目学习 ...

  9. Spring Boot项目中使用Mockito

    本文首发于个人网站:Spring Boot项目中使用Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试 ...

随机推荐

  1. 设置颜色的函数:rgb,hsv,color palettes

    1.grb函数 (1)功能: 通过对给定的三个基本色红,绿,蓝的颜色饱和度(intensity)的设定,而创造颜色. 阿尔法透明度(alpha transparent):其值也能被指定,从0到max ...

  2. HTML 5 中的textarea标签

    HTML 5 中的textarea标签 定义和用法 定义一个文本区域 (text-area) (一个多行的文本输入区域).用户可在此文本区域中写文本.在一个文本区中,您可输入无限数量的文本.文本区中的 ...

  3. 进程_Linux内核设计与实现笔记

    进程 进程是处于执行期的程序以及相关资源的总称,是正在执行的代码的实时结果. 进程部分位于Kernel的PM层.进程是Unix操作系统的抽象概念中最基本的一种,操作系统的存在就是为了运行用户程序,所以 ...

  4. Spring Boot2 系列教程(二十九)Spring Boot 整合 Redis

    经过 Spring Boot 的整合封装与自动化配置,在 Spring Boot 中整合Redis 已经变得非常容易了,开发者只需要引入 Spring Data Redis 依赖,然后简单配下 red ...

  5. 关于c++函数里面return的用法,关于调用的讲解

    与下面的图片对比一下 可以看见在int b = test();d的时候cout<<"hello";就被调用了: cout<<b;只是返回return a的值 ...

  6. springcloud集成redis

    1.application.properties/application.yml配置: redis: # redis数据库索引(默认为0),我们使用索引为3的数据库,避免和其他数据库冲突 databa ...

  7. 在5分钟内将Spring Boot作为Windows服务启动

    分享优锐课学习笔记~来看一下如何使用Spring Boot创建Windows服务以及通过配置详细信息来快速启动并运行. 最近不得不将Spring Boot应用程序部署为Windows服务,感到惊讶的是 ...

  8. margin重叠与穿透问题

    margin重叠是指两个同级元素之间.margin穿透指的是,子元素margin超出父元素而未被父元素包含的现象. 出现margin重叠的原因: 同一个BFC里面两个块级元素会出现margin折叠. ...

  9. jqurey(尺寸,css操作,效果,遍历)

    尺寸: height():设置或返回元素的高度(不包括内边距.边框或外边距). width():设置或返回元素的宽度(不包括内边距.边框或外边距). 例如: $("#box").h ...

  10. 利用PyCharm操作Github:仓库新建、更新,代码回滚

      Github是目前世界上最流行的代码存储和分享平台,而PyCharm是Python圈中最流行的IDE,它很好地支持了Git操作.本文将会介绍如何利用PyCharm来连接Github,同时演示Git ...