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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

@select注解_mybatis开发,你用 xml 还是注解?我 pick xml

發布時間:2024/1/23 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 @select注解_mybatis开发,你用 xml 还是注解?我 pick xml 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在看公司項目時發現有的項目mybatis是基于注解開發的,而我個人的習慣是基于xml文件開發。

對于mybatis注解開發的原理理解不夠,于是翻閱了部分源碼,寫下此文。主要介紹了mybatis開發的兩種形式、三種寫法。還有一點瞎思考,介紹了一處騷代碼、還有一個坑。

原創不易,感謝閱讀,感謝關注,感謝點贊,感謝轉發。

荒腔走板

大家好,我是 why 。老規矩,在技術分享開始之前,先荒腔走板,聊點別的。

上周我寫的這篇文章《我告訴你這書的第 3 版到底值不值得買?》居然被《深入理解Java虛擬機》的作者周志明先生看到了,還給我贊賞并留言給我說:作者表示感謝,真心的。

說實話,我看到這個贊賞的時候我都震驚了。有一種和大神產生了交集的感覺。

其實上周這篇文章是出版社找到我說送我一本第三版,讓我看看,然后寫個觀后感就行。

恰好,在他們沒有找到我之前我也是有這樣的打算的。

我不是為了白嫖出版社幾本書,而是我早在去年年底打算買第三版后,這篇文章就一直在著手準備了。

在機緣巧合之下,即完成了自己的計劃,又獲得了出版社的幾本書,通過出版社,又勾搭上了本書作者,不僅獲得了作者的贊賞還得到一本簽名版。

哎,這瘋狂而又操蛋的人生呀。

所以你問我寫了這么久的文章收獲了什么?

說實在的,我沒有通過寫文章掙到幾個錢。但是我收獲的是與一群志同道合的原創作者同行的機會、是讀者讀完文章后對我的文章的指點與贊揚、是偶爾與幾位業界大佬之間互動的驚喜。

僅此而已。

好了,說回文章。

兩種形式,三種寫法

最近在看公司的一些項目的時候發現有的項目里面的 mybatis 是基于注解開發的。而我個人的習慣是基于 xml 文件開發。

所以對于基于注解開發的原理不太了解,于是去翻看了一下相關源碼,形成此文。

本文主要介紹基于 mybatis 開發的兩種形式,三種寫法。

其中兩種形式是指:

1.基于 xml 文件。

2.基于注解開發。

三種寫法是指除了 xml 的形式外,注解又有兩種不同的寫法,它們的實現原理也略有不同,拿 Select 語句舉例,就有兩種注解 @Select、@SelectProvider 。

演示示例

先上一個演示示例給大家直觀的感受一下:

首先,我們有個用戶表,包含這些字段和這樣一條數據:

然后我們搞個接口類,用三種方式去查詢用戶的年齡,具體如下:

xmlQueryAgeByName 方法是使用 xml 的方法去查詢用戶年齡,對應的 xml 如下:

annotationQueryAgeByName 方法是使用 @Select 注解去查詢用戶的年齡,SQL 就寫在注解里面:

classQueryAgeByName 方法是使用 @SelectProvider 注解去查詢用戶的年齡,可以看到注解里面有個 type 字段,對應一個 class 類。一個 method 字段,對應 class 類中的一個方法:

其中 UserInfoSql 類如下:

然后,再來一個測試用例,把三個方法都測試一下:

最后的輸出結果如下:

xmlQueryAgeByName whyAge = 18annotationQueryAgeByName whyAge = 18classQueryAgeByName whyAge = 18

測試用例就演示完成了,是一個極簡的用例。

我就是基于這個案例去分析源碼的,在分析之前,其實有點經驗的老哥也能看出來了,我們先撇開常規的 xml 文件的形式不談。

基于 @Select 注解的接口, SQL 就在注解里面,所以我們只需要通過反射取出注解里面的 SQL 進行分析就行了。

基于 @SelectProvider 注解的接口,SQL 雖然在一個類的方法中,但是注解上都告訴你是哪個類的哪個方法了,所以,一定是基于反射去取出方法里面的 SQL 的。

接下來,我們就是去驗證一下。

好,準備發車。

小心求證

關于 mybatis 我之前寫過這篇文章《很開心,在使用mybatis的過程中我踩到一個坑》,其中提到了一個逆向排查法。有興趣的可以去看一下。

在這篇文章中我們還是來個常規分析吧。本文分析源碼為 mybatis 3.4.0 版本。

首先,我先問你一個問題。SpringBoot 是怎么加載 mybatis 的?

熟悉 SpringBoot 啟動過程的朋友知道,SpringBoot 會去加載mybatis-spring-boot-autoconfigure-x.x.x.jar下 META-INF 中的spring.factories文件:

所以,下面的 sqlSessionFactory 方法就是我們的入口處:

入口給你找到了,你可以直接在這里加上斷點開始 debug 了。

我知道,雖然是剛剛開始,但是可能有些讀者覺得已經超綱了。但是沒有關系的,繼續看下去,我這里只是給你說個入口在哪而已。

由于 debug 的過程不是文本重點,這里就不去介紹了。debug 的時候我們會看到這個方法:

org.apache.ibatis.builder.xml.XMLMapperBuilder#parse

這個方法的第 92 行,就是我們的 xml 內容:

然后在下面這個方法中對 xml 文件進行瘋狂的解析:

org.apache.ibatis.builder.xml.XMLStatementBuilder#parseStatementNode

圖片可以點開看大圖哦,debug 模式,可以看到一些輸出:

上面的源碼的第 94 行,獲 取 SqlSource 很關鍵,要好好看看,這里調用了這個方法:

org.apache.ibatis.scripting.xmltags.XMLLanguageDriver#createSqlSource(org.apache.ibatis.session.Configuration, org.apache.ibatis.parsing.XNode, java.lang.Class>)

接著在下面方法的第 52 行,剝離出整個完整的 sql:

org.apache.ibatis.scripting.xmltags.XMLScriptBuilder#parseScriptNode

