日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Let‘s Fluent:更顺滑的MyBatis

發布時間:2024/8/23 编程问答 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Let‘s Fluent:更顺滑的MyBatis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介:?只需瞅一眼Google Trends上全球Java界最熱門的兩款SQL映射框架近一年的對比數字,就不難了解其實力分布:在此領域,MyBatis早已占領東亞地區開發者市場,并以絕對優勢穩居中國最搶手Java數據庫訪問框架之首。

作者 | 金戟
來源 | 阿里技術公眾號

只需瞅一眼Google Trends上全球Java界最熱門的兩款SQL映射框架近一年的對比數字,就不難了解其實力分布:在此領域,MyBatis早已占領東亞地區開發者市場,并以絕對優勢穩居中國最搶手Java數據庫訪問框架之首。

MyBatis霸榜的底氣來源于其廣袤的生態以及國內眾多大廠的支持。而在琳瑯滿目的MyBatis擴展中,還埋藏著許多“寶藏項目”,來自阿里技術團隊的Fluent MyBatis便是其中一顆獨特的新星。

一 普拉斯們不香了

從iBatis到MyBatis,再到國內團隊以MyBatis Plus為典型代表的諸多周邊工具,"Batis"系列套餐的發展歷程,幾乎又是一部XML的興衰史。最初的iBatis誕生于2002年,彼時XML在Java乃至整個軟件技術界都還相當盛行,和同時期的許多項目一樣,iBatis硬生生的將一堆堆XML塞進千家萬戶的項目里。

許多年后,曾今與iBatis并肩過的社區戰友們紛紛淡出了歷史舞臺,少數像Spring這樣延續至今的佼佼者,也逐漸摒棄XML,向代碼化配置的方式發展。在這方面,iBatis一直是個保守派,即使在MyBatis接過iBatis的衣缽之后,也只是”重磅“推出了支持代碼執行SQL的@Select/@Insert/@Update/@Delete注解(以及相應的4種Provider注解),用來抵擋開發者們對XML泛濫的吐槽,這是在2010年中旬,然后就再無動作。直到2016年底,MyBatis的主要貢獻者之一Jeff Butler正式創建MyBatis Dynamic SQL項目,MyBatis終于開始全面擁抱無XML的代碼化SQL構建。

在從MyBatis到MyBatis Dynamic SQL之間長達6年多的空窗期里,開源社區催生出了許多民間基于MyBatis的無XML代碼方案,其中流行得比較廣泛的是Tk Mybatis、MyBatis Plus這類內置Mapper和自動生成CRUD的擴展庫,一經推出就收獲諸多好評。包括MyBatis Plus里實際上并不太完備的"條件構造器"功能,也由于當時同類解決方案的匱乏而頗受追捧。與此同時,在MyBatis社區之外,一直在默默發展的JOOQ是一款歷史與MyBatis幾乎同樣悠久的純Java動態SQL執行庫,它的用戶群體不大,卻口碑甚好。如今在任意搜索引擎上輸入"MyBatis vs JOOQ",依然能得到幾乎是一邊倒選擇JOOQ的結果,大家給出的理由也非常一致:簡潔、靈活、無需XML,很"Java"。而在MyBatis陣營里,若是拿出MyBatis Plus的"條件構造器"與之正面對陣,只消三個回合,就會被屁滾尿流的打出擂臺。只可惜JOOQ的家底沒有MyBatis那樣殷實,早早走上了商業數據庫支持賣License收費的道路,才讓MyBatis免于在輿論上迎來自己的中年危機。

Fluent MyBatis誕生于2019年底,即使與MyBatis Dynamic SQL相比都是晚輩,然而尚處成長期的它就已透出了青出于藍而勝于藍的味道。

在實現方式上,MyBatis Plus覆寫并替換了部分MyBatis內部類型的方法,整體機制較重,卻也因此能將一些功能細節隱藏到用戶無需關注的內部邏輯里;與之相反,MyBatis Dynamic SQL的實現機制非常輕量,不僅完全基于MyBatis原生的Provider系列注解開發,而且沒有什么隱藏邏輯,對用戶的每張表自動生成相應的Entity、DynamicSqlSupport和Mapper三個類,全部放入用戶的源碼目錄里,因此暴露的細節比較多,代碼侵入性略高。Fluent MyBatis取二者之所長,整體機制與MyBatis Dynamic SQL更接近,同樣基于原生的Provider注解,對用戶的每個表生成Entity類和默認空白的Dao類,不同之處在于它還會通過JVM編譯期代碼增強功能自動生成許多開發者不可更改的標準輔助類,這些代碼無需放入用戶的源碼目錄但能夠在編碼時直接使用,即提供豐富的功能,又保證了用戶代碼的整潔。

在使用方式上,Fluent MyBatis同樣借鑒了前輩們的最優實踐,沒有花里胡哨的注解和配置,直接復用MyBatis連接,所有功能開箱即用。同時由于Fluent MyBatis將所有表字段、條件、操作都以方法調用形式提供,因此獲得了比其他同類項目都更好的IDE語法輔助。舉一個不太復雜的例子:

// 使用Fluent MyBatis構造查詢語句 mapper.listMaps(new StudentScoreQuery().select.schoolTerm().subject().count.score("count").min.score("min_score").max.score("max_score").avg.score("avg_score").end().where.schoolTerm().ge(2000).and.subject.in(new String[]{"英語", "數學", "語文"}).and.score().ge(60).and.isDeleted().isFalse().end().groupBy.schoolTerm().subject().end().having.count.score.gt(1).end().orderBy.schoolTerm().asc().subject().asc().end() );

MyBatis Dynamic SQL的語法也比較美觀,但字段名和min/max/avg等方法都需要靜態引用,比Fluent MyBatis稍顯遜色。

