一种高效的数据对象转换方式(4)-----包含列表输出

5 篇文章 0 订阅
5 篇文章 0 订阅

一. 介绍

   第一节简单介绍怎么使用数据对象转换:一种高效的数据对象转换方式(1)

    https://blog.csdn.net/ssyujay/article/details/81638984

    第二节详细介绍怎么使用数据对象转换:一种高效的数据对象转换方式(2)

    https://blog.csdn.net/ssyujay/article/details/81813394

    第三节详细介绍具体代码实现方式:一种高效的数据对象转换方式(3)

    https://blog.csdn.net/ssyujay/article/details/81814265

    前面三节讲的是一对一数据转换输出,这一节讲包含列表数据转换输出

二. xml中col元素

    在HubXmlColumn.java中添加属性collections,Map<String, List<HubXmlColumn>> collections;

    private Map<String, List<HubXmlColumn>> collections;
    
    public void putCollection(String key, List<HubXmlColumn> collection) {
        if (null == collections) {
            collections = new LinkedHashMap<>();
        }
        collections.put(key, collection);
    }

下面将通过几种配置方式和输出,来演示使用:

1. 通过类的配置方式

配置如下:

    <grid name="LIST">
        <col type="yui.bss.model.vo.sys.SysUserVo" />
        
        <collection name="roleList" mapper="sysRoleDtoxList">
            <col type="yui.bss.model.vo.sys.SysRoleVo" />
        </collection>
    </grid>

输出如下:

{
  "status": "200",
  "header": {
    "roleList": {
      "sysRolePk": "主键",
      "prntPk": "父主键",
      "prntNm": "父名称",
      "nm": "名称",
      "rmks": "备注",
      "catCd": "分类编码",
      "catNm": "分类",
      "statCd": "状态编码",
      "statNm": "状态",
      "crtTm": "创建时间",
      "crtBy": "创建人",
      "updTm": "修改时间",
      "updBy": "修改人",
      "editFlag": "修订状态"
    },
    "sysUserPk": "主键",
    "subPk": "实体主键",
    "usNm": "登陆名",
    "nkNm": "昵称",
    "salt": "盐值",
    "pwd": "密码",
    "card": "证件号",
    "phone": "电话",
    "mob": "手机",
    "email": "邮件",
    "sex": "性别",
    "imgUrl": "头像",
    "qqOpenId": "QQopenid",
    "openId": "微信openid",
    "unionId": "微信unionid",
    "rmks": "备注",
    "arg1": "参数1",
    "arg2": "参数2",
    "arg3": "参数3",
    "arg4": "参数4",
    "arg5": "参数5",
    "arg6": "参数6",
    "arg7": "参数7",
    "arg8": "参数8",
    "arg9": "参数9",
    "vldFrTm": "有效开始时间",
    "vldToTm": "有效结束时间",
    "catCd": "分类编码",
    "catNm": "分类",
    "statCd": "状态编码",
    "statNm": "状态",
    "crtTm": "创建时间",
    "crtBy": "创建人",
    "updTm": "修改时间",
    "updBy": "修改人",
    "editFlag": "修订状态"
  },
  "data": {
    "roleList": [
      {
        "sysRolePk": null,
        "prntPk": null,
        "prntNm": null,
        "nm": "role1",
        "rmks": "222",
        "catCd": null,
        "catNm": null,
        "statCd": null,
        "statNm": null,
        "crtTm": null,
        "crtBy": null,
        "updTm": null,
        "updBy": null,
        "editFlag": null
      },
      {
        "sysRolePk": null,
        "prntPk": null,
        "prntNm": null,
        "nm": "role2",
        "rmks": null,
        "catCd": null,
        "catNm": null,
        "statCd": null,
        "statNm": null,
        "crtTm": null,
        "crtBy": null,
        "updTm": null,
        "updBy": null,
        "editFlag": null
      }
    ],
    "sysUserPk": 1,
    "subPk": 3664372564677632,
    "usNm": "admin",
    "nkNm": "yui",
    "salt": null,
    "pwd": "c7635bfd99248a2cdef8249ef7bfbef4",
    "card": null,
    "phone": "123456789",
    "mob": "12345678912",
    "email": "ssyjay@163.com",
    "sex": null,
    "imgUrl": null,
    "qqOpenId": null,
    "openId": null,
    "unionId": null,
    "rmks": null,
    "arg1": null,
    "arg2": null,
    "arg3": null,
    "arg4": null,
    "arg5": null,
    "arg6": null,
    "arg7": null,
    "arg8": null,
    "arg9": null,
    "vldFrTm": null,
    "vldToTm": null,
    "catCd": "20000.160",
    "catNm": "人员",
    "statCd": "10000.150",
    "statNm": "是",
    "crtTm": "2017-11-07 15:17:11",
    "crtBy": null,
    "updTm": "2018-01-18 14:00:36",
    "updBy": "admin",
    "editFlag": 0
  }
}

2. 通过灵活配置的方式

配置如下:

    <grid name="LIST">
        <col name="usNm" mapper="sysUserVo.usNm" descr="登陆名" />
        <col name="nkNm" mapper="sysUserVo.nkNm" descr="昵称" />
        
        <collection name="roleList" mapper="sysRoleDtoxList">
            <col name="nm" mapper="sysRoleVo.nm" descr="名称" />
            <col name="rmks" mapper="sysRoleVo.rmks" descr="备注" />
        </collection>
    </grid>