上面就是常規的 xml 形式的 SQL 原始語句(變量、條件表達式都還未進行替換,不可直接執行的 SQL)獲取過程,不是本文重點,簡單的分析一下就行。

接下來繼續 debug 的時候會遇到下面這個方法,看包名你就知道,這就是我們關心的注解解析相關的方法了:

org.apache.ibatis.builder.annotation.MapperAnnotationBuilder#parse

在這個方法里面,會去循環處理 mapper 類中的方法:

接下來,就會遇到這個方法了:

org.apache.ibatis.builder.annotation.MapperAnnotationBuilder#getSqlSourceFromAnnotations

當循環到 annotationQueryAgeByName 方法的時候,下面方法的一些關鍵參數如下所示:

首先我們看 428 行,解析到了 sqlAnnotationType 為 Select:

所以會進入下面的 if 分支,然后運行到 435 行,通過反射獲取到了 @Select 注解上的 SQL 語句:

繼續往下走,通過 436 行,我們可以走到這個方法:

org.apache.ibatis.scripting.xmltags.XMLLanguageDriver#createSqlSource(org.apache.ibatis.session.Configuration, java.lang.String, java.lang.Class>)

這個方法就有點意思了,進來判斷了 script 即 SQL 是否是以 script 腳本開頭的,如果是,則走的和之前 xml 一樣的解析邏輯:

我第一次看到這個地方的時候,一下才恍然大悟過來,我才明白,@Select 的本質還是 xml 文件的形式啊。只是換了個展現形式而已。

我之前的一個問題,或者說是錯誤的看法也就迎刃而解了。

我之前認為 @Select 的方式是只能支持簡單 SQL 的書寫,對于一些類似于判空的需求是不支持的。(因為對 mybatis 注解開發確實不熟)

比如在 xml 文件中這樣去寫:

LIMIT #{startPage},#{pageSize}

只是這個寫法,呃,怎么說呢,非常不優雅。

不要為了注解而注解,很明顯,這種情況直接用 xml 形式更好。

到這里,我們也知道了,基于 @Select 注解的方式開發時, mybatis 會通過反射獲取到注解里面的 SQL ,而這些 SQL 需要一些比較復雜功能,比如判斷條件是否為空時,可以用 script 標簽包裹起來。寫法和在 xml 里面開發是一樣的。

接下來,我們看看 @SelectProvider 方法是什么個樣式。

還是在同樣的方法中,只是走向了另外一個分支:

此時的 sqlProviderAnnotation 里面的東西如下:

接著去 new ProviderSqlSource 對象:

在這個方法中,獲取到了注解上的具體的提供 SQL 原始語句的方法。

注意紅框中框起來的 providerMethod 對象,后面獲取真正執行的 SQL 語句的時候還會用到。

同時,我們可以看到 ProviderSqlSource 是 SqlSource 的實現類。

所以,不管是 xml 還是注解,最終都需要獲取到一個 SqlSource 對象。

而在本文的示例代碼中, xml 和 @Select 生成的是 RawSqlSource。

@SelectProvider 生成的是 ProviderSqlSource。他們里面放的東西是不一樣的。

在 RawSqlSource 里面的 sqlSource 變量(類型 StaticSqlSource)放的已經是從 xml 或者 @Select 注解中獲取到的 SQL 原始語句了(但是里面的變量還沒替換,因為程序啟動過程中根本不知道變量的值具體是什么,如果有一些條件表達式的話同理)。

而在ProviderSqlSource 里面,我們前面已經說了,放的是 @SelectProvider 注解上具體的提供 SQL 語句的方法,僅僅是方法,而不是語句。

前面的所有分析都是在我們的方法真正執行之前,接下來,才會 debug 到我們的測試用例,因為只有我們的測試用例里面才有真正的入參, mybatis 才能根據入參,執行最終的 SQL 語句。

所以,接下來,我們就是要找到真正生成 SQL 語句的地方,這里就能和之前文章《很開心,在使用mybatis的過程中我踩到一個坑》中的逆向排查法中得出的結論進行呼應了。

進入 getBoundSql 我們可以看到第292行,就是通過 sqlSource 的 getBoundSql 方法獲取到的 boundSql 對象:

org.apache.ibatis.scripting.xmltags.DynamicSqlSource#getBoundSql

這不就又呼應上了嗎?又看到 sqlSource 了。

所以,接下來,我們看一下這兩個方法就可以了:

org.apache.ibatis.builder.StaticSqlSource#getBoundSqlorg.apache.ibatis.builder.annotation.ProviderSqlSource#getBoundSql

首先看一下 StaticSqlSource 的實現:

里面的一些關鍵參數如下:

首先可以 sql 變量,里面是一條待加工的 SQL 語句,我們前面已經分析過了,程序啟動的過程中,這里為什么不替換呢?

因為不知道換成啥呀。

那你覺得在這個地方會替換嗎?

還是不會的。雖然我們已經告訴 mybatis , userName 就是 why 了,但如果在這個地方把 why 帶到 SQL 里面去,我們倒是可以獲得一個完整的正確的 SQL。

但是,如果我們傳入的是 “why or 1=1”呢?

這是什么東西我相信你一下就恍然大悟了吧,SQL 注入呀。

另外插一句,如果想看 SQL 注入的情況,就是走到 DynamicSqlSource 的情況,在 xml 中把 # 換成 $ 就行,有興趣的可以試一試。

我這里只是給你截個圖,瞅一眼:

好了,我們接著剛才繼續說。

繼續 debug 會走到這方法中去:

org.apache.ibatis.executor.SimpleExecutor#doQuery

而這個方法的第 62 行,prepareStatement,這個東西不用說了吧,從學 JDBC 的時候就用上它了,老朋友了:

最后去執行真正的查詢操作,處理返回值。

接著看 ProviderSqlSource 的實現,注意看我圈起來的那部分的分支判斷:

無非就是判斷有幾個參數,反射方法調用的時候需要怎么傳參而已。最終會調用到這個方法里面來獲取 SQL 語句:

可以看一下這個時候 providerMethod 和 sql 變量分別是什么:

而這里這個 providerMethod 怎么來的知道了吧?我們前面剛剛分析過了。

