每週的博客從5月份有開始斷更了,看來堅持每週寫一篇博客缺失很難,不過從這周開始,除了一方面把之前的那幾周沒寫的博客補回來,另一方面從這周開始要真正逼自己的寫一篇博客,並爭取在7月份前搭建起自己的個人博客網站!好,廢話少說,接下來快速進入今天的話題。
今天寫的博客還是寫自己開發過程中遇到的坑。相信大家在開發Java web應用時對Mybatis這個第三方ORM(對象關係映射)框架並不陌生,但在開發過程有沒有遇到坑呢?作者本人在開發過程就遇到這個坑,這個坑對自己的傷害挺大的😂這個坑具體是怎麼樣的呢?聽我慢慢描述。 首先在我的項目裏我定義瞭如下這個java entity類 - RiskSchemeNodeInfo。
接着我定義了這個實體類的mapper類,並繼承了框架中的CommonsMapper公共類,這個公共類有着豐富靈活的增刪改查方法。如下圖所示
緊接着我在某個類中使用到了這個mapper類的updateByPrimaryKeySelective方法,如下圖所示。誰知當我更新RiskSchemeNodeInfo這個類所對應的數據庫表字段時,發現available這個字段在控制檯打印的更新sql語句中居然沒有,正常來說應該是update xxxx set available = ?, xxx = ? … where xxx = ?這樣的形式,但是其它字段都有打印呀,就available這個字段沒有!我就納悶了。
經過再三思考,我把RiskSchemeNodeInfo中的available這個字段的數據類型由boolean改成了Boolean,也就是改爲了其包裝類型。如下圖所示:
重啓了項目運行時發現居然可以了,原來是數據類型搞得鬼!大家在編寫java bean對象並應用到orm框架(如Mybatis或Hibernate等等)時,一定要切記將java bean類中所有字段的數據類型都寫成其包裝類型,也就是要寫Integer而不是int,其它數據類型以此類推!
好,今天就講到這裏,早睡,晚安!