【学习摘记】马士兵bbs改良版_课时32_删除帖子_1——删除的递归以及相关处理,依旧是难点

【课时32】删除帖子_1——删除的递归以及相关处理,依旧是难点


【视频时长】40min

【所用时间】205min  

【尝试】30min  12:05-12:20 & 1:40-1:55

【视频】140min  2:00-4:20

【整理笔记】35min  5:15-5:50


【自己尝试】删除帖子

增加删除按钮,一点击就删除(在flat页面)

本想在flat页面,但是发现删除要涉及到子帖,要用到递归,所以还是在article。

创建Delete.jsp。仿照article(因为tree)


删除函数的算法思路:

先删除他自己,再删除所有pid是他的,继续删,直到所有的叶节点都被删除。

怎么用代码表达?


【笔记整理】

果不其然,一上来就讲到了在flat和article删除的不同。

flat:delete from article where rootid = id

article: delete( )递归函数

故,后者难很多。

 

1、delete( )递归函数——先删叶节点的孩子,再依次向上,最后删自己

PS1:判断是否有孩子,从而确定是否直接删除自身

需要isLeaf,与其之后再取isleaf属性,不如开始就传参数

PS2:此时在DB中增加executeUpdate

【学习摘记】马士兵bbs改良版_课时32_删除帖子_1——删除的递归以及相关处理,依旧是难点


但,executeQuery却不能这样写:

【学习摘记】马士兵bbs改良版_课时32_删除帖子_1——删除的递归以及相关处理,依旧是难点


2、删除帖子之后,还要考虑父亲节点的isLeaf字段是否更新


这个时候,如何表示出父id?

与其之后再取pid属性,不如开始就传参数


把更新pid的isLeaf的代码放在哪?

“整体的删除语句”后。


【没有十全十美】你增加了一些冗余字段,查询的时候方便了,但是,同时带来的是,更改删除的时候,一定不会很方便。


3、事务处理

conn.setAutoCommit(false);

conn.commit();

conn.setAutoCommit(true);

 

sql精进】看console-sql语法-打印sql语句-DBbrowser查看-sql教程查标准语句


【杂记】

1、没娘的孩儿(03:30 )

2、现在是问题,练多了也就不是问题了。(19:17 )

3、寿终正寝的元老(24:30)

 

【反馈】

不容易,终于在累的时候学会该马虎的地方就马虎了——【杂记】简略处理

以及,有增加就有删除,如此才能达到平衡。删除必不可少。