// 使用MyBatis Dynamic SQL構造查詢語句 mapper.selectMany(select(schoolTerm,subject,count(score).as("count"),min(score).as("min_score"),max(score).as("max_score"),avg(score).as("avg_score")).from(studentScore).where(schoolTerm, isGreaterThanOrEqualTo(2000)).and(subject, isIn("英語", "數學", "語文")).and(score, isGreaterThanOrEqualTo(60)).and(isDeleted, isEqualTo(false)).groupBy(schoolTerm, subject).having(count(score), isGreaterThan(1)) //當前其實還不支持having方法.orderBy(schoolTerm, subject).build(isDeleted, isEqualTo(false)).render(RenderingStrategies.MYBATIS3) );

JOOQ的歷史比較悠久,寫出來的代碼鋪天蓋地都是常量字段,功能強大但美觀度欠佳。

// 使用JOOQ構造查詢語句 dslContext.select(STUDENT_SCORE.GENDER_MAN,STUDENT_SCORE.SCHOOL_TERM,STUDENT_SCORE.SUBJECT,count(STUDENT_SCORE.SCORE).as("count"),min(STUDENT_SCORE.SCORE).as("min_score"),max(STUDENT_SCORE.SCORE).as("max_score"),avg(STUDENT_SCORE.SCORE).as("avg_score") ) .from(STUDENT_SCORE) .where(STUDENT_SCORE.SCHOOL_TERM.ge(2000),STUDENT_SCORE.SUBJECT.in("英語", "數學", "語文"),STUDENT_SCORE.SCORE.ge(60),STUDENT_SCORE.IS_DELETED.eq(false) ) .groupBy(STUDENT_SCORE.GENDER_MAN,STUDENT_SCORE.SCHOOL_TERM,STUDENT_SCORE.SUBJECT ) .having(count().ge(1)) .orderBy(STUDENT_SCORE.SCHOOL_TERM.asc(),STUDENT_SCORE.SUBJECT.asc() ) .fetch();

MyBatis Plus的條件構造器僅僅封裝了基本的SQL操作,對于字段、條件、別名等都要使用字符串拼接,極易出現由于拼寫失誤引起的SQL異常。

// 使用MyBatis Plus構造查詢語句 mapper.selectMaps(new QueryWrapper<StudentScore>().select("school_term","subject","count(score) as count","min(score) as min_score","max(score) as max_score","avg(score) as avg_score").ge("school_term", 2000).in("subject", "英語", "數學", "語文").ge("score", 60).eq("is_deleted", false).groupBy("school_term", "subject").having("count(score)>1").orderByAsc("school_term", "subject") );

在Java動態SQL構建的功能完整度方面,當前的排序是MyBatis Plus < MyBatis Dynamic SQL < Fluent MyBatis < JOOQ。

MyBatis Plus條件構造器在功能性上完敗,不僅無法表達JOIN、UNION語句,嵌套查詢之類稍復雜SQL也完全沒招。MyBatis Dynamic SQL支持JOIN和UNION語句,尚未支持嵌套查詢,且缺少HAVING等少量標準SQL語法。Fluent MyBatis支持多表JOIN、UNION、嵌套查詢和幾乎所有標準SQL語法,對于絕大多數場景都妥妥夠用。JOOQ是真正的王者,不僅支持標準SQL語法,連各廠商特有的專有關鍵字和內置方法都沒放過,如MySQL的ON DUPLICATE KEY UPDATE、PostgreSQL的WINDOW、Oracle的CONNECT BY等等。補齊各種SQL語法是一件瑣碎而費力的工作,考慮到SQL語法的總量已經基本不再變化,相信假以時日,各方的差距會逐漸縮小。

除了SQL基本功,特別值得一提的是Fluent MyBatis的獨門絕技:支持動態換表名(FreeQuery/FreeUpdate特性)。在云效項目的開發過程中,由于需要在各種嵌套查詢之上再根據視圖條件動態選擇聚合計算的維度表,多虧了Fluent MyBatis的動態表名功能,才得以在最大程度保留語法構造便利性的情況下,讓代碼復用成為可能。

相比密密麻麻的XML文件,Java代碼在易讀性和可維護性方面有著明顯的優勢。在官方和社區的共同推動下,一個全新的、代碼化的MyBatis生態正在冉冉升起。驀然回首,曾經驕傲的"Plus擴展"們全都不香了。

二 優雅的數據流

初識Fluent MyBatis,最明顯能感受到的特點是它及其便利的IDE語法提示。

基于數據表自動生成的Entity、Mapper、Query、Update等對象,讓所有的數據庫字段和SQL操作都變成了方法,串成平整的流式語句。即使是層層嵌套的查詢,也能表現得錯落有致:

new StudentQuery().where.isDeleted().isFalse().and.grade().eq(4).and.homeCountyId().in(CountyDivisionQuery.class, q -> q.selectId().where.isDeleted().isFalse().and.province().eq("浙江省").and.city().eq("杭州市").end()).end();

很容易就能看出,上述語句對應的SQL為:

SELECT * FROM student WHERE is_deleted = false AND grade = 4 AND home_county_id IN (SELECT id FROM county_division WHERE is_deleted = falseAND province = '浙江省'AND city = '杭州市' )

不僅如此,Fluent MyBatis實現的JOIN語法經過幾次調整后,現在的版本也已經十分美觀:

JoinBuilder.from(new StudentQuery("t1", parameter).selectAll().where.age().eq(34).end() ).join(new HomeAddressQuery("t2", parameter).where.address().like("address").end() ).on(l -> l.where.homeAddressId(),r -> r.where.id() ).endJoin().build();

其中利用Lambada語句表達JOIN條件的設計即充分符合了Java開發者的習慣,又很好的匹配了IDE語法提示的需要,細思極妙。

Fluent MyBatis中的流可以設置條件過濾,例如“僅更新值為非空的字段”:

new StudentUpdate().update.name().is(student.getName(), If::notBlank).set.phone().is(student.getPhone(), If::notBlank).set.email().is(student.getEmail(), If::notBlank).set.gender().is(student.getGender(), If::notNull).end().where.id().eq(student.getId()).end();

上面這段代碼等效于MyBatis中的如下XML內容:

顯然Java的流式代碼可讀性遠高于XML文件的尖括號套尖括號的層疊結構。

