springboot嵌套子类使用方式—前端与后台开发的注意事项

 更新时间:2022年03月24日 14:58:50   作者:鲸鱼姐  
这篇文章主要介绍了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类实现的接口。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java常用的时间工具类实例

    Java常用的时间工具类实例

    这篇文章主要介绍了Java常用的时间工具类,结合具体实例形式分析了java日期时间的常用转换、判断、输出相关操作技巧,需要的朋友可以参考下
    2017-06-06
  • JAVA验证码工具实例代码

    JAVA验证码工具实例代码

    这篇文章主要介绍了JAVA验证码工具实例代码,需要的朋友可以参考下
    2018-03-03
  • jmeter接口测试之使用rsa算法加密解密的代码

    jmeter接口测试之使用rsa算法加密解密的代码

    这篇文章主要介绍了jmeter接口测试-使用rsa加密解密算法,部分接口采用了rsa加密算法,我们的jmeter 也是可以直接拿来调用的,不需要开发配合去掉加密代码,需要的朋友可以参考下
    2022-03-03
  • Java中System.currentTimeMillis()计算方式与时间单位转换讲解

    Java中System.currentTimeMillis()计算方式与时间单位转换讲解

    本文详细讲解了Java中System.currentTimeMillis()计算方式与时间单位转换,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Java类的继承原理与用法分析

    Java类的继承原理与用法分析

    这篇文章主要介绍了Java类的继承原理与用法,结合实例形式分析了java类的继承相关原理、使用方法及操作注意事项,需要的朋友可以参考下
    2020-02-02
  • Spring Boot 2.0快速构建服务组件全步骤

    Spring Boot 2.0快速构建服务组件全步骤

    这篇文章主要给大家介绍了关于Spring Boot 2.0快速构建服务组件的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot 2.0具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 进一步理解Java中的多态概念

    进一步理解Java中的多态概念

    这篇文章主要介绍了进一步理解Java中的多态概念,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • springboot实现返回文件流

    springboot实现返回文件流

    这篇文章主要介绍了springboot实现返回文件流方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • springboot+websocket实现并发抢红包功能

    springboot+websocket实现并发抢红包功能

    本文主要介绍了springboot+websocket实现并发抢红包功能,主要包含了4种步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Spring实例化bean的四种方式详解

    Spring实例化bean的四种方式详解

    这篇文章主要给大家介绍了关于Spring中实例化bean的四种方式:构造方法、静态工厂、实例工厂和FactoryBean,感兴趣的可以了解一下
    2022-06-06

最新评论