easyUI之后端实现(3)

System.out.println(om.writeValueAsString(map));

两种方式结果格式一致,如下:

两种方式我们一般选择第一种

// 实体类集合对象转换成json串–>json对象–>方式一

JsonObject1 obj1 = new JsonObject1(“14”, “about.html”, null);

JsonObject1 obj2 = new JsonObject1(“15”, “welcome.html”, null);

List list = new ArrayList<>();

list.add(obj1);

list.add(obj2);

ObjectMapper om = new ObjectMapper();

System.out.println(om.writeValueAsString(list));

// Map集合对象转换成json串–>json数组–>方式二

Map<String, Object> map1 = new HashMap<String, Object>();

map1.put(“id”, “14”);

map1.put(“text”, “about.html”);

map1.put(“state”, null);

Map<String, Object> map2 = new HashMap<String, Object>();

map2.put(“id”, “15”);

map2.put(“text”, “welcome.html”);

map2.put(“state”, null);

List<Map<String, Object>> listMap = new ArrayList<>();

listMap.add(map1);

listMap.add(map2);

System.out.println(om.writeValueAsString(list));

运行结果为:

[{“id”:“14”,“text”:“about.html”,“state”:null},{“id”:“15”,“text”:“welcome.html”,“state”:null}]

结论:就json串的转换结果而言,Map等价于对象,List等价于List<创建的类>

二、数据的构成(应用)

============

建立实体类

package com.zking.entity;

public class Menu {

private String serialNo;

private String menuid;

private String menuname;

private String menuURL;

private String parentid;

public String getSerialNo() {

return serialNo;

}

public void setSerialNo(String serialNo) {

this.serialNo = serialNo;

}

public String getMenuid() {

return menuid;

}

public void setMenuid(String menuid) {

this.menuid = menuid;

}

public String getMenuname() {

return menuname;

}

public void setMenuname(String menuname) {

this.menuname = menuname;

}

public String getMenuURL() {

return menuURL;

}

public void setMenuURL(String menuURL) {

this.menuURL = menuURL;

}

public String getParentid() {

return parentid;

}

public void setParentid(String parentid) {

this.parentid = parentid;

}

@Override

public String toString() {

return “Menu [serialNo=” + serialNo + “, menuid=” + menuid + “, menuname=” + menuname + “, menuURL=” + menuURL

  • “, parentid=” + parentid + “]”;

}

public Menu(String serialNo, String menuid, String menuname, String menuURL, String parentid) {

super();

this.serialNo = serialNo;

this.menuid = menuid;

this.menuname = menuname;

this.menuURL = menuURL;

this.parentid = parentid;

}

public Menu() {

// TODO Auto-generated constructor stub

}

}

引入mvc所用到的mvc2.xml文件,zking.tld文件

MenuDao:


public List

list(Menu menu, PageBean pageBean) throws Exception {

return super.executeQuery(“select * from t_easyui_menu”, Menu.class, pageBean);

}

public static void main(String[] args) throws Exception {

MenuDao menuDao = new MenuDao();

List

list = menuDao.list(null, null);

ObjectMapper om = new ObjectMapper();

System.out.println(om.writeValueAsString(list));

}

输出结果为:

缺陷:

1.json串并没有体现出父子层级关系,数据之间都是平级的

2.json串属性并不是id,text等easyUI要求的属性

思考:

1.TreeVo对象

**2.List

–>List<TreeVo >

TreeVo  vo=new TreeVo();

vo.setid(menu.getId());

vo.setText(menu.getmenuname());**

3.让List<TreeVo

>中的数据有父子层级关系

MenuDao:


package com.zking.dao;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.zking.entity.Menu;

import com.zking.util.BaseDao;

import com.zking.util.BuildTree;

import com.zking.util.PageBean;

import com.zking.util.TreeVo;

public class MenuDao extends BaseDao

{

public List

list(Menu menu, PageBean pageBean) throws Exception {

return super.executeQuery(“select * from t_easyui_menu”, Menu.class, pageBean);

}

public List<TreeVo

> tree(Menu menu, PageBean pageBean) throws Exception {

// 拿到的是平级,没有父子层级关系的数据

List

list = this.list(menu, pageBean);

// List

–>List<TreeVo >

List<TreeVo

> listVos = new ArrayList<TreeVo >();

for (Menu m : list) {

TreeVo

vo = new TreeVo<>();

vo.setId(m.getMenuid());

vo.setText(m.getMenuname());

vo.setParentId(m.getParentid());

Map<String, Object> attributes = new HashMap<String, Object>();

// self是个关键字的名字,随便取一个名字

// node.attributes.self.menuURL

attributes.put(“self”, m);

vo.setAttributes(attributes);

listVos.add(vo);

}

// 构建父子层级关系

return BuildTree.buildList(listVos, “000”);

}

public static void main(String[] args) throws Exception {

MenuDao menuDao = new MenuDao();

// List

list = menuDao.list(null, null);

List<TreeVo

> tree = menuDao.tree(null, null);

ObjectMapper om = new ObjectMapper();

/**

  • 缺陷: 1.json串并没有体现出父子层级关系,数据之间都是平级的 2.json串属性并不是id,text等easyUI要求的属性

  • 思考: 1.TreeVo对象 2.List

    –>List<TreeVo > TreeVo vo=new TreeVo();

  • vo.setid(menu.getId()); vo.setText(menu.getmenuname());

  • 3.让List<TreeVo

    >中的数据有父子层级关系 由工具类实现

*/

System.out.println(om.writeValueAsString(tree));

}

}

