热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringMVC使用Jackson、双向关联的解决策略@JsonIgnore

目录:一、SpringMVC和Jackson的关系:二、Jackson解决双向关联导致的栈溢出问题的解决方法:三、如何使用JsonIgnoreÿ


目录:


  • 一、SpringMVC和Jackson的关系:
  • 二、Jackson解决双向关联导致的栈溢出问题的解决方法:
  • 三、如何使用@JsonIgnore:



一、SpringMVC和Jackson的关系:
  • SpringMVC返回return Object类型数据给前端时会自动调用jackson将Object类型的数据转换成JSON格式。

举个例子:


  • 前端发送Ajax请求查询该教师的任课信息(一个老师对应多个课程):

<script>
$(function(){
$.get({
url:"${pageContext.request.contextPath}/teacher/getStudentCourse",
dataType:"json",
success(res){
console.log(res);
}
})
})
script>

  • 后端使用SpringMVC接收请求并查找信息&#xff0c;并将查询结果返回给前端&#xff1a;

&#64;Controller
&#64;RequestMapping("/teacher")
public class TeacherController {
&#64;ResponseBody
&#64;RequestMapping("/getStudentCourse")
public Object getStudentCourse(HttpSession session){
String name &#61; (String) session.getAttribute("name");
List<CourseEntity> courses &#61; teacherService.getMyCourse(name);
return courses;
}
}

这里的return courses是一个list集合&#xff0c;但是springmvc在向前端返回数据时会自动调用jackson将courses数据转换为json类型数据。


  • 前端获得任课信息&#xff1a;
    在这里插入图片描述

二、Jackson解决双向关联导致的栈溢出问题的解决方法&#xff1a;

举个例子&#xff1a;

教师和课程是一对多关系&#xff0c;所以后端我们使用双向一对多关联将教师表和课程表建立联系。


  • 教师和课程的实体类关系如图&#xff08;这里使用的是Hibernate&#xff09;&#xff1a;
    在这里插入图片描述
  • 因为使用的是双向关联 &#xff0c;当我们将教师的任课信息 List courses返回给前端时&#xff0c;集合的每个CourseEntity元素中都有一个teacher属性&#xff08;每个teacher属性是不是又有各自的courses属性…&#xff09;循环往复。所以如果我们直接将该教师的courses返回会出现栈溢出问题。
    在这里插入图片描述
    如何解决栈溢出问题呢&#xff1f;
    我们其实只想获得该老师的任课信息&#xff08;任课信息中包含课程号、课程名、课程教师信息&#xff0c;我们只想获得前两个属性&#xff09;&#xff0c;不想获得每门课中包含的课程教师信息。可以使用 &#64;JsonIgnore 注解。
    &#64;JsonIgnore在后端向前端发送数据时可以将JavaBean的部分属性忽略掉&#xff0c;即不发送这部分属性。
    在这里插入图片描述

三、如何使用&#64;JsonIgnore&#xff1a;

该注解在Jackson的jar包下&#xff0c;需要导入Jackson的相关jar文件。
在这里插入图片描述
&#xff08;其实不导入这些文件springmvc在向前端发送数据时也能使用jackson将数据转换为json类型&#xff0c;但是&#64;JsonIgnore注解不能使用&#xff0c;可能是springmvc中包含jackson的jar包&#xff0c;但是不全&#xff09;







推荐阅读
author-avatar
小女人要有小性感
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有