#長按上圖識別二維碼,參與OSC源創(chuàng)會年終盛典#
這兩天啟動了一個新項目因為項目組成員一直都使用的是 mybatis,雖然個人比較喜歡 jpa 這種極簡的模式,但是為了項目保持統(tǒng)一性技術選型還是定了 mybatis。到網(wǎng)上找了一下關于 spring boot 和 mybatis 組合的相關資料,各種各樣的形式都有,看的人心累,結合了 mybatis 的官方 demo 和文檔終于找到了最簡的兩種模式,花了一天時間總結后分享出來。orm 框架的本質(zhì)是簡化編程中操作數(shù)據(jù)庫的編碼,發(fā)展到現(xiàn)在基本上就剩兩家了,一個是宣稱可以不用寫一句 sQ L的 hibernate,一個是可以靈活調(diào)試動態(tài)sql的mybatis,兩者各有特點,在企業(yè)級系統(tǒng)開發(fā)中可以根據(jù)需求靈活使用。發(fā)現(xiàn)一個有趣的現(xiàn)象:傳統(tǒng)企業(yè)大都喜歡使用hibernate,互聯(lián)網(wǎng)行業(yè)通常使用mybatis。hibernate特點就是所有的sql都用Java代碼來生成,不用跳出程序去寫(看)sql,有著編程的完整性,發(fā)展到最頂端就是spring data jpa這種模式了,基本上根據(jù)方法名就可以生成對應的sql了,有不太了解的可以看我的上篇文章構建微服務:spring data jpa的使用。mybatis初期使用比較麻煩,需要各種配置文件、實體類、dao層映射關聯(lián)、還有一大推其它配置。當然mybatis也發(fā)現(xiàn)了這種弊端,初期開發(fā)了generator可以根據(jù)表結果自動生產(chǎn)實體類、配置文件和dao層代碼,可以減輕一部分開發(fā)量;后期也進行了大量的優(yōu)化可以使用注解了,自動管理dao層和配置文件等,發(fā)展到最頂端就是今天要講的這種模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以簡單配置輕松上手。 現(xiàn)在想想spring boot 就是牛逼呀,任何東西只要關聯(lián)到spring boot都是化繁為簡。mybatis-spring-boot-starter官方說明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
其實就是myBatis看spring boot這么火熱也開發(fā)出一套解決方案來湊湊熱鬧,但這一湊確實解決了很多問題,使用起來確實順暢了許多。 mybatis-spring-boot-starter 主要有兩種解決方案,一種是使用注解解決一切問題,一種是簡化后的老傳統(tǒng)。當然任何模式都需要首先引入 mybatis-spring-boot-starter 的 pom 文件,現(xiàn)在最新版本是1.1.1(剛好快到雙11了 :))
2、application.properties 添加相關配置springboot會自動加載spring.datasource.*相關配置,數(shù)據(jù)源就會自動注入到sqlSessionFactory中,sqlSessionFactory會自動注入到Mapper中,對了你一切都不用管了,直接拿起來使用就行了。在啟動類中添加對mapper包掃描@MapperScan
或者直接在Mapper類上面添加注解@Mapper,建議使用上面那種,不然每個mapper加個注解也挺麻煩的第三步是最關鍵的一塊,sql生產(chǎn)都在這里
為了更接近生產(chǎn)我特地將user_sex、nick_name兩個屬性在數(shù)據(jù)庫加了下劃線和實體類屬性名不一致,另外user_sex使用了枚舉 ● @Select 是查詢類的注解,所有的查詢均使用這個● @Result 修飾返回的結果集,關聯(lián)實體類屬性和數(shù)據(jù)庫字段一一對應,如果實體類屬性和數(shù)據(jù)庫屬性名保持一致,就不需要這個屬性來修飾。● @Insert 插入數(shù)據(jù)庫使用,直接傳入實體類會自動解析屬性到對應的值上面三步就基本完成了相關dao層開發(fā),使用的時候當作普通的類注入進入就可以了源碼中controler層有完整的增刪改查,這里就不貼了極簡xml版本保持映射文件的老傳統(tǒng),優(yōu)化主要體現(xiàn)在不需要實現(xiàn)dao的是實現(xiàn)層,系統(tǒng)會自動根據(jù)方法名在映射文件中找對應的sql.pom文件和上個版本一樣,只是application.properties新增以下配置指定了mybatis基礎配置文件和實體類映射文件的地址mybatis-config.xml 配置
其實就是把上個版本中mapper的sql搬到了這里的xml中了使用和上個版本沒有任何區(qū)別,大家就看代碼吧兩種模式各有特點,注解版適合簡單快速的模式,其實像現(xiàn)在流行的這種微服務模式,一個微服務就會對應一個自已的數(shù)據(jù)庫,多表連接查詢的需求會大大的降低,會越來越適合這種模式。老傳統(tǒng)模式比適合大型項目,可以靈活的動態(tài)生成SQL,方便調(diào)整SQL,也有痛痛快快,洋洋灑灑的寫SQL的感覺。
|