流是可續接的,對于更復雜的分支條件,Fluent MyBatis中能利用譬如下述語句,充分發揮出Java代碼的靈活性:

StudentQuery studentQuery = Refs.Query.student.aliasQuery().select.age().end().where.age().isNull().end().groupBy.age().apply("id").end(); if (config.shouldFilterAge()) {studentQuery.having.max.age().gt(1L).end(); } else if (config.shouldOrder()) {studentQuery.orderBy.id().desc().end(); }

這種基于外部變量狀態的判斷,已然超出了MyBatis的XML文件的能力范圍。

三 三分鐘源碼淺析

Fluent MyBatis的代碼由Fluent Generator和Fluent MyBatis兩個子項目組成。這對組合與MyBatis Generator搭檔MyBatis Dynamic SQL有異曲同工之妙:Fluent Generator通過讀取數據庫里的表,自動生成Fluent MyBatis所需的Entity和Dao對象;Fluent MyBatis提供編寫SQL語句的函數式DSL。

Fluent Generator子項目的代碼顯得樸實而平鋪直述,程序入口在包結構樹最外層的FileGenerator類型里,由開發者直接調用該類的build()方法,使用鏈式構造器方式傳入需讀取的表名和存放生成文件的目錄等配置。Fluent Generator根據這些信息從數據庫里讀取出表結構,然后為每張表生成Entity和Dao類型的Java文件,放置到約定位置,整個邏輯一氣呵成。值得一提的是,Fluent Generator的配置方法是完全代碼化的,相比MyBatis Generator雖支持純代碼化配置,卻在官方示例繼續沿用XML文件配置輸入的作風更勝一籌。

Fluent Generator生成的Dao類型默認是空的類,它只是一種推薦的數據查詢層結構,通過繼承各自的BaseDao類型,獲得便捷操作Mapper的能力。

Fluent MyBatis子項目的代碼要稍顯豐盈一些,分為三個模塊:

  • fluent-mybatis 包含各種公共基礎類
  • fluent-mybatis-test 測試用例
  • fluent-mybatis-processor 編譯期代碼生成器

fluent-mybatis模塊定義了與代碼生成相關的注解、數據模型和其他輔助類型,它們大多都是幕后英雄:開發者通常不會直接用到這個包中的類。

fluent-mybatis-test模塊包含豐富的測試用例,在一定程度上彌補了Fluent MyBatis當前階段尚不完備的文檔。平時遇到的許多Fluent MyBatis使用問題,若在文檔上無法找到,那么翻一翻代碼庫的測試用例,一定會有意外的收獲。

fluent-mybatis-processor模塊的原理與Lombook工具庫類似,但它并不修改原有的類型,而是掃描Entity類型上的注解,然后動態產生新的輔助類。Fluent Generator產出的Entity類就像是潘多拉盒子,蘊含著Fluent MyBatis魔法的秘密。FluentMybatisProcessor類是整場表演的魔術師,它將每個形如XyzEntity的實體類變幻出一系列輔助類,其中比較關鍵的包括:

  • XyzBaseDao:繼承BaseDao類型,實現IBaseDao接口,包含獲得Entity相關Mapper、Query、Update類型的方法,是Fluent Generator為用戶生成的空白Dao類的父類。
  • XyzMapper:實現IEntityMapper,IRichMapper、IWrapperMapper接口,用于構造Query和Update對象,以及執行IQuery或IUpdate類型的SQL指令。
  • XyzQuery:繼承BaseWrapper、BaseQuery類型,實現IWrapper、IQuery接口,用于組裝查詢語句的基本容器。
  • XyzUpdate:繼承BaseWrapper、BaseUpdate類型,實現IWrapper、IBaseUpdate接口,用于組裝更新語句的基本容器。
  • XyzSqlProvider:繼承BaseSqlProvider類型,用于最終組裝SQL語句。
  • 還有XyzMapping、XyzDefaults、XyzFormSetter、XyzEntityHelper:、XyzWrapperHelper等。由fluent-mybatis-processor模塊生成的許多類型都會在編寫業務代碼的時候用到。

一個典型的Fluent MyBatis工作流程是先通過生成的Query或Update類型組裝出執行對象,然后交給Mapper對象下發執行。譬如:

// 構造并執行查詢語句 List<StudentEntity> users = mapper.listEntity(new StudentQuery() .select.name().score().end().where.userName().like("user").end().orderBy.id().asc().end().limit(20, 10) );// 構造并執行更新語句 int effectedRecordCount = mapper.updateBy(new StudentUpdate().set.userName().is("u2").set.isDeleted().is(true).set.homeAddressId().isNull().end().where.isDeleted().eq(false).end() );

Query和Update類型不僅實現IQuery/IUpdate接口,還實現了IWrapper接口,前者用于組裝對象,后者用于讀取對象內容,這是一處很有心的設計。Mapper類型中的許多方法都能接收IQuery或IUpdate接口類型的對象,再通過方法上的@InsertProvider、@SelectProvider、@UpdateProvider或@DeleteProvider注解把實際請求轉給生成的Provider類型。Provider們從約定的Map參數中取出傳入的IWrapper執行對象,使用MapperSql工具類組裝SQL語句,最后交給MyBatis執行。

在Mapper里也有一些直接接受Map對象的方法,可以省去用IQuery/IUpdate描述SQL的過程,進行簡單的插入和查詢。傳入的原始Map對象同樣會在Provider里被讀取出來,用MapperSql組裝SQL語句,再交給MyBatis執行。

Fluent MyBatis的這種基于Provider機制的實現方式不僅能為用戶提供流暢的SQL構造體驗,也能充分復用MyBatis原生的諸多優點,譬如豐富的DB連接器、健全的防SQL注入機制等等,從而確保核心邏輯的穩定可靠。

四 再見XML君

追求卓越是技術人的天性,我來自阿里云·云效產品團隊,我們在用Fluent MyBatis。

如果您也早已厭倦MyBatis里毫無生氣的XML文件,那么不妨就和它們做個告別吧。

Let's Fluent,加入飛速流動的隊伍,一起來感受未來的風潮迎面吹來。