TreeVo:


package com.zking.util;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

public class TreeVo {

/**

  • 节点ID

*/

private String id;

/**

  • 显示节点文本

*/

private String text;

/**

  • 节点状态,open closed

*/

private Map<String, Object> state;

/**

  • 节点是否被选中 true false

*/

private boolean checked = false;

/**

  • 节点属性

*/

private Map<String, Object> attributes;

/**

  • 节点的子节点

*/

private List<TreeVo> children = new ArrayList<TreeVo>();

/**

  • 父ID

*/

private String parentId;

/**

  • 是否有父节点

*/

private boolean hasParent = false;

/**

  • 是否有子节点

*/

private boolean hasChildren = false;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public Map<String, Object> getState() {

return state;

}

public void setState(Map<String, Object> state) {

this.state = state;

}

public boolean isChecked() {

return checked;

}

public void setChecked(boolean checked) {

this.checked = checked;

}

public Map<String, Object> getAttributes() {

return attributes;

}

public void setAttributes(Map<String, Object> attributes) {

this.attributes = attributes;

}

public List<TreeVo> getChildren() {

return children;

}

public void setChildren(List<TreeVo> children) {

this.children = children;

}

public boolean isHasParent() {

return hasParent;

}

public void setHasParent(boolean isParent) {

this.hasParent = isParent;

}

public boolean isHasChildren() {

return hasChildren;

}

public void setChildren(boolean isChildren) {

this.hasChildren = isChildren;

}

public String getParentId() {

return parentId;

}

public void setParentId(String parentId) {

this.parentId = parentId;

}

public TreeVo(String id, String text, Map<String, Object> state, boolean checked, Map<String, Object> attributes,

List<TreeVo> children, boolean isParent, boolean isChildren, String parentID) {

super();

this.id = id;

this.text = text;

this.state = state;

this.checked = checked;

this.attributes = attributes;

this.children = children;

this.hasParent = isParent;

this.hasChildren = isChildren;

this.parentId = parentID;

}

public TreeVo() {

super();

}

}

BuildTree:


package com.zking.util;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class BuildTree {

/**

  • 默认-1为顶级节点

  • @param nodes

  • @param

  • @return

*/

public static TreeVo build(List<TreeVo> nodes) {

if (nodes == null) {

return null;

}

List<TreeVo> topNodes = new ArrayList<TreeVo>();

for (TreeVo children : nodes) {

String pid = children.getParentId();

if (pid == null || “-1”.equals(pid)) {

topNodes.add(children);

continue;

}

for (TreeVo parent : nodes) {

String id = parent.getId();

if (id != null && id.equals(pid)) {

parent.getChildren().add(children);

children.setHasParent(true);

parent.setChildren(true);

continue;

}

}

}

TreeVo root = new TreeVo();

if (topNodes.size() == 1) {

root = topNodes.get(0);

} else {

root.setId(“000”);

root.setParentId(“-1”);

root.setHasParent(false);

root.setChildren(true);

root.setChecked(true);

root.setChildren(topNodes);

root.setText(“顶级节点”);

Map<String, Object> state = new HashMap<>(16);

state.put(“opened”, true);

root.setState(state);

}

return root;

}

/**

  • 指定idparam为顶级节点

  • @param nodes

  • @param idParam

  • @param

  • @return

*/

public static List<TreeVo> buildList(List<TreeVo> nodes, String idParam) {

if (nodes == null) {

return null;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
return root;

}

/**

  • 指定idparam为顶级节点

  • @param nodes

  • @param idParam

  • @param

  • @return

*/

public static List<TreeVo> buildList(List<TreeVo> nodes, String idParam) {

if (nodes == null) {

return null;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-RsRECyAC-1714850164368)]

[外链图片转存中…(img-GciOpCIG-1714850164369)]

[外链图片转存中…(img-BjJW9Ddz-1714850164369)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值