1. 程式人生 > >面向解決問題的java程式設計,spring boot,mybatis generator和坑-01廢話篇

面向解決問題的java程式設計,spring boot,mybatis generator和坑-01廢話篇

    當一個立志成為程式設計師的人開始一門新技術的學習時,是很興奮的,因為很多新技術的介紹總是有很多酷炫的新名稱,酷炫的新功能和一些與舊技術的對比,在對比中,新技術總是用各種對比資料把舊資料踩在腳底,彰顯自己的高富帥。於是,迫不及待的新手開始了新技術的探索之旅,全然忘記了他為什麼要學習這門新技術,雙眼也看不清這些酷炫技術後面的坑。於是,當新技術的酷炫外衣剝去之後,坑歷歷在目,連上網路,搜尋半天卻因為技術太新而無人應答,這時候新手變成了怨念在苦手,在坑中暗暗哭泣。

    我對新的技術總是很提防,因為它就像遊戲的戰爭迷霧,風險隱藏其中,不走近根本就不知道。但一門技術的出現,總是光芒萬丈,都是要砸掉舊技術的鎖鏈,解放生產力,提高一個數量級的效能,等等等等,好不誘惑。怎麼平衡技術的風險和效益呢,下面我說下我的判斷標準。

    對我而言,我一般從很世俗的標準來評判這個問題,那就是是否能幫我解決問題。是的,我一般都是心懷問題在各種技術中游走,只有這樣,你才會知道你要什麼,對我而言,我需要的第一樣東西,就是少幹活,多產糧。為什麼要用spring,因為IOC?因為POJO?因為AOP?No,都9012年,誰還在乎這個,我用spring的唯一原因是它幾乎關聯了市面上所有的流行工具,各種DAO(hibernate,mybatis),各種MQ(activemq,rabbitmq),各種快取(memcache,redis),基本上大家用的主流技術工具或多或少都能和spring關聯上,這樣就極大的節省我用各種工具的時間。到spring boot的時候,其實我是有意見的。因為spring boot號稱是為了簡化大家的配置工作,但在現實的業務的世界,複雜是不可避免的,如果在入門的時候簡單了,那麼在後面必將要補回來的,因為複雜的本質是業務的複雜,沒有誰能夠抹平復雜的業務,所以複雜的配置也必然存在。但是start的出現解決了spring和各種工具的依賴包問題,這個確確實實的比我自個在maven的pom中去加jar包要省事的多,jar地獄的問題有所緩解。所以我最後決定使用spring boot的最大原因,就是starter。記住這個原因很重要,因為我們每用一個新的技術工具,技術框架,其實都要明確的問自己,為什麼要用,解決了什麼問題。

    然後再說下mybatis,mybatis一般的說法是比hibernate要靈活,要輕量級。但不好意思,我一開始就不是用mybatis對標hibernate,因為我的sql還不錯,所以對任何包裝sql的dao工具都不是感冒,我都能用sql搞定了,為啥要用一個包裹了sql的工具。是的,我對標的是jdbctemplate,它其實很好用,靈活好用,簡單方便,我現在有時候還是喜歡它。那為什麼要用mybatis呢,因為它能返回dataobject?這是一個原因,因為一個數據物件的可讀性,比用jdbctemplate返回的map要好看一些,但這不是根本原因,因為jdbctemplate也可以返回 資料物件,mybatis並沒有絕對的優勢。是的,我最終選擇的其實不是mybatis,而是mybatis generator,因為它可以幫我生成所有基礎的crud程式碼,我不需要改任何東西。擁有它,我就擁有了所有資料表的dataobject和所有的CRUD,是針對所有表的所有欄位的查詢,這個很重要,因為我已經不願意一遍又一遍的寫基本的CRUD語句了,特別是修改了資料庫表的時候。這就是選擇mybatis generator的原因,我不想寫CRUD,不想改CRUD操作程式碼,這就是我需要用它解決的問題。

    這一篇算是廢話,因為程式設計師一般不愛看這個,show me the code,下一章,我們開始從spring  boot的新建專案開始,但我不會簡單的重複別人的做法,我會在建立的時候,帶上