一. 介绍
第一节简单介绍怎么使用数据对象转换:一种高效的数据对象转换方式(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": "[email protected]",
"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
}
]
}
}