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. centos7忘记root密码的重置方法-超简单

    忘记root密码,重置root密码8步. 1.在开机界面按e进入grub编辑模式 2.找到 ro修改为rw /sysroot/bin/sh 3.Ctrl + x 启动 4.chroot /sysroo ...

  2. c语言基本数据类型short、int、long、char、float、double大小及命名规则

    C 语言包含的数据类型: 一.数据类型与“模子”short.int.long.char.float.double 这六个关键字代表C 语言里的六种基本数据类型. 怎么去理解它们呢? 举个例子:见过藕煤 ...

  3. PAT(甲级)2017年秋季考试

    PAT(甲级)2017年秋季考试 D题红黑树待补21/30 大佬的代码,看着想哭,这才是艺术啊 A Cut Integer 模拟题 #include<bits/stdc++.h> usin ...

  4. 人人学IoT 助学思维导图

    原来学IoT记录的学习笔记,学完之后,对考试和工作都有些帮助,特分享给大家 笔记分享链接 https://share.mindmanager.com/#publish/s6TqusKeSG6aflXL ...

  5. 简单易懂的ftp脚本自动登录教程

    我在上上篇<nmon脚本--对Linux服务器的监控>的脚本中,使用了ftp的自动登录.结果有人询问,遂决定专门写一篇简单易懂的博客,来说明如何解决ftp的自动登录问题. 一.Window ...

  6. Spring AOP简介与底层实现机制——动态代理

    AOP简介 AOP (Aspect Oriented Programing) 称为:面向切面编程,它是一种编程思想.AOP 是 OOP(面向对象编程 Object Oriented Programmi ...

  7. react-native中更改android/ios的入口文件

    android 1.android /app/build.gradle project.ext.react = [ entryFile: "index.android.js" ] ...

  8. HDU1217-Arbitrage(乘法最短路)

    Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency ...

  9. Java并发编程系列-(2) 线程的并发工具类

    2.线程的并发工具类 2.1 Fork-Join JDK 7中引入了fork-join框架,专门来解决计算密集型的任务.可以将一个大任务,拆分成若干个小任务,如下图所示: Fork-Join框架利用了 ...

  10. 【CuteJavaScript】Angular6入门项目(3.编写服务和引入RxJS)

    本文目录 一.项目起步 二.编写路由组件 三.编写页面组件 1.编写单一组件 2.模拟数据 3.编写主从组件 四.编写服务 1.为什么需要服务 2.编写服务 五.引入RxJS 1.关于RxJS 2.引 ...