原文鏈接
本文為阿里云原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的Let‘s Fluent:更顺滑的MyBatis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

日韩理论在线播放 | 午夜国产一区二区 | 久久6精品 | 91精品欧美| 91精品在线视频观看 | 精品国产电影一区二区 | 在线观看国产www | 国产中文字幕视频在线观看 | 精品久久久久久久久久久久久 | 国产一区在线免费 | 麻豆av电影| 久久草草热国产精品直播 | 欧美日韩国产一区二区三区在线观看 | 国产精品一区一区三区 | 最近高清中文字幕 | 五月天天在线 | 久久九九视频 | www狠狠 | 超碰国产人人 | 久久超级碰视频 | 人人舔人人射 | 欧美精品在线免费 | www.玖玖玖| 日韩xxxx视频 | 免费观看日韩av | 黄在线| 亚洲婷婷综合色高清在线 | 久久久99国产精品免费 | 亚洲婷婷综合色高清在线 | 久久久久 免费视频 | 中文字幕色婷婷在线视频 | 国产日韩视频在线 | 国产在线精品福利 | www.五月婷婷 | 999热线在线观看 | 最新av电影网站 | 国产成人精品亚洲日本在线观看 | 久久婷婷影视 | 在线观看国产福利片 | 国产精品一区二区电影 | 国产一级片直播 | 国产一区二区播放 | 中文字幕日韩免费视频 | 欧美日韩一区二区免费在线观看 | 国产精品s色 | free. 性欧美.com | 婷婷久久丁香 | 蜜臀久久99精品久久久久久网站 | 一区电影 | 日韩成人高清在线 | 亚洲久草网 | 日本中文字幕影院 | 亚洲激情国产精品 | 丁香九月婷婷综合 | 麻豆传媒电影在线观看 | 99这里精品 | 国内外成人在线视频 | 欧美日韩在线视频一区 | 日日精品 | 久久精品三| 色久综合 | 日韩免费中文字幕 | 波多野结衣电影一区 | avcom在线| 91精品一区二区在线观看 | 国产精品久久久久久久久久久免费看 | 黄色中文字幕 | 日韩在线视频观看免费 | 色婷婷午夜 | 中文字幕资源网 国产 | 久99久精品视频免费观看 | 成人免费视频在线观看 | 国产精品久久久久久一二三四五 | 国产美女搞久久 | 色久综合 | 国产视频 久久久 | 日韩久久久久久久久 | 99精品久久久 | 久久不射电影院 | 免费视频久久久久久久 | 欧美专区亚洲专区 | 中文av网 | 国产成人av电影 | 福利视频区 | av成人在线电影 | 国产在线观看免 | 激情网站五月天 | 深夜免费福利网站 | 国产成人99av超碰超爽 | 色婷婷激情电影 | 色婷婷综合视频在线观看 | 日韩影视在线观看 | 久久激情婷婷 | 日韩成人精品一区二区 | 午夜在线免费视频 | 成年人在线免费看视频 | 午夜精品电影 | 色资源网在线观看 | 国产99久久精品 | 天天亚洲综合 | 久久国产一区 | 久久av高清 | 久久久久久久久久影视 | 欧美人zozo | 久久久久久久久久久综合 | 欧美日韩高清免费 | 国产不卡在线视频 | 99精品免费在线观看 | 国产视频1区2区3区 久久夜视频 | 成人午夜免费剧场 | 正在播放久久 | 黄色成年片 | 欧美网址在线观看 | 香蕉视频在线看 | 婷婷视频在线观看 | av动图| 国产精品成人一区二区三区 | 久久久免费精品视频 | 免费网站在线观看人 | 国产精品伦一区二区三区视频 | 日韩视频免费观看高清完整版在线 | 狠狠的操狠狠的干 | 午夜色性片 | 国产一区在线观看视频 | 香蕉影视在线观看 | 手机看片福利 | 成人理论在线观看 | 91免费高清观看 | 中文字幕在线播放一区二区 | 精品乱码一区二区三四区 | 黄色一级免费电影 | 久久9视频 | 久久久久亚洲精品成人网小说 | 亚洲最新视频在线 | 亚洲成av人片 | 久久久九色精品国产一区二区三区 | 久久九九免费 | 国产精品一区二区三区电影 | 中文字幕在线第一页 | 欧美资源在线观看 | 五月天久久久久久 | 激情中文在线 | 日韩在线高清视频 | 久久狠狠亚洲综合 | 久久线视频| 日本精品一区二区 | 97av在线视频免费播放 | 九九久久影视 | 久久久精品一区二区三区 | 超碰97在线资源站 | 我要看黄色一级片 | 搡bbbb搡bbb视频 | 91欧美在线| 日本不卡一区二区三区在线观看 | 亚洲视频在线观看免费 | 九九久久影院 | 一区二区国产精品 | 狠狠色丁香久久婷婷综合五月 | 成人午夜免费剧场 | 在线观看欧美成人 | 国产成人免费 | 四虎永久免费在线观看 | 亚洲日日日 | 欧美极品少妇xbxb性爽爽视频 | 日韩av图片 | 国产精品18久久久久久久网站 | 亚洲资源在线网 | 中文字幕日韩精品有码视频 | 91插插插免费视频 | 黄色av网站在线观看免费 | 亚洲视频精品在线 | 91亚洲国产成人久久精品网站 | 99福利片| 欧美精品在线观看 | 久久综合九色综合久久久精品综合 | 亚洲涩涩涩涩涩涩 | 久久精品国产精品亚洲 | 久久这里只有精品久久 | 91视频大全 | 天堂av网站 | 国产一区二区精 | 国产精品色婷婷视频 | 精品久久久久久亚洲综合网站 | 国产精品自产拍在线观看中文 | 天天综合久久综合 | 久久精品视频播放 | 精品亚洲成a人在线观看 | 成年人视频在线观看免费 | 免费av看片 | 久久黄色片子 | 公开超碰在线 | 婷婷久久亚洲 | 五月婷久| 又黄又刺激又爽的视频 | 99re中文字幕 | 精品一区二区av | 久久国内精品视频 | 狠狠躁夜夜a产精品视频 | 成人av在线看 | 日韩在线视频观看免费 | 成 人 黄 色 视频免费播放 | 国产日韩欧美在线观看视频 | 一区二区三区福利 | 九九免费在线观看 | 97视频网站 | 久久夜色网 | 在线成人小视频 | 美女福利视频在线 | 顶级bbw搡bbbb搡bbbb | 国产网站av | 国产精品久久久久影院日本 | 很黄很色很污的网站 | 日韩精品一区二区三区视频播放 | 免费人成网 | 日韩午夜在线观看 | 午夜国产影院 | 成人免费在线网 | 色的网站在线观看 | www久久九| 日本三级不卡视频 | 九九99| 免费日韩视频 | 在线观看的黄色 | 99中文视频在线 | 黄色aa久久| 免费看亚洲毛片 | 操操爽| 国产精品色婷婷视频 | 午夜色大片在线观看 | 久久综合久久综合九色 | 欧美高清视频不卡网 | 亚洲视屏在线播放 | 在线 国产 亚洲 欧美 | 手机在线黄色网址 | 中文字幕一区二区三区在线视频 | 成年人在线免费看视频 | 天堂av网址 | 奇米影视在线99精品 | 久久色亚洲 | 久久这里精品视频 | 91久久精品一区二区三区 | 国产中文在线观看 | av网站手机在线观看 | 久久毛片网站 | 日韩一区二区三区不卡 | 伊人国产女 | 五月婷婷视频在线观看 | 国产成在线观看免费视频 | 亚洲精品在线资源 | 最新中文字幕在线资源 | 国产成人精品电影久久久 | 一区二区三区国产欧美 | 91最新视频在线观看 | 日韩v在线91成人自拍 | 一区二区观看 | 69国产精品视频 | 在线看毛片网站 | 天天操狠狠操网站 | 婷婷午夜 | 国产精品久久久久影院日本 | 日日夜夜天天久久 | 成年人天堂com | 欧美a级在线播放 | 丁香六月五月婷婷 | 少妇做爰k8经典 | 一本一道久久a久久综合蜜桃 | 久久不卡视频 | 免费观看一区二区三区视频 | 黄色成人av | 亚洲 中文 在线 精品 | 久久国产一区二区三区 | 久久久久久久久久久高潮一区二区 | 国产亚洲精品久久久久久久久久 | 国产在线播放一区二区三区 | 久久99影院 | 天堂网一区 | 国产色 在线| www久久| 18性欧美xxxⅹ性满足 | 国产精品久久久久免费观看 | 97精产国品一二三产区在线 | 色天天天 | 992tv人人草 黄色国产区 | 中文字幕在线电影 | 色中色亚洲 | bbb搡bbb爽爽爽 | 久久69av| 三三级黄色片之日韩 | 2020天天干夜夜爽 | 欧美日韩另类在线观看 | 日本中文在线播放 | 4438全国亚洲精品观看视频 | 91人人澡| 欧美激情精品久久 | 久久人人精品 | 看av在线| 91探花国产综合在线精品 | 99视频网站 | 九色精品免费永久在线 | 一区二区视频免费在线观看 | 99精品久久久久久久久久综合 | 首页国产精品 | 欧美一区二区在线看 | 久草在线国产 | 人人艹视频 | 亚洲欧洲国产日韩精品 | 99久久久久免费精品国产 | 久久精品欧美日韩精品 | 一区二区三区免费 | 黄免费在线观看 | 日日狠狠| 人人超碰人人 | 国产精品久久艹 | 福利区在线观看 | 波多野结衣电影一区二区 | 国产资源精品在线观看 | 高清av不卡 | 国产一级黄色免费看 | 中文字幕日本在线 | 亚洲精品456在线播放 | 在线激情网| 成人中文字幕+乱码+中文字幕 | 国产麻豆果冻传媒在线观看 | 在线精品一区二区 | 日韩av高清| 久久网站免费 | 欧美日韩国产精品一区二区 | 91一区二区三区在线观看 | 97免费公开视频 | 国产盗摄精品一区二区 | 亚洲人成人在线 | 九九欧美 | 狠狠操狠狠 | 免费 在线 中文 日本 | 欧美精品网站 | 亚洲欧美少妇 | 在线视频欧美精品 | 亚洲激精日韩激精欧美精品 | 中文在线a√在线 | 亚州欧美视频 | 天天爽天天爽 | 欧美成人精品三级在线观看播放 | 午夜av在线免费 | 五月婷婷导航 | 久操中文字幕在线观看 | 黄色一区三区 | 综合网天天色 | 国产韩国日本高清视频 | 中文字幕字幕中文 | 国产最新福利 | 欧美日韩一区二区三区免费视频 | 色射爱 | 国产人成精品一区二区三 | 99精品福利 | 深爱五月激情五月 | 国产免费午夜 | 又黄又爽又刺激视频 | 日韩精品免费一区二区在线观看 | 激情丁香| 香蕉视频国产在线 | 天天综合网国产 | 六月婷操 | 少妇bbbb搡bbbb桶 | 国产精品网址在线观看 | 国产高清在线观看 | 久草在线视频资源 | 日日爱999 | 久久99精品热在线观看 | 国产在线永久 | 色吊丝av中文字幕 | 久久久久欧美精品 | 九九热在线观看 | 久草视频99 | 69视频永久免费观看 | 欧美日韩国产欧美 | 日韩理论在线播放 | 性色大片在线观看 | 久久一区二区三区超碰国产精品 | 久久精品免视看 | 亚洲一区精品人人爽人人躁 | 久久久久日本精品一区二区三区 | 中文字幕二区 | 免费在线观看av网站 | 婷婷九九| 日韩在线观看视频网站 | 日韩精品视 | 天堂入口网站 | 久久久久电影网站 | 丁香视频五月 | 91av视频网站| 亚洲综合视频在线播放 | 韩国精品一区二区三区六区色诱 | 亚洲国产无 | 欧美精品乱码久久久久久 | 国产精品第72页 | 亚洲精品视频免费 | 波多野结衣电影一区二区三区 | 中文字幕在线观看视频一区二区三区 | 免费在线观看毛片网站 | 手机成人在线电影 | 日韩高清不卡在线 | 国产精品资源 | 日韩久久精品一区 | 国产在线精品一区 | 色噜噜噜 | 99久久久成人国产精品 | 午夜久草| av中文资源在线 | 国产91综合一区在线观看 | 91片网 | 99r国产精品 | 日韩在线无 | 日韩欧美电影 | 日韩精品一区二区免费 | 911精品视频 | av在线超碰 | 天天看天天干天天操 | 婷婷激情综合 | 国内毛片毛片 | 激情视频综合网 | 99这里只有精品99 | 欧美色图p | 精品久久久久久亚洲综合网站 | 91av中文字幕| 亚洲欧洲av在线 | 国产精品免费一区二区三区 | 激情伊人 | 日日干影院 | 射射射av | 色综合久久久久综合体桃花网 | 91九色蝌蚪视频网站 | 久久这里只有精品久久 | 欧美永久视频 | 久久久亚洲精品 | 99精品在线播放 | 亚洲一区二区黄色 | 极品久久久| 黄色aaaaa | 99精品在线免费视频 | 9999精品| 色永久免费视频 | 在线一区观看 | 国内精品久久久久久久影视简单 | 国产精品久久久免费 | 久草电影免费在线观看 | 中文字幕二区在线观看 | 在线播放日韩 | 懂色av一区二区三区蜜臀 | 色五丁香 | 国产原创中文在线 | 91香蕉视频色版 | 中文字幕av免费在线观看 | av在线免费播放网站 | 色欧美成人精品a∨在线观看 | 99精品久久久久 | 人人干人人做 | 欧美一二区视频 | 国内精品久久久久久久影视简单 | 欧美激情视频一区二区三区 | 麻豆传媒视频观看 | 国内精品久久久久久 | 精品一区欧美 | 婷婷六月综合网 | 欧美日bb| 五月婷婷av | www视频在线播放 | 黄色毛片在线看 | 日日碰狠狠添天天爽超碰97久久 | 日韩欧美69 | 99在线热播精品免费 | 97精品国产手机 | 免费进去里的视频 | 国产99久| 亚洲一级二级三级 | 久草国产在线观看 | 欧美一区二区三区不卡 | 亚洲精欧美一区二区精品 | 毛片网站在线 | 色婷婷国产精品一区在线观看 | 欧美日本啪啪无遮挡网站 | 久久久亚洲国产精品麻豆综合天堂 | 国产理论一区二区三区 | 青青河边草手机免费 | 色综合天天在线 | 久久欧美视频 | 天天干天天干天天 | 三级av在线免费观看 | 精品亚洲免费视频 | 97超碰超碰| 九九免费精品视频在线观看 | 欧美三级在线播放 | 欧美日韩视频在线一区 | 欧美一二三视频 | 欧美人人 | 久久精品中文字幕免费mv | 国产精品乱码久久久久久1区2区 | 国产91区| 国产精品成人av电影 | 五月天婷婷在线视频 | 久久精品直播 | av官网| 麻豆传媒精品 | 色网址99 | 欧美激情视频一区二区三区免费 | 亚洲伊人天堂 | 国产精品video | 精品久久久久亚洲 | av网站免费看 | 波多野结衣电影一区二区 | avav99| 国产精品第十页 | 操操操影院 | 99热这里有精品 | 亚洲精品欧美成人 | 涩涩在线 | 免费a视频在线观看 | 久草男人天堂 | 午夜在线国产 | 黄色大片日本免费大片 | 啪嗒啪嗒免费观看完整版 | 就色干综合 | av在线短片 | 国产人成一区二区三区影院 | 日韩高清一二区 | 中文字幕亚洲综合久久五月天色无吗'' | 97超碰香蕉 | 欧美一区二区三区不卡 | 天天夜操 | 成人在线观看你懂的 | 久久人人97超碰精品888 | 中文字幕在线视频一区 | 99久久久成人国产精品 | 久久99婷婷| av在线免费观看不卡 | 国产69精品久久久久99 | 欧美性色黄大片在线观看 | 欧美视频在线二区 | 亚洲三级毛片 | 婷婷伊人综合亚洲综合网 | av久久在线 | 五月综合网 | 亚洲精品视频在线观看网站 | 西西4444www大胆视频 | 日日干视频 | 日本在线视频网址 | 欧美日韩在线播放 | 91麻豆精品国产91久久久无需广告 | 国产视频手机在线 | 国产一区在线不卡 | 91精品国| 久久久精品 一区二区三区 国产99视频在线观看 | 制服丝袜一区二区 | 亚洲另类交| www.国产视频 | 国产老太婆免费交性大片 | 91视频午夜 | 韩国av永久免费 | 国产日本三级 | 91av99| 久久久久久久网站 | 天天干.com| 亚洲免费观看视频 | 欧美日韩国产网站 | 国产精品免费观看久久 | 亚州人成在线播放 | 欧美aa级| 成人一级视频在线观看 | 国产精品九九久久99视频 | 在线国产日韩 | 国产精品欧美久久久久久 | 国产99久久九九精品 | 久久在视频 | 国产丝袜制服在线 | 玖玖在线精品 | 激情综合国产 | 婷婷久久网站 | 九九久久影视 | 精品毛片一区二区免费看 | 精品资源在线 | 色中色综合 | 9999免费视频 | 精品国产伦一区二区三区观看说明 | 丁香花中文字幕 | 69av久久| 久久国产精品久久久久 | 久操免费视频 | 日韩三级久久 | 美女av免费| 国产亚洲精品久久19p | www亚洲视频 | 色视频网页 | 免费69视频 | 一区二区在线电影 | 欧美日韩xxxxx | 日韩视频一区二区 | 91久久久久久国产精品 | 九草视频在线观看 | 免费91麻豆精品国产自产在线观看 | 国产午夜精品一区二区三区欧美 | 91mv.cool在线观看 | 午夜aaaa| 精品久久久久久亚洲综合网 | 五月花激情| 91免费观看网站 | 日韩在线不卡视频 | 青青草久草在线 | 亚洲国产精品女人久久久 | avv天堂| 亚洲精品乱码久久久一二三 | 9999激情| 中文字幕一区二区三区四区视频 | 成人福利av | ww亚洲ww亚在线观看 | 亚洲成人精品av | 国产电影一区二区三区四区 | 中文字幕在线观看视频免费 | 亚洲专区免费观看 | 欧美日一级片 | 视频二区在线视频 | 国产精品毛片久久久久久久久久99999999 | 国产精品白浆视频 | 99视频在线免费观看 | 国产精品久久久久久久久久99 | 综合激情久久 | 91精品第一页 | 国产999精品久久久久久麻豆 | www最近高清中文国语在线观看 | 国产免费av一区二区三区 | 国产精品久久在线观看 | 69中文字幕| 91一区啪爱嗯打偷拍欧美 | 亚洲国产小视频在线观看 | 91福利试看 | 日韩网| 久久免费99精品久久久久久 | 99久久婷婷国产一区二区三区 | 五月婷香 | 久久久天天操 | 久久久黄色免费网站 | 久久精品亚洲精品国产欧美 | 黄色网在线免费观看 | 国产黄色看片 | 91综合视频在线观看 | 久章草在线观看 | 狠狠狠色丁香综合久久天下网 | 国产精品99久久久久久小说 | 中文字幕一区二区三区在线观看 | 国产小视频在线观看免费 | 亚洲女人av | 不卡的av电影在线观看 | 深爱婷婷 | 黄色三级免费 | 午夜色婷婷 | 亚洲国产午夜 | 日韩在线视频二区 | 丁香六月在线观看 | 亚州天堂 | 日韩一区二区三区不卡 | 久久99国产精品二区护士 | 97小视频| 在线观看免费视频你懂的 | 在线观看网站你懂的 | 国产自制av| 婷婷久久久 | 九九久久精品 | 九色91av| av免费线看 | 色在线最新 | 在线观看日本高清mv视频 | 午夜精品久久久久久99热明星 | 一级片免费在线 | 成人app在线播放 | 国内精品久久久久影院一蜜桃 | 免费婷婷 | a视频免费在线观看 | 欧美精品一区二区在线观看 | 成片视频免费观看 | 国产免费叼嘿网站免费 | 亚洲高清在线精品 | 久久综合九色综合欧美就去吻 | 日本精品二区 | 伊人伊成久久人综合网小说 | 久久永久免费视频 | 欧美一级片在线免费观看 | www.久久久精品 | 国产黑丝一区二区 | 色婷婷精品 | 国产综合福利在线 | 视频福利在线 | 视频二区 | 亚洲伊人网在线观看 | 国产成人一区二区三区 | 玖玖在线视频观看 | av短片在线 | 天天插天天狠 | 国产亚州精品视频 | a在线观看免费视频 | 亚洲欧美经典 | 麻豆91精品视频 | 色中色资源站 | 久久久.com| 亚洲精品国产视频 | 午夜精品一区二区国产 | 日日夜夜天天干 | 精品国产欧美 | 中文字幕中文字幕在线中文字幕三区 | 成人精品在线 | 麻豆视频网址 | 中文字幕色婷婷在线视频 | 69夜色精品国产69乱 | 精品一区在线看 | 久久久综合色 | 日韩在线播放av | 爱干视频| 黄色一级在线视频 | 激情欧美一区二区三区免费看 | 中文字幕成人av | 国产1级视频 | 亚洲国产中文字幕在线观看 | 国产精品久久毛片 | 精品国产乱子伦一区二区 | 婷婷网站天天婷婷网站 | 婷婷网站天天婷婷网站 | 午夜在线看片 | 一二三区在线 | 久久久久久久久毛片 | 久久精品视频在线观看免费 | 青青河边草免费直播 | 天天爽天天搞 | 午夜av免费观看 | 中文字幕一区二区三区视频 | 香蕉在线播放 | av网站免费线看精品 | wwwwww黄| 中文字幕av最新 | 97在线免费观看 | 美女久久久久 | 色婷婷骚婷婷 | 安徽妇搡bbbb搡bbbb | 91精品视频免费在线观看 | 依人成人综合网 | 久久久久欠精品国产毛片国产毛生 | 天天做天天爱天天爽综合网 | 免费视频三区 | 视频 国产区 | 男女拍拍免费视频 | 国产精品99久久久久久人免费 | 国产高清免费av | 欧美激情操 | 久久8| 久久99精品久久久久蜜臀 | 国产你懂的在线 | 日本公妇色中文字幕 | 亚洲精品欧美精品 | 欧美精品成人在线 | 国产黄a三级三级 | 国产精品1区2区3区在线观看 | 在线观看一级视频 | 999久久久欧美日韩黑人 | 视频一区二区视频 | 国产精品久久一区二区无卡 | 成 人 黄 色 片 在线播放 | 日韩精品亚洲专区在线观看 | 日韩中文字幕免费在线播放 | 91一区一区三区 | 手机看片午夜 | 三级黄在线 | 在线观看福利网站 | 美女网站一区 | 射久久久| 国产精品欧美一区二区三区不卡 | 欧美日韩一级在线 | 亚洲爱爱视频 | 高清一区二区三区av | 色婷婷啪啪免费在线电影观看 | 中文字幕视频三区 | 97视频在线观看播放 | 最新免费中文字幕 | 久久草| 在线中文字幕电影 | 国产97在线播放 | 99精品视频中文字幕 | 国产精品刺激对白麻豆99 | 久人人| 国产亚洲精品久久久久秋 | 国产精品自产拍在线观看网站 | 一区三区视频在线观看 | 国产美女主播精品一区二区三区 | 久久国产成人午夜av影院潦草 | 中文资源在线官网 | 涩涩在线 | 久久久久免费视频 | 国产色区 | 麻豆国产网站入口 | 性色av免费看 | 99久热精品| 久久久精品综合 | 久久刺激视频 | 六月丁香综合 | 91精品视频免费 | 看片网站黄色 | 中文字幕一区二区三区四区久久 | 亚洲激情视频 | 国产亚洲综合性久久久影院 | 久久久久久久久毛片精品 | 国产精品一码二码三码在线 | 日韩精品极品视频 | 久久精品欧美视频 | 一级片黄色片网站 | 午夜美女wwww| 亚洲专区路线二 | 亚洲在线视频网站 | 国产精品视频线看 | 成人免费观看大片 | 久久国产精品视频观看 | av一区二区三区在线 | 亚洲电影一区二区 | 99精品国产99久久久久久福利 | 日本激情视频中文字幕 | 婷婷播播网 | 亚洲成人av一区 | 91毛片在线 | 一色av| 欧美日韩二区在线 | 91久久精品日日躁夜夜躁国产 | 中文字幕国产精品一区二区 | 欧美久久久影院 | 国产成人精品一区二区在线观看 | 久久99精品一区二区三区三区 | 综合色婷婷 | 欧美日韩久 | 91日韩免费| 最新91在线视频 | av免费在线看网站 | 日本精油按摩3 | 27xxoo无遮挡动态视频 | 欧美一级免费黄色片 | 成人在线视频一区 | 一级免费观看 | 国产日韩高清在线 | 亚洲国产激情 | 欧美激情在线网站 | 亚洲综合视频在线 | 五月婷婷色 | 久草在线观看资源 | 91久久久久久国产精品 | 久久第四色 | 婷婷丁香激情五月 | 久久成人精品视频 | 91视频 - v11av | 成年人网站免费观看 | 久久精品综合一区 | 一级成人在线 | 97在线视频观看 | 91桃色在线观看视频 | 丁香六月天婷婷 | av再线观看| 在线欧美小视频 | 激情av一区二区 | 日韩av黄 | 国产一区黄色 | 九色免费视频 | 激情五月六月婷婷 | 欧美老女人xx | 在线观看国产日韩 | 日日夜夜添 | 99久国产 | 国产又粗又长的视频 | 天天爱天天操天天爽 | 国产香蕉在线 | 亚洲粉嫩av | 国产生活一级片 | 日韩91在线 | 欧美va天堂va视频va在线 | av免费在线观看1 | 国产成人777777 | 97超碰在 | 午夜精品视频免费在线观看 | 69国产成人综合久久精品欧美 | 国产一区二区手机在线观看 | 中文字幕传媒 | 91av超碰 | 日韩伦理片hd | 久久成人免费 | 97超级碰碰碰视频在线观看 | 黄色av一级片 | 亚洲a色| av再线观看 | 日韩电影一区二区三区在线观看 | 黄色免费国产 | 亚洲伦理中文字幕 | 国产在线一区二区 | 日韩在线视频在线观看 | av在线成人| 亚洲欧美视频 | 国产手机在线精品 | 色婷婷综合久久久中文字幕 | 亚洲三级av| www在线免费观看 | 久久免费视频这里只有精品 | 99精品欧美一区二区三区黑人哦 | 激情在线网站 | 欧美日韩免费一区二区三区 | 久久精品国产美女 | 黄色的视频 | 久久久天堂 | 综合av在线 | 一区二区高清在线 | 一区二区三区在线观看免费 | 成人午夜剧场在线观看 | 色吊丝av中文字幕 | 成片人卡1卡2卡3手机免费看 | 免费看一级特黄a大片 | 91天堂在线观看 | 中文字幕在线人 | 久久激情视频网 | 色妞色视频一区二区三区四区 | 伊人亚洲综合网 | 女人高潮特级毛片 | 99在线视频观看 | 亚洲视屏在线播放 | 久久精品国产成人精品 | 免费a级大片 | 日日干狠狠操 | 狠狠操狠狠干天天操 | 四虎在线免费视频 | 丁香久久综合 | 久久免费精品一区二区三区 | 国产精彩视频一区二区 | 91精品导航| 在线v片 | 久久久久99精品成人片三人毛片 | 国产色婷婷精品综合在线手机播放 | 九九热精| 国产成人精品999在线观看 | 久久精品一二三区白丝高潮 | 女人18精品一区二区三区 | 日日麻批40分钟视频免费观看 | 激情综合网五月 | 日韩xxxx视频 | 国产精品美女久久 | 国产精品1024 | 国产在线精品一区二区不卡了 | 中文av影院 | 久久久影院官网 | 婷婷爱五月天 | 国产成人久久精品77777综合 | 欧美另类v | 亚洲成人午夜在线 | 在线观看国产中文字幕 | 国产精品美女视频网站 | 亚洲禁18久人片 | 美女精品国产 | 最近2019中文免费高清视频观看www99 | 三级黄色理论片 | 蜜桃视频在线视频 | 久久人人爽爽人人爽人人片av | 99re6热在线精品视频 | 国产精品女主播一区二区三区 | 麻豆一区二区三区视频 | 亚洲h视频在线 | 久久精品视频18 | 欧美一区二区在线免费看 | 成人午夜电影在线观看 | 久久久久久久免费观看 | 国产又粗又硬又爽的视频 | 超碰午夜 | 成人小视频在线观看免费 | 国产美女精彩久久 | 91久久偷偷做嫩草影院 | 亚洲精品久久在线 | 国产精品白丝jk白祙 | 久久成人在线 | av三级av| 美女网站在线免费观看 | www99精品 | 久久久久久久久久久久国产精品 | 久久调教视频 | 国产精品第2页 | 中文字幕成人av | 久久国产精品99久久久久久老狼 | 日韩中文幕 | 精品亚洲视频在线 | 香蕉免费 | wwwwww黄 | 国产精品3区 | 国产精品2018 | 五月天丁香亚洲 | 制服丝袜亚洲 | 操操操影院 | 亚洲高清在线视频 | 日韩av一区二区在线影视 | ,久久福利影视 | 激情网第四色 | 超碰夜夜 | 天堂av一区二区 | 在线精品视频在线观看高清 | 久久九九影院 |