new ProviderSqlSource 對象的時候,我還專門說了:“注意紅框中框起來的 providerMethod 對象,后面獲取真正執行的 SQL 語句的時候還會用到。”

就是在這個地方用到的。

你看,又呼應上了。

這個時候,我們獲取到了原始的 SQL 語句了,也有參數了,這樣的場景和我們剛剛分析的情況就一模一樣了,所以后面的邏輯都一樣,進行了代碼復用:

進入第 98 行,也就是下面這個我們之前分析過的方法:

org.apache.ibatis.builder.SqlSourceBuilder#parse

在這個方法中,返回了一個 StaticSqlSource 對象:

再次呼應,流程是一樣一樣的。

另外,再說一下,用 @SelectProvider 注解時的 class 對象里面的方法還可以這樣去寫,有興趣的可以去研究一下:

好了,我們的論證部分就算是完了,我發現這個東西,用視頻真的幾分鐘就講清楚了,描述起來還是有點困難的,難道是在逼我當UP主嗎?

不知道大家看的是否明白了,如果對 mybatis 了解不多的朋友可能看起來有一點吃力,但是沒有關系,你就把這篇文章當做一個導讀,然后自己搞個 Demo 跑起來,玩一玩就行。

個人思考

其實在寫這篇文章的時候我就產生了一個思考。

mybatis 為什么要去支持注解呢?

當然,我們都知道,基于注解開發是趨勢,給我們簡化了非常多的東西。

特別是 SpringBoot 的出現,可以說是注解開發的黃金時代。

遙想當年剛剛入行的時候,開發一個 SSM 項目大多數時間都是在進行 xml 文件的配置。

可以說是很羨慕現在入行的小年輕了,沒有真正經歷(也許自己搭建過,玩了一下)過被 xml 配置支配的恐懼。

在 xml 時代,大家都是粘來粘去的。而現在基于注解開發了,很多東西都簡化了,漸漸的自己也能很輕松的搭建一個可以跑起來的小項目了。

所以,基于注解開發大體上一件很優雅,很好,很值得推廣的事情。

為什么說大體上呢?

因為我個人偏見的覺得對于 mybatis 框架來說,沒有 xml 文件的 mybatis 是沒有靈魂的。

當然,如果你全是簡單的 SQL 語句就能實現的功能,你可以用注解開發。但是這個情況,我覺得還是在少數的。

同樣,我們可以用注解的形式實現所有 xml 文件能實現的功能。但是我覺得不太優雅。

所以,我覺得一個比較折中的方式是簡單 SQL 可以用注解開發,如果是一些有諸如條件判斷類的需求的 SQL 還是要寫在 xml 文件中。

不要為了擁抱注解,而完全摒棄了 xml 的形式。

你記得嗎,在 xml 時代轉向注解時代的時候,還有一個經常用到的注解。

有人說這是過渡時代的產物,而在我看來,這更是求同存異的完美體現。

這個注解,就完全的體現最近這句很火的話:

君子美美與共,和而不同。

當然這些都是我在寫這篇文章的過程中產生的一些淺顯的個人看法而已。不具備參考意義。

騷代碼

另外,再給大家分享一個我認為的 mybatis 的騷代碼吧。

代碼非常的簡單明了,很久以前第一次看 mybatis 源碼的時候我就是覺得有點“騷”,給我留下了深刻的影響:

org.apache.ibatis.session.defaults.DefaultSqlSession#selectOne(java.lang.String, java.lang.Object)

selectOne 方法:

該方法調用的還是 selectList 方法,但是對返回集合進行了一個判斷,如果集合大小為 1,說明就真的是 selectOne ,如果大于 1,則拋出異常。

說真的,如果讓我去實現這個功能,我不會一下就想到這個方法,我會去老老實實的寫功能,然后對返回值進行判斷。寫完之后,我可能才會發現。哎,這段代碼和 selectList 方法可以復用哦,然后才提取出來,變成這樣。

記得很久之前面試,面試官問我對看過的源碼中哪段影響深刻的,其中我就說到了這個方法。

總之,我個人覺得很妙。

注意坑

然后再說一個之前踩過的坑吧,還導致了一次緊急上線。

還是拿文中的示例說明:

如果我們把返回值從 Integer 變成 int:

用這個測試用例還是會正常查詢出結果:

但是,如果我們查詢一個數據庫中不存在的人的年齡呢?比如這樣:

那么就會拋出這樣的錯誤:

找到對應源碼,我們可以看到:

當返回值是 null 的時候,但是方法上的返回值類型又不是包裝類型中的一種,也不是 void 類型,則拋出異常。

看一下這個方法,是 native 的:

java.lang.Class#isPrimitive

你想想為什么 mybatis 給你進行了這樣的一個判斷呢?

那就是如果返回為 null ,自動拆箱的時候會拋出空指針的。

即使 mybatis 幫我們擋了一下,我還是完美的踩了一個坑,寫出了空指針異常。

代碼是這樣的,接收的時候我還是用 Integer 去接收了:

但是接口調用時的返回值我手賤寫成了這樣:

明白了吧,妥妥的,空指針,沒得跑了。

最后說一句(求關注)

人的潛力真的是巨大的,不逼自己一把,我都不知道我這周真的可以把文章寫完。

最近這周晚上回來的時間晚一點了,所以周內的晚上一般都沒有時間寫文章。

最近成都也熱起來了,夏天我有時還是需要一小會的午睡,來保證下午的工作狀態的。其他的季節我不需要午休,所以現在中午也很少有時間寫一會文章了。

算了一下,連上這篇,我已經連續周更 39 周,輸出 48 篇原創文章了。

啊,我真是牛皮呀。

周更作者的痛苦與快樂,你想象不到:

點個贊吧,周更很累的,不要白嫖我,需要一點正反饋。

才疏學淺,難免會有紕漏,如果你發現了錯誤的地方,由于本號沒有留言功能,還請你在后臺留言指出來,我對其加以修改。

感謝您的閱讀,我堅持原創,十分歡迎并感謝您的關注。

我是 why,一個被代碼耽誤的文學創作者,不是大佬,但是喜歡分享,是一個又暖又有料的四川好男人。

