java - dao接口设计删除一篇文章依据id(数字类型),是否需要传递,作者id?
PHPz
PHPz 2017-04-18 10:25:34
0
3
523

大家好!我在写一个个人博客,博客平台允许多个作者,现在设计dao接口遇到问题,当我删除一篇文章的时候是否应该传递作者id,代码如下:

方式一

// 防止其他作者通过修改id参数删除文章,需要在service中,先判断该文章是当前作者的
int deleteById(Integer id);

方式二

// 删除文章,依据编号和作者编号
int deleteByIdAndAuthorId(Integer id, Integer authorId);

请问该怎么做,给我点建议?

PHPz
PHPz

学习是最好的投资!

全部回覆(3)
阿神

我個人的想法是兩種實作思路
第一種dao層你做方式二這樣的,這樣你在service透過session取到操作用戶的id之後,在dao層操作資料庫時加上作者id,給前端的介面是傳文章id過來後端
第二種dao層做方式一的,在service層取一下文章id對應的作者id,判斷一下操作用戶id和作者id是否相符,相符就調用dao層刪除,不符就回傳錯誤,前端的介面一樣還是傳文章id過來

沒注意你的註解哈
那麼我再解釋一下我的想法吧,我覺得你提的方式一比較好,首先在service做判斷邏輯,Dao層專注於操作數據庫,也方便把判斷邏輯進行改寫,同時還能回傳錯誤操作的提示,如果你說方式二也能判斷,也能拋異常告訴用戶操作錯誤,只是把判斷放在Dao層而已,那和我說的第二種也類似了,都是先取,再判斷,再刪,那不如把判斷邏輯交給service層來做呢
當然如果刪除操作可以返回被操作的數據條數,那也可以選擇方式二嘛,如果操作了0條數據,那就代表文章不屬於操作用戶嘛,但是那樣也很蛋疼,刪除操作做完了才告訴你這篇文章不屬於你、你不可以操作,想起來就怪怪的
一點點個人意見哈,不贊同的話可以繼續討論

阿神

個人感覺,

如果一篇部落格對應一個作者的話,可以直接考慮方式二,
實作起來邏輯較簡單,同時能減少資料庫查詢次數。

如果系統考慮到除作者之外還有其他管理員能對博客系統進行操作,考慮方式一,
這樣擴展性好,當修改刪除需求時較方便。

——一個沒做過部落格系統的人的猜想

洪涛

防止其他作者透過修改id參數刪除文章,需要在service中,先判斷該文章是目前作者的

這個操作,無論如何傳參,你都是要檢查的。

那麼問題就簡單了,問題就變成了從session取authorId,還是從query string裡面拿authorId。

根據我用了多年的部落格的經驗。流行的部落格程式是两个参数都从query string里面传递。但是,不是强制的。也就是你只传postId也是可以的。之所以这样做。是为了有更多的参数可以供自定义url格式使用。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!