springboot嵌套子类使用方式—前端与后台开发的注意事项
作者:鲸鱼姐 发布时间:2023-09-16 12:37:22
标签:springboot,嵌套子类,前端,后台
springboot嵌套子类使用
在实际项目里,我们会使用到一个User用户含有子类Address、这种嵌套子类在开发中会遇到很多问题,现在主要针对前台和后台的开发问题进行整理。
实际Bean类
User类里含有Address类
public class User {
private int userId;
private String userName;
private Address userAddress;
}
public class Address
{
private int addressId;
private String city;
//忽略get、set方法
}
UserMapper.java 对于一对一
使用@Result注解,调用查询子类数据。
public interface UserMapper
{
//one to one
@Select("select * from user where userId = #{userId}")
@Results({
@Result(id=true,column="userId",property="userId"),
@Result(column="userName",property="userName"),
@Result(column="userId",property="userAddress",one=@One(select="com.whale.mapper.AddressMapper.getAddressByUserId",fetchType= FetchType.EAGER))
})
public interface AddressMapper
{
@Select("select * from address where userId=#{userId}")
public Address getAddressByUserId(int userId);
}
前台使用bootstrap-table进行解析显示
在formmater里进行子类显示
columns: [{
checkbox : true
}, {
field: 'userId',
title: '用户ID'
}, {
field: 'userName',
title: '用户姓名'
}, {
field: 'userAddress',
title: '地址',
formatter : function(value,row, index){ //主要配置在这里
return value.city;
}
}
]
后台Controller转换成Json会出现 $ref
解决办法如下:
注意:
String jsonSting=JSON.toJSONString(result, SerializerFeature.DisableCircularReferenceDetect);
结果中出现$ref,先把JSONObject转换成String,然后再转换回JSONObject
@ResponseBody
@RequestMapping("allUser")
public String findALL(){
PageHelper.startPage(pageNumber,pageSize);
List<User> userList= userService.findAll();
PageInfo<User> page=new PageInfo<>(userList);
//取出查询结果
List<User> rows = page.getList();
JSONObject result = new JSONObject();
int total = (int) page.getTotal();
result.put("total",total);
result.put("rows",rows);
String jsonSting=JSON.toJSONString(result, SerializerFeature.DisableCircularReferenceDetect); //结果中出现$ref,先把JSONObject转换成String,然后再转换回JSONObject
JSONObject json= JSON.parseObject(jsonSting);
System.out.println(json.toJSONString());
}
注解在嵌套方法不生效问题
例如在service中方法如下
@PermissionAop
@Override
public List<PoiPermission> getList() {
List<PoiPermission> list = this.list();
return list;
}
@Override
public void test(){
this.getList();
System.out.println("");
}
controller中调用test()方法,test方法中调用切面方法,切面不生效,无法进入切面。
使用如下方式可解决该问题(启动类上需要添加
@EnableAspectJAutoProxy(exposeProxy = true))
@PermissionAop
@Override
public List<PoiPermission> getList() {
List<PoiPermission> list = this.list();
return list;
}
@Override
public void test(){
IPoiPermissionService service = (IPoiPermissionService) AopContext.currentProxy();
service.getList();
System.out.println("");
}
其中IPoiPermissionService为该service类实现的接口。
来源:https://blog.csdn.net/zhaolulu916/article/details/103668023
0
投稿
猜你喜欢
- 本文实例讲述了C++实现的链表类。分享给大家供大家参考。具体如下:#include <iostream>using namesp
- 阅读提示 具有mybatis基础,熟练使用mybatis-plus。概述 我们都知道,mybatis-plus是一个mybatis的增强
- 说明:本文记录如何在Idea下,利用Maven管理项目,并整合SSM(Spring + Spring MVC +Mybatis)框架,实现简
- — 遇到问题今天在IDEA里面运行项目的时候报了一个错,如下图所示:— 找到问题根源其实控制台给出的错误信息提示说的很明显:类加载器加载文件
- 在阅读这篇文章之前,大家可以先看下《Java多线程atomic包介绍及使用方法》,了解atomic包的相关内容。一、何谓Atomic?Ato
- 前言在原生的 Android 或 iOS 中,都提供了基本的键值对存储方式,Android 是 SharedPreferences,iOS
- instanceof判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:public<T> bool
- 悲观锁和乐观锁是面试高频问题之一,本文将对悲观锁和乐观锁简单的进行一个介绍。悲观锁(Pessimistic Locking)悲观锁在并发环境
- 最近在开发的过程中,一个列表的查询,涉及到了多表的关联查询,由于持久层使用的是mongodb,对这个非关系型数据使用的不是很多,所以在实现此
- 什么是FTPFTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以
- 这篇文章主要介绍了java多线程加锁以及Condition类的使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参
- 详解java.lang.reflect.Modifier.isInterface()方法java.lang.reflect.Modifier
- 开篇语Synchronized,Java 友好的提供了的一个关键字,它让开发者可以快速的实现同步。它就像一个星星,远远看去就是一个小小的点。
- 半路开始看的朋友可以回顾一下前几篇java并发编程专题(一)----线程基础知识java并发编程专题(二)----如何创建并运行java线程
- 本文实例为大家分享了Android绝对布局AbsoluteLayout的具体代码,供大家参考,具体内容如下1>AbsoluteLayo
- 整理文档,java 动态增加定时任务示例,直接上代码。import org.apache.tools.ant.util.DateUtils;
- [LeetCode] 3. Longest Substring Without Repeating Characters 最长无重复字符的子
- 简介optional类是java8中引入的针对NPE问题的一种优美处理方式,源码作者也希望以此替代null。历史1965年,英国一位名为To
- 框架的概述JDBC存在的问题:我们要想研究mybatis就必须知道jdbc所存在的问题,那我那么我们首先来复习一下jdbc操作数据库的大致流
- 表述在一次服务更新后发现每天凌晨0点3秒服务准时挂,开始的时候认为是maven依赖中存在system.exit(3)类似这样的代码,但是我想