导航:首页 > 编程语言 > java递归查询父节点

java递归查询父节点

发布时间:2024-01-10 22:30:41

java1.8使用mytis连接mysql递归查询所有父节点用到:和@报错Cause: java.util.NoSuchElementException


Java mysql mybatis批量更新数据库,采用以下写法即可执行,但是数据库连接必须配置:&allowMultiQueries=true

例如:jdbc:mysql://192.168.1.236:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
<updateid="batchUpdate"parameterType="java.util.List">
<foreachcollection="list"item="item"index="index"open=""close=""separator=";">
updatetest
<set>
test=${item.test}+1
</set>
whereid=${item.id}
</foreach>
</update>

MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录.




Ⅱ java 递归数据库生成 树形结构问题

1、准备表结构及对应的表数据
a、表结构:
create table TB_TREE
(
CID NUMBER not null,
CNAME VARCHAR2(50),
PID NUMBER //父节点
)

b、表数据:

insert into tb_tree (CID, CNAME, PID) values (1, '中国', 0);
insert into tb_tree (CID, CNAME, PID) values (2, '北京市', 1);
insert into tb_tree (CID, CNAME, PID) values (3, '广东省', 1);
insert into tb_tree (CID, CNAME, PID) values (4, '上海市', 1);
insert into tb_tree (CID, CNAME, PID) values (5, '广州市', 3);
insert into tb_tree (CID, CNAME, PID) values (6, '深圳市', 3);
insert into tb_tree (CID, CNAME, PID) values (7, '海珠区', 5);
insert into tb_tree (CID, CNAME, PID) values (8, '天河区', 5);
insert into tb_tree (CID, CNAME, PID) values (9, '福田区', 6);
insert into tb_tree (CID, CNAME, PID) values (10, '南山区', 6);
insert into tb_tree (CID, CNAME, PID) values (11, '密云县', 2);
insert into tb_tree (CID, CNAME, PID) values (12, '浦东', 4);

2、TreeNode对象,对应tb_tree

public class TreeNode implements Serializable {
private Integer cid;
private String cname;
private Integer pid;
private List nodes = new ArrayList();

public TreeNode() {
}

//getter、setter省略
}

3、测试数据

public class TreeNodeTest {
@Test
public void loadTree() throws Exception{
System.out.println(jsonUtils.javaToJson(recursiveTree(1)));
}

/**
* 递归算法解析成树形结构
*
* @param cid
* @return
* @author jiqinlin
*/
public TreeNode recursiveTree(int cid) {
//根据cid获取节点对象(SELECT * FROM tb_tree t WHERE t.cid=?)
TreeNode node = personService.getreeNode(cid);
//查询cid下的所有子节点(SELECT * FROM tb_tree t WHERE t.pid=?)
List childTreeNodes = personService.queryTreeNode(cid);
//遍历子节点
for(TreeNode child : childTreeNodes){
TreeNode n = recursiveTree(child.getCid()); //递归
node.getNodes().add(n);
}

return node;
}
}

输出的json格式如下:

{
"cid": 1,
"nodes": [
{
"cid": 2,
"nodes": [
{
"cid": 11,
"nodes": [

],
"cname": "密云县",
"pid": 2
}
],
"cname": "北京市",
"pid": 1
},
{
"cid": 3,
"nodes": [
{
"cid": 5,
"nodes": [
{
"cid": 7,
"nodes": [

],
"cname": "海珠区",
"pid": 5
},
{
"cid": 8,
"nodes": [

],
"cname": "天河区",
"pid": 5
}
],
"cname": "广州市",
"pid": 3
},
{
"cid": 6,
"nodes": [
{
"cid": 9,
"nodes": [

],
"cname": "福田区",
"pid": 6
},
{
"cid": 10,
"nodes": [

],
"cname": "南山区",
"pid": 6
}
],
"cname": "深圳市",
"pid": 3
}
],
"cname": "广东省",
"pid": 1
},
{
"cid": 4,
"nodes": [
{
"cid": 12,
"nodes": [

],
"cname": "浦东",
"pid": 4
}
],
"cname": "上海市",
"pid": 1
}
],
"cname": "中国",
"pid": 0
}

Ⅲ java 怎么把数据库 ID PID(父ID) NAME 三个字段 数据递归处理成树形结构 首ID的PID为0

  1. 如果数据库是oracle,可以用递归的sql实现

  2. 如果想用java实现

    第一步遍历节点放入map结构

    再次遍历节点,取出当前节点的父节点,parentNode.setchild(courrentNode)
    这样第二次遍历完后已经是树形结构了。

  3. 从map中取出root节点就行

Ⅳ java 目录树如何检索子级返回

Java中使用递归算法实现查找树形结构中所有父级和子级节点,用递归加一个全局变量标记是否已经找到,然后返回。

截取后面的一段例子:

拓展资料

递归查询子级节点

1.一个节点可能有多个子级节点,每个自己节点可能还有更多的子级节点。

2.所以递归时的参数用一个list来接受,首先遍历参数list,分别查询pid为参数id的对象。

3.每一个参数id所查询返回的数据是一个对象的list。

4.遍历list获取符合条件的对象的id值,一份存到temp中用作递归的参数,并存到全局变量中用来获取所有符合条件的id。

阅读全文

与java递归查询父节点相关的资料

热点内容
word2007层次结构 浏览:456
去掉文件名的数字 浏览:713
word公司 浏览:710
淘宝店数据包怎么上传 浏览:341
pbt文件 浏览:204
HX基础编程怎么改变字体 浏览:876
怎么开网络教学 浏览:915
630升级工程武器 浏览:936
用换机助手接收的软件文件在哪找 浏览:282
阅达app一教一辅五年级有哪些 浏览:7
win10系统用f2调节音量 浏览:19
压缩文件密码器 浏览:840
线下活动数据分析有哪些 浏览:314
助听器插片式编程线如何连接 浏览:293
怎么删除系统休眠文件 浏览:914
搜索文件内容中包含的文字并替换 浏览:542
微信相册程序图标 浏览:714
win8怎么显示文件格式 浏览:547
文件服务器中毒 浏览:721
如何修改网站访问次数 浏览:518

友情链接