一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

構建微服務:如何優(yōu)雅的使用mybatis

 openlabzeng 2016-11-20

#長按上圖識別二維碼,參與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了 :))




好了下來分別介紹兩種開發(fā)模式

 無配置文件注解版 
就是一切使用注解搞定。

1 添加相關maven文件




完整的pom包這里就不貼了,大家直接看源碼


2、application.properties 添加相關配置


springboot會自動加載spring.datasource.*相關配置,數(shù)據(jù)源就會自動注入到sqlSessionFactory中,sqlSessionFactory會自動注入到Mapper中,對了你一切都不用管了,直接拿起來使用就行了。

在啟動類中添加對mapper包掃描@MapperScan


或者直接在Mapper類上面添加注解@Mapper,建議使用上面那種,不然每個mapper加個注解也挺麻煩的


3、開發(fā)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ù)庫使用,直接傳入實體類會自動解析屬性到對應的值
● @Update 負責修改,也可以直接傳入對象
● @delete 負責刪除
注意,使用#符號和$符號的不同:



4、使用

上面三步就基本完成了相關dao層開發(fā),使用的時候當作普通的類注入進入就可以了



源碼中controler層有完整的增刪改查,這里就不貼了

 極簡 xml 版本

極簡xml版本保持映射文件的老傳統(tǒng),優(yōu)化主要體現(xiàn)在不需要實現(xiàn)dao的是實現(xiàn)層,系統(tǒng)會自動根據(jù)方法名在映射文件中找對應的sql.

1、配置
pom文件和上個版本一樣,只是application.properties新增以下配置



指定了mybatis基礎配置文件和實體類映射文件的地址

mybatis-config.xml 配置


這里也可以添加一些mybatis基礎的配置

2、添加User的映射文件




其實就是把上個版本中mapper的sql搬到了這里的xml中了

3、編寫Dao層的代碼


對比上一步這里全部只剩了接口方法


4、使用

使用和上個版本沒有任何區(qū)別,大家就看代碼吧

如何選擇

兩種模式各有特點,注解版適合簡單快速的模式,其實像現(xiàn)在流行的這種微服務模式,一個微服務就會對應一個自已的數(shù)據(jù)庫,多表連接查詢的需求會大大的降低,會越來越適合這種模式。
老傳統(tǒng)模式比適合大型項目,可以靈活的動態(tài)生成SQL,方便調(diào)整SQL,也有痛痛快快,洋洋灑灑的寫SQL的感覺。


福利 我為開源中國公眾號出謀劃策

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产福利一区二区三区四区| 国产av精品高清一区二区三区| 麻豆剧果冻传媒一二三区| 91人妻丝袜一区二区三区| 国产精品一区二区成人在线| 午夜亚洲少妇福利诱惑| 国产女同精品一区二区| 久久热这里只有精品视频| 99热九九热这里只有精品| 丁香七月啪啪激情综合| 久久亚洲午夜精品毛片| 女人高潮被爽到呻吟在线观看| 久久福利视频这里有精品| 色婷婷中文字幕在线视频| 欧美一级不卡视频在线观看| 亚洲一区二区三区三州| 日本视频在线观看不卡| 空之色水之色在线播放| 字幕日本欧美一区二区| 国产欧美日韩精品成人专区| 国产精品涩涩成人一区二区三区 | 99免费人成看国产片| 午夜福利视频偷拍91| 在线免费观看黄色美女| 国产成人精品一区二三区在线观看 | 日韩中文字幕狠狠人妻| 丝袜破了有美女肉体免费观看 | 国产又大又黄又粗的黄色| 性欧美唯美尤物另类视频| 99久久精品国产日本| 国产亚洲二区精品美女久久| 亚洲日本加勒比在线播放| 欧美午夜不卡在线观看| 日韩女优精品一区二区三区| 日韩av亚洲一区二区三区| 欧美午夜视频免费观看| 人妻内射精品一区二区| 熟女乱一区二区三区四区| 少妇人妻一级片一区二区三区| 狠狠干狠狠操在线播放| 久久精品国产亚洲熟女|