输出如下:

{
  "status": "200",
  "header": {
    "usNm": "登陆名",
    "nkNm": "昵称",
    "roleList": {
      "nm": "名称",
      "rmks": "备注"
    }
  },
  "data": {
    "usNm": "admin",
    "nkNm": "yui",
    "roleList": [
      {
        "nm": "role1",
        "rmks": "222"
      },
      {
        "nm": "role2",
        "rmks": null
      }
    ]
  }
}

3. 如果包含2个列表(支持无线个列表)

配置如下:

    <grid name="LIST">
        <col name="usNm" mapper="sysUserVo.usNm" descr="登陆名" />
        <col name="nkNm" mapper="sysUserVo.nkNm" descr="昵称" />
        
        <collection name="roleList" mapper="sysRoleDtoxList">
            <col name="nm" mapper="sysRoleVo.nm" descr="名称" />
            <col name="rmks" mapper="sysRoleVo.rmks" descr="备注" />
        </collection>
        
        <collection name="rscoList" mapper="sysRscoDtoxList">
            <col name="nm" mapper="sysRscoVo.nm" descr="名称" />
            <col name="url" mapper="sysRscoVo.url" descr="资源路径" />
        </collection>
    </grid>

配置如下:

{
  "status": "200",
  "header": {
    "usNm": "登陆名",
    "nkNm": "昵称",
    "roleList": {
      "nm": "名称",
      "rmks": "备注"
    },
    "rscoList": {
      "nm": "名称",
      "url": "资源路径"
    }
  },
  "data": {
    "usNm": "admin",
    "nkNm": "yui",
    "roleList": [
      {
        "nm": "role1",
        "rmks": "222"
      },
      {
        "nm": "role2",
        "rmks": null
      }
    ],
    "rscoList": [
      {
        "nm": "test",
        "url": null
      }
    ]
  }
}

 

4. 如果列表中还包含其他列表(支持无线级一对多配置)

配置如下:

    <grid name="LIST">
        <col name="usNm" mapper="sysUserVo.usNm" descr="登陆名" />
        <col name="nkNm" mapper="sysUserVo.nkNm" descr="昵称" />
        
        <collection name="roleList" mapper="sysRoleDtoxList">
            <col name="nm" mapper="sysRoleVo.nm" descr="名称" />
            <col name="rmks" mapper="sysRoleVo.rmks" descr="备注" />
            <collection name="rscoList" mapper="sysRscoDtoxList">
                <col name="nm" mapper="sysRscoVo.nm" descr="名称" />
                <col name="url" mapper="sysRscoVo.url" descr="资源路径" />
            </collection>
        </collection>
    </grid>

输出如下:

{
  "status": "200",
  "header": {
    "usNm": "登陆名",
    "nkNm": "昵称",
    "roleList": {
      "nm": "名称",
      "rmks": "备注",
      "rscoList": {
        "nm": "名称",
        "url": "资源路径"
      }
    }
  },
  "data": {
    "usNm": "admin",
    "nkNm": "yui",
    "roleList": [
      {
        "nm": "role1",
        "rmks": "222",
        "rscoList": []
      },
      {
        "nm": "role2",
        "rmks": null,
        "rscoList": [
          {
            "nm": "test",
            "url": null
          }
        ]
      }
    ]
  }
}

5. 如果多个列表,某个列表中包含其他列表

配置如下:

<grid name="LIST">
        <col name="usNm" mapper="sysUserVo.usNm" descr="登陆名" />
        <col name="nkNm" mapper="sysUserVo.nkNm" descr="昵称" />
        
        <collection name="roleList" mapper="sysRoleDtoxList">
            <col name="nm" mapper="sysRoleVo.nm" descr="名称" />
            <col name="rmks" mapper="sysRoleVo.rmks" descr="备注" />
            <collection name="roleList" mapper="sysRoleDtoxList">
            	<col name="nm" mapper="sysRoleVo.nm" descr="名称" />
            	<col name="rmks" mapper="sysRoleVo.rmks" descr="备注" />
        	</collection>
        </collection>
        
        <collection name="rscoList" mapper="sysRscoDtoxList">
            <col name="nm" mapper="sysRscoVo.nm" descr="名称" />
            <col name="url" mapper="sysRscoVo.url" descr="资源路径" />
        </collection>
    </grid>

输出如下:

{
  "status": "200",
  "header": {
    "usNm": "登陆名",
    "nkNm": "昵称",
    "roleList": {
      "nm": "名称",
      "rmks": "备注",
      "rscoList": {
        "nm": "名称",
        "url": "资源路径"
      }
    },
    "rscoList": {
      "nm": "名称",
      "url": "资源路径"
    }
  },
  "data": {
    "usNm": "admin",
    "nkNm": "yui",
    "roleList": [
      {
        "nm": "role1",
        "rmks": "222",
        "rscoList": []
      },
      {
        "nm": "role2",
        "rmks": null,
        "rscoList": []
      }
    ],
    "rscoList": [
      {
        "nm": "test",
        "url": null
      },
      {
        "nm": "test",
        "url": null
      }
    ]
  }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值