總結

以上是生活随笔為你收集整理的@select注解_mybatis开发,你用 xml 还是注解?我 pick xml的全部內容,希望文章能夠幫你解決所遇到的問題。

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

久久一区精品 | 91中文字幕在线 | 日本韩国欧美在线观看 | 亚洲精品综合一二三区在线观看 | 九九热在线观看 | 国产亚洲精品免费 | 香蕉视频久久 | 国产自产高清不卡 | 亚洲自拍偷拍色图 | 国产一区二区影院 | 超碰免费公开 | 国产91精品在线播放 | 久久精品一 | 日本色小说视频 | 欧美午夜性 | 国产高清在线 | 日韩一区二区三区免费视频 | 亚洲精品国精品久久99热 | 免费一级日韩欧美性大片 | 国产无遮挡猛进猛出免费软件 | 欧美午夜激情网 | 国产精品初高中精品久久 | 黄色app网站在线观看 | 97精品久久人人爽人人爽 | 免费黄色在线播放 | a亚洲视频| 国产精品视频免费观看 | 性色av免费观看 | 国产精品99久久久久久大便 | 国产激情久久久 | 国产第一页福利影院 | 一二三精品视频 | 在线观看视频黄 | 91麻豆精品国产91久久久久久 | 亚州国产精品视频 | 久久久久久欧美二区电影网 | 久久九九影视 | 成人av中文字幕在线观看 | 精精国产xxxx视频在线播放 | 91夜夜夜| 激情五月激情综合网 | 亚洲黄色在线播放 | 国产拍揄自揄精品视频麻豆 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 日韩高清在线看 | 久久国际影院 | 亚洲久草网 | 91超级碰碰 | 黄色av电影在线观看 | 天天操月月操 | 久久精品国产v日韩v亚洲 | 91精品黄色 | 色婷婷狠| 狠狠网站 | 97国产超碰在线 | 国产精品成人久久 | 成人午夜免费剧场 | 在线亚洲天堂网 | 日本99精品| 国产淫a| 天天综合91 | 久草精品在线播放 | 三上悠亚一区二区在线观看 | av在线播放国产 | 国产免费又爽又刺激在线观看 | 欧美性粗大hdvideo | 亚洲精品视频大全 | 天天操天天操天天 | 夜夜躁天天躁很躁波 | 久久午夜鲁丝片 | 国产老太婆免费交性大片 | 91九色在线视频 | 中文av在线播放 | 国产精品免费在线播放 | 狠狠色狠狠色合久久伊人 | 在线免费观看麻豆 | 亚洲精品国内 | 天天操夜夜操国产精品 | 特级毛片在线 | 狠狠狠狠狠色综合 | 久久久精品综合 | 国产成人av | 新版资源中文在线观看 | www日韩精品 | 久久九九久久九九 | 日韩av快播电影网 | 免费网站看v片在线a | 亚洲v精品 | 国产手机视频在线播放 | 日日操夜夜操狠狠操 | 亚洲精品乱码白浆高清久久久久久 | 四虎最新入口 | 亚洲首页 | 911国产精品| 国产最新视频在线观看 | 欧美了一区在线观看 | 正在播放国产一区二区 | 久久高清精品 | 日韩中文字幕亚洲一区二区va在线 | 国产91精品久久久久 | 丁香婷婷激情五月 | 日韩av二区 | 国产在线精品福利 | 四季av综合网站 | 91精品国产99久久久久久红楼 | 五月开心激情 | 最新国产精品亚洲 | 天天天天天干 | 一级成人网 | 亚洲精品国产精品乱码不99热 | 色视频成人在线观看免 | 国产夫妻自拍av | 日韩精品专区在线影院重磅 | 激情欧美日韩一区二区 | 欧美在线日韩在线 | 黄色1级大片 | 国产网红在线观看 | 久久久麻豆精品一区二区 | 国产精品美乳一区二区免费 | 日本精品va在线观看 | 精品不卡视频 | 国产主播大尺度精品福利免费 | 免费观看的黄色片 | 夜色成人网| 最近日本mv字幕免费观看 | 97精品视频在线播放 | 成人app在线播放 | 国产69精品久久99不卡的观看体验 | 亚洲综合在线一区二区三区 | 四虎伊人 | 日本中文不卡 | 日日夜夜噜噜噜 | 色在线高清 | 久久久精品网 | 99精品在线播放 | 四虎伊人| 在线免费观看亚洲视频 | 成人禁用看黄a在线 | 免费h精品视频在线播放 | av短片在线 | 一区二区精品在线观看 | 成人黄色小说视频 | 久久久免费播放 | 天天干,夜夜爽 | 99精品热视频只有精品10 | 国产69精品久久99的直播节目 | 亚洲成av人影院 | 久草国产在线 | 在线看岛国av | 国产亚洲精品久久网站 | 欧美性做爰猛烈叫床潮 | 日韩高清在线不卡 | 一级黄色av | 国产精品久久久久久久久毛片 | 国产精品九色 | 国产成人精品一区二区三区在线观看 | 青青草国产精品视频 | 九九热在线精品视频 | 色五月情| 成人午夜网 | 久久经典国产视频 | 精品福利在线观看 | 国产精品视频全国免费观看 | 国产精品久久av | 精品久久久免费视频 | 国产99久久久国产精品免费二区 | 一级黄毛片 | 中文字幕亚洲精品在线观看 | 日韩成人高清在线 | 一色av| 在线色资源 | 久久激情视频 久久 | 综合久久久久久久久 | 色亚洲网 | 久久久久久久久久伊人 | 久久66热这里只有精品 | 国产高清在线不卡 | 国产韩国精品一区二区三区 | 久久欧美综合 | 91免费高清视频 | 极品中文字幕 | 国产特级毛片aaaaaa | 日韩试看| 久久九九久久 | 国产一卡久久电影永久 | 99精品免费网 | 国产亲近乱来精品 | 97超碰中文字幕 | 日韩毛片久久久 | 久久久在线视频 | 免费高清无人区完整版 | 欧美一区日韩精品 | 欧美日韩免费观看一区二区三区 | 亚洲国产精品成人va在线观看 | 精品一区二区在线免费观看 | 午夜精品999 | 麻豆一级视频 | 国产精品久久中文字幕 | 欧美高清成人 | 8x成人在线| 欧美永久视频 | 日日日天天天 | 欧美激情第28页 | 波多野结衣在线播放视频 | 日本在线观看一区二区 | 亚洲国产午夜精品 | 日日天天| www.亚洲精品 | 日韩精品一区二区免费视频 | www.狠狠操.com| 久久人人爽视频 | 成+人+色综合 | 国产一区二区日本 | 国产又粗又猛又黄又爽视频 | 久久视频这里有精品 | 精品久久国产一区 | 久久99影院 | 久久久精品高清 | 婷婷久久亚洲 | 91成人天堂久久成人 | 久久99国产精品久久 | 国产小视频在线免费观看视频 | 国产不卡片 | 亚洲狠狠干 | 免费看毛片网站 | 国产资源av | 天天色视频| 久久免费的精品国产v∧ | 日韩av一区二区在线 | 久久国产精品99久久久久 | 人人狠狠综合久久亚洲婷 | 欧美性脚交| 成人免费 在线播放 | 91av免费观看| 97av在线 | 欧美大片mv免费 | 人人模人人爽 | 91九色在线观看视频 | 国产视频999| 日产乱码一二三区别免费 | 欧美在线1区 | 91片黄在线观看动漫 | 婷婷5月色 | 97超碰人人澡人人 | 天天在线操| 国产美女免费观看 | 天天色天 | 亚洲国产精品成人女人久久 | 国产在线美女 | 天干啦夜天干天干在线线 | 欧美性色黄大片在线观看 | 2020天天干夜夜爽 | 国产免费亚洲 | 国产一二三四在线视频 | 亚洲精品乱码久久久久久写真 | 成人av免费在线观看 | 中文字幕在线观看第一页 | av三级在线播放 | 久草在线免费播放 | 日本中文字幕视频 | 成人av在线直播 | 国产成人精品一区二区三区在线 | 一本一道波多野毛片中文在线 | 黄色片免费在线 | 在线v片免费观看视频 | 天天色天天射天天干 | 91伊人影院 | 国产69精品久久久久久 | 黄色aaa级片 | 亚洲三级在线免费观看 | 伊人六月| 91视频麻豆视频 | 国产视频中文字幕在线观看 | 久久天天躁夜夜躁狠狠躁2022 | 国产99久久久国产精品免费二区 | 在线免费黄色 | 久亚洲精品 | 99热 精品在线 | 九色91在线视频 | 在线中文字幕观看 | 在线免费观看成人 | 亚洲一区二区精品在线 | av福利资源| 成人黄色电影视频 | 精品国产免费人成在线观看 | 国产精品综合在线观看 | 国产精品亚洲成人 | 免费日韩一区二区三区 | 一级黄色片在线免费观看 | 日韩深夜在线观看 | 亚洲精品一区二区久 | 97超碰在线人人 | 欧美a级在线 | 美女免费视频观看网站 | av在线网站免费观看 | 四虎成人av | 中文在线a在线 | 日韩黄色免费看 | 中文字幕一区二区三区乱码不卡 | 在线观看视频99 | 欧美做受xxx | 国产精品热 | 国内久久精品 | 国产三级国产精品国产专区50 | 98涩涩国产露脸精品国产网 | 丰满少妇对白在线偷拍 | 国产精品99久久久久久宅男 | 国产黄色免费在线观看 | 免费日韩 精品中文字幕视频在线 | 国内精品久久久久久久久久久久 | 久久激情五月婷婷 | 国产午夜精品一区二区三区 | 日本中文乱码卡一卡二新区 | 日韩在线视频二区 | 99视频在线免费 | 色噜噜在线观看视频 | 欧美大片在线观看一区 | 欧美一级高清片 | 久草视频99| 大胆欧美gogo免费视频一二区 | 国产中文字幕视频 | 国产亚洲精品久久久网站好莱 | 福利视频一区二区 | 91精品久久久久久综合五月天 | 欧美在线你懂的 | 久久国产精品99久久久久 | 天天综合狠狠精品 | 午夜视频亚洲 | 日韩高清免费在线观看 | 色多多污污在线观看 | 久久精品一区二区三区视频 | 日韩综合一区二区三区 | 国产亚洲视频中文字幕视频 | 中文字幕资源在线 | 色综合 久久精品 | 国产精久久久久久妇女av | 成人免费看黄 | 中文字幕色婷婷在线视频 | 成人av.com | 91手机电影 | 国产69久久久| 91 在线视频播放 | 国产精品99久久久久久小说 | 日韩av一区二区在线播放 | 欧美福利久久 | 日韩理论 | 婷婷成人综合 | 国产精品男女啪啪 | 天天综合网~永久入口 | 国产精品精品久久久久久 | 丝袜美腿在线播放 | 在线免费观看视频你懂的 | 天天操网址| 成人国产一区 | 久久精品黄 | 国产精品69av | zzijzzij亚洲日本少妇熟睡 | 91精品国产91久久久久 | 黄色一级性片 | 夜夜视频 | 亚洲高清在线视频 | 久草在线最新视频 | 日韩av中文在线观看 | www.97色.com| 成人av亚洲| 成人在线播放免费观看 | 亚洲午夜大片 | 黄色99视频 | 五月天最新网址 | 涩涩网站在线观看 | 久久婷婷视频 | 日本h视频在线观看 | 国产成人专区 | 中文字幕一区二区三区久久 | 亚洲国产精品500在线观看 | 日韩一级电影网站 | 色婷婷99 | 久久69精品久久久久久久电影好 | 亚洲精品国产精品国自产在线 | 国产精品免费视频一区二区 | 91精品免费视频 | 四虎8848免费高清在线观看 | 中文字幕xxxx | 国产综合福利在线 | 亚洲 欧美变态 另类 综合 | 天天躁天天操 | 娇妻呻吟一区二区三区 | 国产精品大片在线观看 | 国产视频亚洲精品 | 婷婷久久丁香 | 午夜精品久久久久久久久久久久久久 | 97涩涩视频| www.99久久.com | 国产福利精品一区二区 | 91麻豆产精品久久久久久 | 丁香婷婷在线观看 | 久久久婷| 亚洲精品资源 | 精品视频中文字幕 | 欧美精品久久久久久久久老牛影院 | 五月综合久久 | 一区二区三区精品在线视频 | 99精品欧美一区二区三区黑人哦 | 欧美天天综合网 | 久久国产亚洲 | 日日夜av | 日韩电影在线观看一区 | 日韩av电影国产 | 国内久久视频 | 久久av福利 | 久久99亚洲热视 | 免费毛片aaaaaa | 国产亚洲免费的视频看 | 国产一级免费播放 | 日韩电影在线一区二区 | 丝袜+亚洲+另类+欧美+变态 | 日韩在线无 | 成人资源在线观看 | 免费高清在线观看电视网站 | 中文字幕 国产视频 | 超碰av在线播放 | 天天操狠狠操 | www日| 97超碰国产精品女人人人爽 | www.国产在线| 精品国产电影一区 | 九九九在线 | 九九99靖品 | 色九九视频 | 成人免费观看a | 中文亚洲欧美日韩 | 蜜桃av观看| 久久99偷拍视频 | 中文字幕在线观看视频一区 | 国产精品成 | 婷婷国产在线 | 四虎国产永久在线精品 | 在线日韩精品视频 | 天天爽天天爽夜夜爽 | 亚洲精品av中文字幕在线在线 | 在线观看久久久久久 | 亚洲人人网| 免费精品国产 | 亚洲最大激情中文字幕 | 能在线观看的日韩av | 婷婷久久丁香 | 在线天堂8√ | 五月天久久综合网 | 国产高清网站 | 日韩欧美成| 国产欧美在线一区 | 欧美高清视频不卡网 | 在线视频日韩欧美 | 黄色a级片在线观看 | 69亚洲视频 | av成人免费在线 | 久久免费成人精品视频 | 国产黄在线| 国产成人一区二区在线观看 | 欧美乱熟臀69xxxxxx | 麻豆精品视频在线 | 丁香六月网 | 国产看片 色| 国产精品久久久久久久午夜片 | 色网站黄| 免费日韩 | 天天爽综合网 | 又黄又网站 | 大胆欧美gogo免费视频一二区 | 草在线 | 色综合天天综合 | 亚州欧美视频 | 激情导航 | 激情视频综合网 | 天天激情综合网 | 91九色自拍 | 午夜视频在线观看欧美 | 欧美孕交vivoestv另类 | 欧美视屏一区二区 | 激情综合啪 | 国产精品一区二区av影院萌芽 | 国产黄色精品 | 伊色综合久久之综合久久 | 亚洲精品2区 | 国产精品久久久久国产精品日日 | 久草五月 | 深夜免费福利 | 激情综合国产 | 国产午夜精品一区二区三区在线观看 | 99视频+国产日韩欧美 | 白丝av免费观看 | 日日操操操 | 伊香蕉大综综综合久久啪 | 久操综合| 日韩va亚洲va欧美va久久 | 国产电影一区二区三区四区 | 91麻豆文化传媒在线观看 | 99热播精品 | 69国产精品视频免费观看 | 国产精品一区在线观看你懂的 | 日韩精品在线视频免费观看 | 一区二区三区高清在线 | 探花视频在线观看免费版 | 国产精品99久久久久久宅男 | 日本免费久久高清视频 | 成人午夜剧场在线观看 | 在线久草视频 | 婷婷激情五月综合 | 免费在线观看av网址 | 国产精品久久久久久久久久东京 | 日韩精品一区电影 | 韩日精品视频 | 亚洲区另类春色综合小说校园片 | 麻豆视频在线 | 九九九九九九精品任你躁 | 国产在线观看地址 | 高清av网| 久久综合操 | 欧美日韩免费一区 | 五月婷婷影院 | 五月婷婷激情综合 | 日韩精品免费在线视频 | 日韩在线不卡视频 | 久久精品一二三区 | 久久99网站 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 中文在线亚洲 | 国产自在线观看 | 干 操 插 | 天天艹天天 | 天天爽天天射 | 毛片网站观看 | 丰满少妇一级片 | 五月激情五月激情 | 亚洲午夜精品久久久久久久久 | 国产精品激情偷乱一区二区∴ | 中文字幕在线一区观看 | av一区在线| 超碰在线最新地址 | 成人在线视频观看 | 亚州精品在线视频 | 在线 高清 中文字幕 | 精品久久久久国产免费第一页 | 激情综合中文娱乐网 | 久操视频在线免费看 | 久久在线视频在线 | 91在线免费播放 | 亚洲免费精品视频 | 成人国产网址 | 久草视频网 | 日本精油按摩3 | 久久九九久久九九 | 亚洲精品国产视频 | 国产不卡视频 | 久操久| 日韩网| 久久久久久国产精品久久 | 国产精品国产三级国产不产一地 | 中日韩免费视频 | 日韩高清www | 日韩欧美网址 | 国产精品成人一区二区三区 | 国产在线观看二区 | 91传媒激情理伦片 | 99九九免费视频 | 国产毛片久久久 | 国产成人精品福利 | 国产亚洲欧美日韩高清 | 亚洲乱码精品 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 天天爽人人爽夜夜爽 | 天天综合导航 | 中文字幕 在线看 | 国产h在线播放 | 中文字幕亚洲欧美日韩 | 精品久久久久一区二区国产 | 樱空桃av | 亚洲综合视频在线播放 | 99爱国产精品 | 超级碰碰免费视频 | 久久精品91久久久久久再现 | 91日本在线播放 | 久久免费播放视频 | 激情亚洲综合在线 | 二区在线播放 | 91精品在线观看视频 | 欧美久久成人 | 91禁在线观看 | 精品国产a | 日本韩国在线不卡 | 免费在线观看av网站 | 国产精品久久电影观看 | 免费看亚洲毛片 | 在线观看日本高清mv视频 | 久久成人麻豆午夜电影 | 91精品视频免费看 | 中文字幕在线观看完整版电影 | 国产老熟 | 久久国产成人午夜av影院潦草 | 激情狠狠干 | 国产精品aⅴ | 成人av电影免费在线观看 | 精品视频在线看 | 久久人人97超碰国产公开结果 | 2024国产精品视频 | 久久精品久久精品 | 国产精品国产三级在线专区 | 日韩欧美在线一区二区 | 911久久香蕉国产线看观看 | 精品国偷自产国产一区 | 天天干天天看 | 九九热在线视频免费观看 | 97超碰人人网 | 天堂网一区 | 四虎影视成人永久免费观看亚洲欧美 | 国产黄在线| 婷婷成人亚洲综合国产xv88 | 久久久96 | 国产高清在线精品 | 日韩视频免费在线 | 国产精品久久网站 | 国产高清视频在线观看 | 成人国产精品久久久春色 | av高清一区二区三区 | 五月婷婷开心中文字幕 | 偷拍区另类综合在线 | 国产又粗又猛又色又黄网站 | 一区二区三区在线观看免费 | 久久官网 | 中文不卡视频在线 | 国语精品视频 | 国产精品久久久久久久7电影 | 色一级片 | 在线观看免费av网站 | 久久久av免费 | 九九九九九九精品 | 久久99精品视频 | 国产亚洲精品成人av久久影院 | 激情www | 日韩精品一区二区三区第95 | www天天干com| 成人黄色一级视频 | 免费看日韩片 | 久久久久久麻豆 | 国产一级a毛片视频爆浆 | 国产99久久久国产 | 欧美日韩国产一区二区在线观看 | 色94色欧美| 91av视频| 久久视频99| 香蕉久草 | 久久99最新地址 | 国产精品av一区二区 | 久久中文欧美 | 久久男人影院 | 粉嫩高清一区二区三区 | 久久久久久黄色 | 国产女人40精品一区毛片视频 | 麻豆免费视频观看 | 久久99操| 日韩欧美高清一区二区三区 | 亚洲性少妇性猛交wwww乱大交 | 黄色大全免费网站 | 成人免费在线视频 | 97人人视频 | 亚洲精品88欧美一区二区 | 亚洲一区久久久 | 日韩欧美极品 | 天天操夜操 | 免费看黄色大全 | 欧美精品午夜 | 国产高清黄 | 国产精品欧美一区二区三区不卡 | 天堂va欧美va亚洲va老司机 | 黄色毛片网站在线观看 | 五月婷婷伊人网 | 99色在线观看视频 | 国产一区二区久久精品 | 999久久久久久久久 69av视频在线观看 | 国产在线久久久 | 成人av在线看 | 成人免费看片98欧美 | 天天色天天射天天综合网 | av一级片网站 | 成人在线播放视频 | 免费日p视频| 99精品视频免费观看 | 国产精品video爽爽爽爽 | av免费网站 | 色婷婷天天干 | 成人黄色大片 | 一区二区三区在线看 | 欧美黄色高清 | 日韩中文字幕免费视频 | 精品国产一区二区三区免费 | 国产一级性生活视频 | 四虎在线观看精品视频 | 在线国产中文 | 国产成人高清 | 97视频播放 | 国产精品原创在线 | 国产专区视频在线 | 天天天天爱天天躁 | 精品一区二区精品 | 一级α片 | 成人免费在线电影 | 6080yy精品一区二区三区 | 国产免费嫩草影院 | 色视频在线观看 | 五月婷婷视频在线 | 日韩在线一区二区免费 | 久久国产精品99国产 | 国产成人av网 | 人人看97 | 亚洲天堂色婷婷 | 亚洲精品乱码白浆高清久久久久久 | 免费在线观看毛片网站 | 四虎永久精品在线 | 99久久国产免费,99久久国产免费大片 | 97精品国产97久久久久久免费 | 色99久久 | 国产专区第一页 | 黄色特级一级片 | 成人国产综合 | 黄p在线播放 | 日韩免费一区二区在线观看 | 午夜在线免费视频 | 91麻豆文化传媒在线观看 | 香蕉一区 | 中文字幕在线视频一区 | 日本免费久久高清视频 | 色婷婷精品大在线视频 | 三级av免费看 | 国产一区二区在线观看视频 | 久久有精品 | 久久久999| 亚洲精品国产精品国自 | 婷婷伊人五月天 | 狠狠色狠狠色综合日日小说 | 国产99在线免费 | 欧美黑人猛交 | 在线视频一区观看 | 亚洲综合在线播放 | 97超碰资源 | av色影院 | 亚洲精品国产免费 | 久久精品123 | 香蕉久久久久久久 | 99热9| 九九热精| 美女在线免费视频 | 手机看片久久 | av中文天堂 | 毛片永久免费 | 成人免费毛片aaaaaa片 | 日韩一区二区三区视频在线 | 亚洲一区二区三区在线看 | 日韩免费观看一区二区 | 国精产品一二三线999 | 五月婷婷av在线 | 有码中文在线 | 国产成人99久久亚洲综合精品 | 国产精品视频线看 | 一本一道久久a久久精品 | 婷婷天天色 | 久久久久亚洲精品 | 九九交易行官网 | 亚洲国产精品电影 | 超碰99在线 | 人人爽影院 | 午夜免费在线观看 | 婷婷深爱网 | 免费国产在线精品 | 日韩在线视频网站 | 日韩欧美精品在线视频 | 久草视频中文 | 久久国产a | 久久激情片 | 国产亚洲婷婷免费 | 91高清不卡 | 日韩亚洲在线观看 | 日韩免费在线观看 | 午夜精品久久久久99热app | 视频1区2区 | 91自拍视频在线 | 天天激情综合网 | 91一区二区三区在线观看 | 免费精品在线观看 | 欧美日性视频 | 久久电影中文字幕视频 | 九色porny真实丨国产18 | 欧美一区二区在线 | 成人av在线电影 | 在线看欧美 | 国产精品不卡视频 | 国产一区二区高清视频 | 在线观看免费一级片 | 亚洲伦理一区 | av综合av | 又大又硬又黄又爽视频在线观看 | 亚州国产精品久久久 | 国产成人99av超碰超爽 | 久久精品视频网址 | 国产一区二区三区视频在线 | 免费看的黄色 | 日本性生活免费看 | 久久一区二区三区超碰国产精品 | 91大神免费在线观看 | 超碰精品在线观看 | 国产五月 | 国产欧美精品一区二区三区四区 | 成人午夜电影在线 | 色姑娘综合天天 | 超碰.com| 欧美国产不卡 | 激情综合色播五月 | 久久精品1区2区 | 激情视频在线高清看 | 天天色.com | 黄色在线观看免费 | 91精品久久久久久综合乱菊 | 国产精品久久久毛片 | 超碰在线94 | www天天干 | 在线之家免费在线观看电影 | 久久久久久久久久网 | 永久中文字幕 | 在线看片日韩 | 久草精品在线播放 | 涩涩网站在线播放 | 日韩欧美电影 | 奇米影视777影音先锋 | 国产精品视频免费 | 欧美成人黄 | 久久综合99| 97国产在线| 黄色免费大全 | 综合影视 | 91九色视频在线播放 | 五月婷av| 久久国产精品99久久人人澡 | 在线观看日韩中文字幕 | 日韩精品中文字幕有码 | 日韩69av| 夜夜摸夜夜爽 | 亚洲一区二区视频在线 | 人人看人人草 | 色综合网 | 欧美日韩伦理在线 | 蜜臀久久99静品久久久久久 | 亚洲午夜久久久久久久久久久 | 69av久久| 亚洲自拍偷拍色图 | 丁香六月国产 | 91在线免费播放 | 国产精品成人自产拍在线观看 | 中文字幕一区av | 国产日本三级 | 国产98色在线 | 日韩 | 欧美日韩视频观看 | 亚洲精品国精品久久99热一 | 欧美激情va永久在线播放 | 色婷婷久久久综合中文字幕 | 成人四虎 | 国产亚洲在 | 国产亚洲精品久久久久秋 | 亚洲综合少妇 | 九九九九九国产 | 在线观看成年人 | 黄色免费视频在线观看 | 亚洲在线观看av | 国产精品免费观看久久 | 天天操天天谢 | 蜜桃麻豆www久久囤产精品 | 成人av网站在线观看 | 久久免费国产精品 | 9999在线视频 | 久久99视频免费观看 | 日韩videos| 久久久久久高潮国产精品视 | 国产精品久久久免费 | 97超碰网 | 日韩 精品 一区 国产 麻豆 | 伊人永久 | 精产嫩模国品一二三区 | 综合久久精品 | 天天躁日日躁狠狠躁av麻豆 | 热热热热热色 | 日韩欧美国产免费播放 | 亚洲精品ww | 久久99欧美 | 人人澡澡人人 | 欧美日韩一区二区三区在线观看视频 | www.xxx.性狂虐 | 日本夜夜草视频网站 | 亚洲视频精选 | 亚洲欧美一区二区三区孕妇写真 | 成人网大片 | 亚洲综合在线一区二区三区 | 成人资源站 | 免费成人在线观看 | 日本精品va在线观看 | 99精品在线观看视频 | 99r在线播放 | 免费视频xnxx com | 精品久久一区二区三区 | 国产高h视频| 久久精品国产亚洲精品 | 99理论片 | 97国产超碰 | 成人国产网站 | 久久精品牌麻豆国产大山 | 久久久久亚洲国产精品 | 色婷婷综合久久久久中文字幕1 | 国产美女久久 | 最近2019中文免费高清视频观看www99 | 日韩毛片在线免费观看 | 久久精品99国产国产 | 亚洲观看黄色网 | 亚洲综合导航 | 国产91精品看黄网站在线观看动漫 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 超碰999| 久久99久久99精品免观看软件 | 国产精品第十页 | 麻豆国产电影 | 成人免费观看网站 | 91人网站| 国产精品久久久久av福利动漫 | 国产精品亚州 | 99色精品视频 | 久久久久久免费视频 | 91成人精品一区在线播放 | 久久亚洲专区 | 欧美日高清视频 | 天天色天天搞 | 欧美国产一区在线 | 亚洲精品视频在线观看免费 | 99视频免费在线观看 | 午夜婷婷网| 六月激情久久 | 国产成人久久精品77777综合 | 中文字幕999 | 欧美日本不卡视频 | 亚洲精品一区二区久 | 99视频国产精品免费观看 | 国产网站av | 日本久久久久久久久久 | 国产一区二区不卡视频 | 91九色视频 | 午夜精品av在线 | 久久艹国产 | 国产高清视频在线播放一区 | 少妇性aaaaaaaaa视频 | 粉嫩av一区二区三区免费 | 99精品视频免费看 | 日韩有码在线观看视频 | 天堂av免费在线 | 国产黄免费在线观看 | 国产精品久久久久久久久久久杏吧 | 色婷av| 在线观看国产永久免费视频 | 91污在线| 99久久精品网 | 亚洲专区免费观看 | 最近中文字幕免费大全 | 91亚洲夫妻 | 日一日操一操 | 亚洲免费公开视频 | 亚洲首页 | 综合av在线 | 一区二区欧美日韩 | 成人黄色电影在线观看 | 国产一二三在线视频 | 国产中文字幕在线免费观看 | 国产一级电影网 | 又污又黄的网站 | 欧美日韩国产在线 | 五月激情姐姐 | 亚洲三级黄 | 国产毛片在线 | 久久亚洲影视 | 91少妇精拍在线播放 | 国产精品婷婷午夜在线观看 | 欧美日韩大片在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 一区二区三区四区不卡 | 日韩黄色免费 | 国产三级久久久 | 国产精品高潮久久av | 黄色片免费在线 | 97日日碰人人模人人澡分享吧 | 成人97视频一区二区 | 久久国产网站 | 成人综合婷婷国产精品久久免费 | 久久综合狠狠综合久久激情 | 五月天激情婷婷 | 午夜久久影视 |