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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

如何根据动态SQL代码自动生成DTO

發(fā)布時(shí)間:2023/12/9 数据库 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何根据动态SQL代码自动生成DTO 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

當(dāng)前的狀況

一般做數(shù)據(jù)庫相關(guān)開發(fā), 除非學(xué)習(xí), 否則很少有人愿意直接使用JDBC。本來Java代碼就比較啰嗦了,而直接用JDBC寫代碼之啰嗦簡直有些令人發(fā)狂!所以在實(shí)際開發(fā)過程中,我們通常都會(huì)使用一些框架/庫來幫助我們操作數(shù)據(jù)庫。而且開源市場上的選擇也比較多,就我個(gè)人接觸到的有:Hibernate,MyBatis,JdbcTemplate,DbUtils,ActiveRecord,JavaLite等等。 這些框架都能大幅的提高開發(fā)效率,對于一些基本CRUD操作來說,雖然各有差異,但總的來說基本是夠用了。

然而對于稍微復(fù)雜點(diǎn)的數(shù)據(jù)查詢來說,總免不了需要手工編寫SQL代碼,甚至還需要根據(jù)參數(shù)來動(dòng)態(tài)拼接SQL。各種框架基本上都有一套自己拼接動(dòng)態(tài)SQL的方案,也都能很輕松的將查詢出來的數(shù)據(jù)轉(zhuǎn)為對象(DTO)。

不過到目前為止,這些框架雖然能夠很輕松的幫助我們完成數(shù)據(jù)的映射,但是這些DTO還得需要我們手工一個(gè)個(gè)的去編寫。

存在的問題

通常我們在寫完SQL的查詢代碼后, 需要有一個(gè)對應(yīng)的DTO,將數(shù)據(jù)庫中查詢出的數(shù)據(jù)映射到DTO,以便于調(diào)用的程序能夠更好的使用這些數(shù)據(jù)。當(dāng)然,為了省事,有時(shí)也會(huì)把數(shù)據(jù)直接存儲(chǔ)在像Map這樣的數(shù)據(jù)結(jié)構(gòu)中。不過, Map這種方式雖然很輕便,但是會(huì)帶來幾個(gè)比重要的潛在問題:

  • 調(diào)用者需要記住Map里面每個(gè)key的名稱,這就會(huì)給程序員帶來一些所謂的記憶負(fù)擔(dān)
  • 過重的記憶負(fù)擔(dān),就會(huì)導(dǎo)致系統(tǒng)的邏輯復(fù)雜,理解困難,維護(hù)更困難
  • SQL更改導(dǎo)致Key發(fā)生變化后,很難發(fā)現(xiàn)問題,需要程序員非常小心的處理這些更改

如果想要避免Map帶來的這些問題,我們需要為每個(gè)SQL查詢都單獨(dú)編寫DTO。盡管書寫這些DTO并沒有什么難度,但是非常枯燥乏味,特別是字段很多的時(shí)候更是如此;并且,如果SQL查詢的字段出現(xiàn)更改,也還是要記得回來修改這個(gè)DTO。單獨(dú)編寫DTO雖然減輕了Map帶來的部分問題,同時(shí)也額外增加了新的工作量。

如果有一種方法能夠在SQL代碼(包括動(dòng)態(tài)拼接的SQL)編寫完成后,就自動(dòng)的做到下面2點(diǎn)就非常完美了:

  • 根據(jù)SQL代碼,直接生成對應(yīng)的DTO
  • 變更SQL代碼,自動(dòng)修改對應(yīng)的DTO
  • 這樣,一方面解決了手工書寫DTO的麻煩; 另一方面,當(dāng)修改SQL導(dǎo)致某個(gè)字段發(fā)生更改時(shí), 由于自動(dòng)生成的DTO也會(huì)同步修改,在那些引用到這個(gè)字段的地方,編譯器就會(huì)立即給出錯(cuò)誤提示! 使得問題一產(chǎn)生就能立即被發(fā)現(xiàn),這樣可以避免了很多潛在的問題。

    本文正是試圖要解決如何根據(jù)SQL代碼自動(dòng)生成DTO的問題,省去手工編寫的麻煩,提高程序員的開發(fā)效率。

    解決的思路

    理想總是很美好,現(xiàn)實(shí)總是很殘酷!

    那么,到底能否實(shí)現(xiàn)這個(gè)想法呢,我們首先來初步分析一下自動(dòng)產(chǎn)生DTO的可行性:

    要實(shí)現(xiàn)自動(dòng)產(chǎn)生DTO,其核心就是要拿到SQL查詢所對應(yīng)的每個(gè)列名及其數(shù)據(jù)類型。有了列名和數(shù)據(jù)類型,就能很容易寫一個(gè)方法來產(chǎn)生DTO了。

    我們知道,在一般情況下,SQL查詢寫完之后,包括調(diào)用存儲(chǔ)過程和那些根據(jù)調(diào)用參數(shù)來動(dòng)態(tài)拼接的SQL,雖然最終運(yùn)行的SQL可能不盡相同,但是其查詢結(jié)果的字段部分都是相對固定的。

    當(dāng)然,也有極少情況下會(huì)碰到字段都不確定的查詢,不過在這種極端情況下,即使手工也沒法寫DTO了,反倒是用Map更合適, 我們這里不做討論。

    那么,怎么才能拿到列名和類型呢?

    一種方案是分析SQL代碼中SELECT部分的字段,不過其局限性比較大:

    • 對于拼接的SQL代碼,分析難度比較大
    • 字段的類型也難以判斷
    • SELECT * …; CALL statement 這樣常見的查詢方式分析起來難度也很大

    上述方案對像Mybatis這種采用配置文件(xml)來寫SQL的方式,似乎有些可行性,我沒有具體試驗(yàn)過,但估計(jì)面臨的困難不會(huì)少。

    另一種方案是想辦法直接運(yùn)行包含SQL的這些代碼:

    我們知道JDBC執(zhí)行一個(gè)SQL查詢,會(huì)返回ResultSet對象,通過該對象中的方法getMetaData(),能夠得到這次查詢的一些元數(shù)據(jù):如列名稱,列類型,以及該列所在的表名等,這些信息就已經(jīng)足夠我們來產(chǎn)生需要的那個(gè)類了。

    那么,怎么才能夠運(yùn)行這些包含SQL的代碼呢?

    對于那些固定的SQL語句還稍微好說點(diǎn),我們拿到這個(gè)固定的SQL,調(diào)用JDBC就能拿到MetaData,然后就可以很容易的根據(jù)這些信息來生成DTO。但是,對于那些復(fù)雜的需要根據(jù)一系列參數(shù)來動(dòng)態(tài)產(chǎn)生的SQL查詢,在參數(shù)設(shè)置好前是無法直接運(yùn)行的,也就無法得到MetaData,得不到MetaData我們就無法生成DTO。

    怎么辦?

    前面已經(jīng)討論了,即便是動(dòng)態(tài)SQL,無論輸入什么樣的參數(shù),雖然執(zhí)行的SQL語句可能不一樣,但是最終產(chǎn)生結(jié)果列卻是固定的。 我們當(dāng)前需要解決的問題不正是要獲取這些列信息嗎? 既然如此,那我們就構(gòu)造一系列默認(rèn)的參數(shù)值。這些參數(shù)并沒有實(shí)際用處,僅僅是為了讓我們正在編輯SQL代碼得以正常運(yùn)行,以便拿到需要的MetaData,至于能否查詢到數(shù)據(jù)并不緊要。

    通常我們編寫的SQL代碼,有2種存在形式:一是直接在Java代碼中, 另外一種是放在配置文件中。這里不討論哪種形式更好,以后我會(huì)單獨(dú)再找地方來討論。這里主要討論的是在Java代碼中拼接的SQL, 如何實(shí)現(xiàn)一個(gè)代碼生成器來自動(dòng)生成這些DTO:

    要全自動(dòng)化的解決這個(gè)問題,我們先來看看這個(gè)代碼生成器所要面臨的一些挑戰(zhàn)及應(yīng)對的思路:

    • 如何標(biāo)識(shí)一段需要生成DTO的SQL代碼

    首先,我們需要標(biāo)識(shí)出這段代碼,以便于代碼生成器可以運(yùn)行這段需要生成DTO代碼。而通常情況下,我們的數(shù)據(jù)接口都是方法級別的,因此我們可以通過對方法進(jìn)行注解,用注解來標(biāo)識(shí)這個(gè)方法要返回一個(gè)DTO對象是個(gè)不錯(cuò)的選擇。

    • 如何定義DTO的類名

    一種很容易想到的方法就是通過SQL代碼所在的類名+方法名自動(dòng)組合出一個(gè)名稱, 當(dāng)然有時(shí)為了靈活控制,應(yīng)該允許程序員指定一個(gè)名字。

    • 如何執(zhí)行代碼

    執(zhí)行代碼的關(guān)鍵是構(gòu)造一批能夠調(diào)用注解方法的合適參數(shù)。當(dāng)然首先需要對注解的方法進(jìn)行代碼分析,提取方法參數(shù)名及類型。代碼分析可以用類似JavaCC這樣的工具,或者一些語法分析器,這里不做細(xì)究。下面主要探討下默認(rèn)參數(shù)的構(gòu)造:

    為了簡化問題,默認(rèn)情況下我們可以按如下規(guī)則進(jìn)行構(gòu)造:

    數(shù)字型參數(shù),默認(rèn)為:0, 例如:public Object find(int arg){...} 構(gòu)造 int arg=0; 字符串參數(shù),默認(rèn)為:"", 構(gòu)造 String arg=""; 布爾型參數(shù),默認(rèn)為:false, 構(gòu)造 boolean arg=false; 數(shù)組型參數(shù),默認(rèn)為:類型[0], 構(gòu)造 int[] arg=new int[0]; 對象型參數(shù),默認(rèn)為:new 類型(), 例如:public Object find(User arg){...} 構(gòu)造 User arg=new User();

    當(dāng)然,對于一些簡單參數(shù)的情況下,上面構(gòu)造規(guī)則基本上都能夠奏效。 但是,對于有些參數(shù):比如參數(shù)是一個(gè)接口,或者是一個(gè)需要?jiǎng)討B(tài)連接的表名,又或者是SQL拼接代碼的邏輯要求參數(shù)必須是某些特殊值等等,默認(rèn)構(gòu)造出的參數(shù)就會(huì)導(dǎo)致程序無法執(zhí)行。

    但是,怎么才能夠讓我們的代碼生成器能夠繼續(xù)執(zhí)行下去呢? 好像確實(shí)沒有什么能自動(dòng)處理的辦法,只好把這個(gè)問題交給程序員來處理了,讓程序員來幫助代碼生成器完成參數(shù)的初始化。

    我們可以在注解上提供一個(gè)參數(shù), 該參數(shù)主要完成對默認(rèn)規(guī)則下無法初始化的參數(shù)進(jìn)行設(shè)置。 當(dāng)然,這個(gè)參數(shù)中的初始化代碼也可以覆蓋默認(rèn)規(guī)則,以便于我們在編輯階段就可以測試執(zhí)行不同的SQL流程。

    • 如何生成DTO

    經(jīng)過以上一系列的處理,我們終于能自動(dòng)的把包含SQL查詢代碼的方法運(yùn)行起來了。不過,現(xiàn)在我們還沒得到想要的MetaData,還無法生成DTO。

    一種可能的方式是包裝一個(gè)JDBC,截獲本次方法調(diào)用時(shí)執(zhí)行的SQL查詢, 但面臨的問題是,如果方法中有多次查詢就比較麻煩了。

    另一種方式依賴于框架的支持,可以截獲到方法的return語句,獲取其執(zhí)行的SQL語句, 有了SQL語句,生成DTO就沒有什么難度了。

    • 如何修改代碼

    為了盡量減少程序員的工作,我們的代碼生成器在生成完DTO后, 還需要將方法的返回值自動(dòng)修改成這個(gè)DTO類。

    • 如何處理SQL的變更

    簡單的做法是:一旦有某個(gè)SQL代碼發(fā)生變化,就把所有的DTO都按照前面的方法重新生成一遍。 不過,很顯然當(dāng)查詢方法很多的時(shí)候,DTO代碼生成的過程將緩慢到難以忍受。

    另外一種更合理的做法是:我們在生成DTO時(shí)增加一個(gè)指紋字段,其值可以用SQL代碼中所包含的信息來產(chǎn)生,例如:代碼長度+代碼的hashCode.代碼生成器在決定是否需要處理這個(gè)方法前,先計(jì)算該方法的指紋和存在于DTO里面的指紋進(jìn)行比較,如果相同就跳過,否則就認(rèn)為本方法的SQL發(fā)生了變更,需要更新DTO。

    具體的實(shí)現(xiàn)

    到此為止,基本上DTO代碼生成器的主要障礙都有了相應(yīng)的處理辦法。最后,我們用一個(gè)具體的實(shí)現(xiàn)來做個(gè)簡單示例。

    這里需要引入2個(gè)項(xiàng)目:

    • monalisa-orm: https://github.com/11039850/monalisa-orm

    這是一個(gè)功能強(qiáng)大且非常容易使用的ORM框架,通過@DB(jdbc_url,username,password)注解來引入數(shù)據(jù)庫。

    • monalisa-eclipse: https://github.com/11039850/monalisa-eclipse

    這是一個(gè)相應(yīng)的Eclipse插件,它可以:

  • @DB注解的接口,在文件保存時(shí) ,自動(dòng)生成表的CRUD操作
  • @Select注解的方法,在文件保存時(shí) ,自動(dòng)生成DTO
  • 很輕松的書寫多行字符串
  • 插件安裝和設(shè)置可以參考: https://github.com/11039850/monalisa-orm/wiki/Code-Generator

    下面是一個(gè)根據(jù)動(dòng)態(tài)SQL自動(dòng)生成DTO示例,完整的例子工程可以參考: https://github.com/11039850/monalisa-example

    package test.dao;public class UserBlogDao {//@Select 注解指示該方法需自動(dòng)生成DTO//默認(rèn)類名: Result + 方法名, 默認(rèn)包名:數(shù)據(jù)訪問類的包名+"."+數(shù)據(jù)訪問類的名稱(小寫)//可選參數(shù):name 指定生成結(jié)果類的名稱,如果未指定該參數(shù),則采用默認(rèn)類名//可選參數(shù):build 初始化調(diào)用參數(shù)的Java片段代碼,替換默認(rèn)的參數(shù)構(gòu)造規(guī)則@Select(name="test.result.UserBlogs") //!!! 保存后會(huì)自動(dòng)修改該函數(shù)的返回值為: List -> List<UserBlogs>//第一次編寫時(shí),由于結(jié)果類還不存在, 為了保證能夠編譯正常,//函數(shù)的返回值 和 查詢結(jié)果要用 泛值 替代, 保存后,插件會(huì)自動(dòng)修改.//函數(shù)的返回值 和 查詢結(jié)果 泛值的對應(yīng)關(guān)系分三類如下://1. List查詢//public DataTable method_name(...){... return Query.getList(); } 或//public List method_name(...){... return Query.getList(); } ////2. Page查詢//public Page method_name(...){... return Query.Page(); }////3. 單條記錄//public Object method_name(...){... return Query.getResult(); }//public List selectUserBlogs(int user_id){ Query q=TestDB.DB.createQuery();q.add(""/**~{SELECT a.id,a.name,b.title, b.content,b.create_timeFROM user a, blog b WHERE a.id=b.user_id AND a.id=?}*/, user_id); return q.getList(); } }

    上述代碼保存后,插件就會(huì)自動(dòng)生成一個(gè)DTO類:test.result.UserBlogs, 并自動(dòng)將方法修改成如下的聲明:

    public List<UserBlogs> selectUserBlogs(int user_id){ ...return q.getList(UserBlogs.class); }

    當(dāng)然,如果對selectUserBlogs方法做了任何的修改(包括只是加了一個(gè)空格),保存文件后,插件也會(huì)自動(dòng)更新UserBlogs。

    同時(shí),為了方便我們調(diào)試,插件也會(huì)在Eclipse的控制臺(tái)窗口輸出類似下面的信息:

    2016-06-27 17:00:31 [I] ****** Starting generate result classes from: test.dao.UserBlogDao ****** 2016-06-27 17:00:31 [I] Create class: test.result.UserBlogs, from: [selectUserBlogs(int)] SELECT a.id,a.name,b.title, b.content,b.create_timeFROM user a, blog b WHERE a.id=b.user_id AND a.id=0

    順便補(bǔ)充一下:

    在Java代碼中書寫SQL,非常令人討厭的一件事情就是Java語言中字符串的連接問題。使得大段的SQL代碼中間要插很多的換行/轉(zhuǎn)義符號,寫起來很麻煩,看著也不舒服。monalisa-eclipse插件順便也解決了多行字符串的書寫問題。

    例如:

    System.out.println(""/**~{SELECT * FROM userWHERE name="zzg"}*/);

    將會(huì)輸出:

    SELECT * FROM userWHERE name="zzg"

    當(dāng)然,為了快速書寫,可以在Eclipse中把多行字符串的語法設(shè)置為一個(gè)代碼模板。關(guān)于多行語法的更多細(xì)節(jié)可以參考: https://github.com/11039850/monalisa-orm/wiki/Multiple-line-syntax

    到這里,動(dòng)態(tài)SQL代碼自動(dòng)生成DTO的思路和實(shí)現(xiàn)例子基本上就介紹完了, 歡迎大家提出各種有理無理的意見,一起討論、進(jìn)步,謝謝!

    總結(jié)

    以上是生活随笔為你收集整理的如何根据动态SQL代码自动生成DTO的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    天天操天天操天天操天天操天天操 | 午夜精品福利一区二区三区蜜桃 | 午夜精品久久久久久久99 | 超碰97人人在线 | 97精品国产97久久久久久粉红 | 欧美激情综合五月色丁香小说 | 91成人精品视频 | 亚洲经典视频 | 99精品欧美一区二区三区黑人哦 | 国产亚洲综合在线 | 亚洲免费视频在线观看 | 免费福利影院 | 欧美精品一区在线 | 国产精品入口传媒 | 欧美色图亚洲图片 | 成人在线一区二区 | 日韩免费福利 | 午夜美女视频 | 96精品在线| 人人干人人干人人干 | 99视频免费播放 | 丁香午夜| 久久久麻豆视频 | 成人av动漫在线 | 91精品啪在线观看国产 | 国产精品麻 | 国产亚洲一区二区三区 | av字幕在线 | 国产精品成人久久 | 在线免费观看视频一区二区三区 | 伊人婷婷网 | 天堂在线一区二区三区 | 在线观看的黄色 | 久久久久久久久久久网站 | 久久久96 | 高清av中文在线字幕观看1 | 国产精品美女久久久久久免费 | 黄a网站 | 国产高清在线视频 | 日韩高清免费在线观看 | 在线观看 国产 | 超碰97国产精品人人cao | 欧美精品久久久久久久亚洲调教 | 久久婷婷视频 | 亚洲精品88欧美一区二区 | 日本三级吹潮在线 | 91成人网在线播放 | 91福利视频一区 | 91桃色在线观看视频 | 亚洲一区精品人人爽人人躁 | 国产精品毛片一区二区在线 | 久久综合免费 | 亚洲最大在线视频 | 丁香六月av| 久久精品福利 | 国产精品成人一区二区三区吃奶 | 国产麻豆视频网站 | 国产小视频免费在线网址 | 五月激情电影 | 成人影视免费 | 国内精品久久天天躁人人爽 | 高清一区二区三区 | av中文字幕亚洲 | 久久精品这里都是精品 | 在线视频 精品 | 综合激情婷婷 | 成人午夜电影网站 | 国产视频不卡一区 | 亚洲精品99久久久久中文字幕 | 欧美日韩国产亚洲乱码字幕 | 国产手机视频在线播放 | 午夜男人影院 | 一级免费黄视频 | 国产精彩视频 | 久久成熟| 国产亚洲视频在线观看 | 91九色视频在线 | 免费韩国av | 欧美一区三区四区 | av电影免费在线看 | 久久国产精品久久精品 | 毛片在线播放网址 | 日韩免费视频一区二区 | 欧美日韩一区二区久久 | 免费看黄色91 | 欧美日韩亚洲国产一区 | 亚洲精品视频第一页 | 六月婷操 | 国产97视频在线 | 99精品国产高清在线观看 | 日韩在线首页 | 国产va饥渴难耐女保洁员在线观看 | 91在线观看视频网站 | 国产理论一区二区三区 | 中文字幕乱码日本亚洲一区二区 | 国产一卡二卡在线 | 97久久久免费福利网址 | 久久精品一区八戒影视 | 麻豆91网站 | bbbb操bbbb | 亚洲国产精品传媒在线观看 | 9幺看片| 99免费看片 | 在线观看国产日韩欧美 | 国产午夜精品久久久久久久久久 | 在线高清av | 81精品国产乱码久久久久久 | 久久一区二区三区四区 | 国产精品日韩欧美一区二区 | 国产精品女 | 精品毛片久久久久久 | 成人资源站 | 欧美一级视频在线观看 | 99久久99久久精品国产片果冰 | 国语对白少妇爽91 | 最新中文字幕视频 | 97精品国产97久久久久久免费 | 五月婷婷六月丁香 | 久久国产乱| 丁香六月五月婷婷 | www.国产精品 | 在线观看免费黄视频 | 免费91在线 | 六月婷婷久香在线视频 | 亚洲高清av在线 | 免费三及片 | 欧美日韩久久不卡 | 国产一区二区午夜 | 国产在线免费 | 午夜精品在线看 | 一区二区三区四区五区在线 | 亚洲欧美观看 | 日韩精品免费一区二区三区 | 日韩美女黄色片 | 久草视频在线播放 | 日韩欧美在线国产 | 久久久色 | a视频在线播放 | 中文字幕av免费在线观看 | 精品国偷自产国产一区 | 国产无套精品久久久久久 | 四虎影视av| 看国产黄色片 | 在线国产能看的 | 婷婷激情网站 | jizz欧美性9| 99热精品国产一区二区在线观看 | av丝袜在线| 精品久久国产一区 | 人人舔人人舔 | 五月婷婷综合在线观看 | 日韩免费电影在线观看 | 精品久久99 | 91九色视频观看 | 亚洲精品色婷婷 | 亚洲欧美国产日韩在线观看 | 韩日精品中文字幕 | 日韩1级片 | 成人免费在线视频 | 亚洲另类视频在线 | 97人人艹| 成人亚洲欧美 | 成 人 黄 色 视频 免费观看 | 激情九九 | 国产精品正在播放 | 女人18毛片a级毛片一区二区 | 天天插综合| 久草在线视频免赞 | 中文字幕国语官网在线视频 | 亚洲成人高清在线 | 久久69精品久久久久久久电影好 | 久久精品亚洲一区二区三区观看模式 | 成人h电影在线观看 | av在线网站大全 | 欧美激情视频一区二区三区 | 国产精品网站一区二区三区 | 五月天色站 | 欧美精品免费在线观看 | 午夜视频在线观看一区二区三区 | 黄色软件在线观看免费 | 91精品久久久久久综合乱菊 | 精品麻豆入口免费 | 99视频在线免费观看 | 成人av亚洲| 国产精品日韩高清 | 久久不卡av | 中文字幕 国产精品 | 超碰999| www.888av| 国产精品久久久久久69 | 国产资源中文字幕 | 亚洲精品综合一二三区在线观看 | 日韩成人精品一区二区 | 88av网站 | 一区二区不卡 | 男女靠逼app | 久久久久亚洲最大xxxx | 伊人久操 | 久久国产精品免费观看 | 九色porny真实丨国产18 | 一级免费观看 | 三级黄免费看 | 久久久免费av| 又大又硬又黄又爽视频在线观看 | 国产精品资源在线观看 | 国产丝袜网站 | 欧美在线99| 丁香六月激情 | 中文字幕激情 | 99r精品视频在线观看 | 精品在线亚洲视频 | 天天插日日操 | 国产精品麻豆99久久久久久 | 国产精品久久久久永久免费 | 一本色道久久综合亚洲二区三区 | 亚洲经典中文字幕 | 韩国中文三级 | 欧美人牲 | 国内视频一区二区 | 97超碰成人 | 国产精品久久久亚洲 | 亚洲日本成人网 | 欧美人操人 | 欧美成人高清 | 国产一级性生活视频 | 成年人在线观看视频免费 | 天天激情综合网 | 国产一区二区三区免费在线观看 | 一本一本久久a久久精品综合妖精 | 久久婷亚洲五月一区天天躁 | 欧洲高潮三级做爰 | 高潮久久久久久久久 | 手机看片中文字幕 | 免费三及片 | 午夜精品一区二区三区在线观看 | 国内精品久久久久影院一蜜桃 | 久久综合久久综合这里只有精品 | 久久精品一区二区三区四区 | 国产高清免费av | 免费av视屏 | 国产亚洲精品电影 | 午夜国产福利在线观看 | 欧美日韩3p | 成人观看| 一级做a爱片性色毛片www | 亚洲精品国产免费 | 日日摸日日碰 | 人人干人人干人人干 | 天天摸天天操天天舔 | 免费色av | 婷婷成人综合 | 99综合电影在线视频 | 色99之美女主播在线视频 | 国产一级在线视频 | 欧美国产大片 | 狠狠操.com | 亚洲第一中文网 | 国产成人福利在线观看 | 九色琪琪久久综合网天天 | 中字幕视频在线永久在线观看免费 | 另类老妇性bbwbbw高清 | 免费在线一区二区三区 | 欧美成人h版电影 | 日韩欧美高清 | av导航福利 | 亚洲综合在线五月天 | 欧美亚洲另类在线视频 | 日韩在线观看视频在线 | 久草免费看 | 激情视频网页 | 亚洲高清精品在线 | 免费看国产a| 亚洲毛片视频 | av电影一区二区三区 | 欧美性生活久久 | 国产精品久久久久久久久久免费看 | 日韩av免费一区 | 日韩综合视频在线观看 | 日韩精品欧美专区 | 久久精品国产亚洲aⅴ | 日韩久久电影 | 视频国产一区二区三区 | 国产一区福利在线 | 91成品视频 | 亚洲精品视频在线观看免费视频 | 亚洲人成免费网站 | 精品久久久久久国产偷窥 | 国产色 在线 | 中文字幕资源在线观看 | 欧美日韩中文在线视频 | 超碰人人草人人 | av日韩av| 九九九九精品 | 成人午夜免费剧场 | 精久久久久 | 久久精品国产一区二区三区 | a级国产片 | 久久久69| 国产日本亚洲 | 国产亚洲精品久久久网站好莱 | 免费在线播放av电影 | 亚洲精品视频在线免费播放 | 日韩日韩日韩日韩 | 免费在线观看av不卡 | 日韩在线观看第一页 | japanesexxx乱女另类 | 精品国产乱码久久久久久久 | 91av大全| 手机成人在线 | 免费黄色看片 | 天天草天天干天天射 | 精品国产一区二区在线 | 91香蕉视频 mp4 | aaa日本高清在线播放免费观看 | 天天综合网天天 | 999久久久久久久久 69av视频在线观看 | 亚洲电影毛片 | 奇米影视在线99精品 | 六月丁香六月婷婷 | 视频一区二区免费 | 欧美日韩在线视频一区二区 | 国产一区二区三区 在线 | 久久黄色影院 | 成人va视频 | 国产成人精品久 | 91av超碰| 成人午夜免费福利 | 久久国产精品视频观看 | 国产精品久久久久久久久久尿 | 亚洲人人爱 | 久久久久久久久久久久电影 | 欧美成人中文字幕 | 精品 一区 在线 | 天天操综合网站 | 亚洲天堂免费视频 | 丁香六月在线 | 中文资源在线官网 | 久久国产精品一二三区 | 青青久视频 | 久久视频99 | 免费亚洲视频在线观看 | 97免费中文视频在线观看 | 久久久久日本精品一区二区三区 | 女人18毛片90分钟 | 亚洲三级黄色 | 色婷婷激情综合 | 午夜婷婷在线播放 | 天天超碰| 天天色天天 | 中文字幕中文字幕中文字幕 | 亚洲人成精品久久久久 | 国产成人精品在线观看 | 狠狠色丁香久久婷婷综合丁香 | 蜜桃视频在线视频 | 亚洲女人天堂成人av在线 | 六月丁香综合网 | 久草在线视频首页 | 成人午夜影院 | 激情五月婷婷激情 | 国产无吗一区二区三区在线欢 | 久久综合五月婷婷 | 一级片免费在线 | 国产亚洲人成网站在线观看 | 一区二区激情视频 | 久久免费精彩视频 | www黄在线| 人人干免费 | 亚洲欧美在线视频免费 | 久久久亚洲电影 | 欧美日韩国产一区二 | 欧美一进一出抽搐大尺度视频 | 激情欧美丁香 | 国产精品免费高清 | 久久99久久99精品中文字幕 | 国产一区二区三区免费在线观看 | 午夜久久视频 | 91久久偷偷做嫩草影院 | 欧美日韩在线观看不卡 | 免费观看日韩 | 日韩v在线 | 99爱视频在线观看 | 欧美亚洲成人xxx | 91麻豆精品| 国产三级午夜理伦三级 | 97久久久免费福利网址 | 国产亚洲免费观看 | www日日| 国产在线不卡精品 | 久久伊99综合婷婷久久伊 | 不卡的av电影在线观看 | 亚洲激情校园春色 | 西西444www大胆高清图片 | 日日爽天天 | 成人91免费视频 | 久久久免费看视频 | 婷婷av资源 | 91爱爱电影| 精品国产欧美一区二区 | 国产真实在线 | 亚洲乱码久久久 | 欧美aa在线观看 | 国产特级毛片 | a久久久久 | 日韩高清国产精品 | 国产精品自产拍 | 丁香花在线视频观看免费 | 亚洲一区二区观看 | 欧美性生爱 | 国产中的精品av小宝探花 | 日本中文乱码卡一卡二新区 | 久久久麻豆 | 888av| 欧美成人高清 | 韩国精品一区二区三区六区色诱 | 日本99干网 | 日韩艹| 欧美日韩国产一区二区在线观看 | 国产视频在 | 五月婷婷.com | 91丨九色丨国产丨porny精品 | 最新成人av| 免费一级特黄录像 | 一级性av| 免费裸体视频网 | 毛片网站在线看 | 日本公妇在线观看高清 | 日韩在线观看高清 | 成人9ⅰ免费影视网站 | 日本久久免费视频 | 精品国产一区二区三区噜噜噜 | 中文字幕亚洲情99在线 | 亚洲欧洲日韩 | 久久超碰免费 | 欧美成人久久 | 中文字幕免费久久 | 中文字幕在线播放一区二区 | 久久久久五月天 | 亚在线播放中文视频 | 国产成人精品999在线观看 | 在线成人国产 | 日韩精品视频在线观看网址 | 人人艹人人| 欧美日韩在线观看一区二区三区 | 久久理论视频 | 亚洲黄色软件 | 欧美有色 | 亚洲精品免费在线播放 | 国产一级淫片免费看 | 国产精品视频 | 成人免费精品 | 伊人色**天天综合婷婷 | 成人性生交大片免费观看网站 | 亚洲国产综合在线 | 五月婷婷网站 | 91精品免费在线观看 | 国产青青青 | 日韩一区精品 | 99精品视频在线观看视频 | 亚洲成av片人久久久 | 免费视频一级片 | 天天干夜夜夜 | 97在线观看免费观看高清 | 96看片| 久久久久久久久久久久99 | 欧美精品久久久久久 | 激情综合网天天干 | 6080yy精品一区二区三区 | 国内精品久久久久影院男同志 | 欧美性爽爽| 中文字幕一区二区三区四区在线视频 | 色噜噜在线观看视频 | 欧美资源 | 国产精品99久久久久 | 欧美成a人片在线观看久 | 日本精品一区二区三区在线观看 | 久久久久久国产一区二区三区 | 亚洲在线网址 | 久久婷婷一区二区三区 | 91精品在线免费观看视频 | 一区二区视频免费在线观看 | 97在线观看免费视频 | 97色婷婷 | 91三级在线观看 | 国产精品亚洲精品 | 精品亚洲免费 | 久草资源在线观看 | 99在线精品视频观看 | 免费观看丰满少妇做爰 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 91精品国产一区二区在线观看 | 超碰av在线 | 久久国产精品一国产精品 | 五月婷婷影院 | 91成品人影院 | 91天天操| 狠狠干2018| 成人福利在线播放 | 欧美一级在线看 | 超碰人人在线观看 | 亚洲国产日韩一区 | 91成人国产 | 国产精品丝袜久久久久久久不卡 | 国产精品成 | 午夜三级福利 | 久久夜夜操 | 欧美成年人在线观看 | av中文电影| 97av超碰| 日日夜夜精品视频 | 亚洲精品一区二区三区四区高清 | 免费看一级 | 在线观看亚洲 | 国产综合精品一区二区三区 | 在线电影a | 日韩av免费大片 | 中文字幕视频 | 久久综合福利 | 99热.com| 色综合久久久久综合99 | 国产精品每日更新 | 欧美综合国产 | 免费视频你懂的 | 丁香花在线视频观看免费 | 日韩毛片久久久 | 在线观看涩涩 | 日韩免费成人av | 天天干com| 中文字幕在线视频一区 | 黄色一级影院 | 一区二区三区免费在线观看视频 | 天天舔天天搞 | 亚洲精选国产 | 国产一区在线视频 | 成人av片免费看 | 伊人网站| 91chinesexxx | 青青看片| 久久久综合色 | 五月天伊人网 | 久久免费一 | 国语自产偷拍精品视频偷 | 国产精品自拍在线 | 99在线视频精品 | 中文字幕av免费在线观看 | 天天做天天爱天天爽综合网 | 亚洲综合色激情五月 | 国产美女在线精品免费观看 | 欧美在线视频一区二区三区 | 91av视频观看 | 久久久久久美女 | 久草久| 亚洲欧洲一区二区在线观看 | 日韩xxxxxxxxx | 久久看片网 | 91成人午夜 | 啪啪激情网 | 国产主播99 | 日日精品 | 日韩免费观看高清 | 国产精品丝袜 | 色五婷婷| 日日操夜夜操狠狠操 | 国内精品久久影院 | 丁香九月激情综合 | 97av视频 | 九九热只有这里有精品 | 国产又粗又猛又色又黄视频 | 国产一级黄色av | 国产精品久久久久久久久久不蜜月 | 亚洲综合在线五月 | 久插视频 | 欧美久久久久久久久久久久 | 久久久久久久久久久电影 | 国产成人精品一区二区在线观看 | 99精品久久99久久久久 | 草久久精品 | 欧美另类巨大 | 亚洲日本va午夜在线影院 | 91成人破解版 | 国产激情小视频在线观看 | 日韩av影视在线 | 亚洲国产精品久久久久久 | 中文一二区 | 久久久蜜桃 | 五月宗合网 | 精品久久久国产 | 岛国av在线免费 | 国产精品不卡在线观看 | 免费观看www视频 | 久久综合九色综合久99 | 久久综合桃花 | 一区二区三区电影大全 | 亚洲精区二区三区四区麻豆 | 韩国av免费看 | 免费看的黄网站 | 久久久久国产精品视频 | 欧美在线观看视频一区二区三区 | 亚洲,播放 | 成人影片在线免费观看 | 国产91学生粉嫩喷水 | 狠狠干干 | 91成人免费在线视频 | 久久久综合电影 | 91视频一8mav | 狠狠操狠狠干2017 | 久久综合干 | 五月婷婷在线观看 | 片黄色毛片黄色毛片 | 成人毛片100免费观看 | 97在线视频观看 | 日韩av成人在线 | 欧美日韩视频在线一区 | 欧美精品中文在线免费观看 | 91福利小视频 | 超碰97国产精品人人cao | 久久精品国产成人 | 9在线观看免费高清完整版在线观看明 | 99人久久精品视频最新地址 | 精品国产乱码久久久久久天美 | 午夜国产福利在线 | 97超碰在线人人 | 韩日精品在线观看 | 精品99在线视频 | 久久美女免费视频 | 五月激情婷婷丁香 | 九九在线免费视频 | 天天操天天射天天插 | 国产黄色特级片 | 亚洲爱av| 三级黄色在线观看 | 成人 亚洲 欧美 | 欧美午夜精品久久久久久浪潮 | 永久精品视频 | 九九国产视频 | 久草com | 韩国一区二区在线观看 | 国产精品免费观看视频 | 激情影音 | 日本在线视频一区二区三区 | 黄污在线观看 | 国产成人精品一区二区三区福利 | 日本性高潮视频 | 808电影| 粉嫩一二三区 | 91九色视频网站 | 天天狠狠 | 亚洲视频一区二区三区在线观看 | 日韩欧美aaa | 黄色大片免费播放 | 99电影| 婷婷精品国产一区二区三区日韩 | 天堂av在线7| 欧美一级日韩三级 | 色婷婷综合视频在线观看 | 三级动图 | 日韩超碰在线 | 在线免费观看黄色av | 亚洲精品视频在线播放 | 一级精品视频在线观看宜春院 | 日韩精品免费在线 | 97视频免费观看2区 亚洲视屏 | 久久精品免费看 | 国产福利一区二区在线 | 日韩免费观看一区二区 | 精品一区二区久久久久久久网站 | 欧美久久电影 | 午夜视频在线瓜伦 | 天天色天天操天天爽 | 一区在线观看视频 | 欧美a免费 | 天堂在线视频中文网 | 国产三级精品三级在线观看 | 亚洲激情综合 | 夜色资源站国产www在线视频 | 一区av在线播放 | 久久99热精品这里久久精品 | 国产精品嫩草影视久久久 | 亚洲精品视频一二三 | 欧美在线视频日韩 | av色综合网 | 草久久精品| 国产亚洲精品久久久久久电影 | 在线观看视频你懂的 | 成人免费电影 | 激情一区二区三区欧美 | 岛国av在线免费 | 久久久久久久久久电影 | 人人视频网站 | 欧美日韩综合在线观看 | 天天操夜夜干 | 亚洲 av网站 | 999久久久久久久久久久 | 黄色av电影一级片 | 91久久国产综合精品女同国语 | 国产一二三区av | 热久久这里只有精品 | 精品久久一二三区 | 综合色天天 | 国产在线v | 国产一级淫片免费看 | 97超碰在线久草超碰在线观看 | 在线黄网站 | 欧美 亚洲 另类 激情 另类 | 欧美日韩国产一区二区三区 | 欧美在线aaa | 人人干免费 | 密桃av在线| 97精品国产91久久久久久久 | 国产精品久一 | 国内久久精品视频 | 久久久久久久久久久免费 | 免费看的黄网站 | 欧美一区二视频在线免费观看 | 97精品国自产拍在线观看 | 免费看91的网站 | 中文字幕在线看视频国产 | 成人av高清在线 | 色姑娘综合网 | 一区二区三区日韩视频在线观看 | 99精品观看 | 中文字幕亚洲综合久久五月天色无吗'' | 日韩在线视频播放 | 成人免费视频播放 | av官网 | 婷婷色中文 | 狠狠干夜夜操天天爽 | 精品一区二区电影 | 国产成人精品国内自产拍免费看 | 国产美女被啪进深处喷白浆视频 | 五月花婷婷| 国产一级性生活视频 | 青青河边草免费视频 | 亚洲成人第一区 | 成人中文字幕在线 | 久久国产精品二国产精品中国洋人 | 欧美一二三视频 | 国产亚洲亚洲 | 天天看天天干天天操 | 视频一区久久 | 日本久久不卡视频 | 奇米影视8888在线观看大全免费 | 久久久久久久久久久久久久电影 | 福利视频区 | 黄色av一区二区三区 | 国产精品久久久久久a | 欧美一级片免费 | 亚洲精品欧洲精品 | 97精品国产一二三产区 | 97在线免费视频 | 在线精品视频在线观看高清 | 在线国产视频一区 | 久久久黄色 | 国产高清视频免费最新在线 | 正在播放 久久 | 中文字幕高清在线播放 | 欧美一级性生活视频 | 玖玖在线资源 | 久久av影视 | 免费观看www小视频的软件 | 97超级碰碰 | 国产福利一区二区在线 | 91精品欧美一区二区三区 | 色婷婷免费视频 | 天天激情天天干 | 日韩在线视频一区二区三区 | av在线a | 日韩欧美亚州 | 人人搞人人干 | 欧美怡红院 | 992tv在线观看网站 | 黄色大片日本免费大片 | 日韩av黄 | 99久久久久久久久 | 九九综合久久 | 婷婷久久网 | 亚洲黄色免费观看 | 日韩av成人 | 天天舔天天射天天操 | 在线观看成人av | 一区二区视频免费在线观看 | 一级黄色片网站 | 亚洲综合小说 | 婷婷色视频 | 久久久久激情电影 | 欧美日韩国产mv | 伊人狠狠操 | 在线中文字幕播放 | 在线视频麻豆 | 亚洲一区在线看 | 免费黄色在线 | 人人爽人人插 | 日日爽夜夜操 | 久久99热精品这里久久精品 | 成人国产精品入口 | 国产欧美最新羞羞视频在线观看 | 久久免费视频这里只有精品 | 三级小视频在线观看 | 中文字幕有码在线 | 欧美日韩免费一区 | 午夜手机电影 | 日本精品视频一区二区 | 精品人人人人 | 国产电影黄色av | 国产精品一区二区吃奶在线观看 | 九色porny真实丨国产18 | 亚洲天堂自拍视频 | 亚洲精品自在在线观看 | 9在线观看免费高清完整 | 国产精品黄色 | 国产一区二区三区免费观看视频 | 精品一区 在线 | 国产一区黄色 | 亚洲精品视频在线观看免费视频 | 免费在线观看国产黄 | 亚洲精品女 | 字幕网在线观看 | 久久激情视频 | 美女视频免费精品 | 天堂网一区 | 在线观看国产福利片 | 五月天久久 | 中文字幕av免费观看 | 在线色吧| 伊人国产视频 | 国产视频不卡一区 | 国产精品美女久久久免费 | 手机看片中文字幕 | 在线 国产一区 | 天天骚夜夜操 | 午夜狠狠干 | 日韩一区二区三区观看 | 国产一区二区免费在线观看 | 国产一区二区在线免费播放 | 伊人久久在线观看 | 99性视频 | 狠狠的操狠狠的干 | 久久天天草| 久久avav | 国产中文字幕亚洲 | 久草视频在线播放 | 国产精品一区二区免费 | 亚洲永久精品在线 | 婷婷丁香激情五月 | 日韩综合视频在线观看 | 女人高潮特级毛片 | 欧美日韩免费一区二区三区 | 亚洲精品午夜久久久久久久 | 日本中文字幕久久 | 久久精品国产一区 | 精品96久久久久久中文字幕无 | 成人免费色 | 在线视频福利 | 久久综合精品国产一区二区三区 | 日韩三级久久 | 久久久午夜电影 | 一区二区三区www | 欧美资源在线观看 | 国产精品免费高清 | 综合色中文 | 综合久久精品 | 日韩精品不卡 | 欧美一级久久久 | 日韩激情小视频 | 午夜12点| 88av网站| 狠狠躁夜夜躁人人爽超碰91 | 久久久久激情电影 | 97超碰成人在线 | a级片久久| 一区二区三区福利 | 久久夜色网| 日韩在线视频免费看 | 成人免费视频观看 | 在线观看免费福利 | 国产亚洲精品久久久久久电影 | 久久一区国产 | av理论电影 | 日韩电影一区二区三区在线观看 | 毛片美女网站 | av色图天堂网 | 欧美狠狠操| 五月丁婷婷 | 亚洲va欧美va国产va黑人 | 麻豆视频免费播放 | www.777奇米| 91tv国产成人福利 | 97操碰 | 日韩中文字幕第一页 | 亚洲aaa级| 五月天久久婷婷 | 久久精品毛片基地 | 99热这里是精品 | 久久av中文字幕片 | 日韩网站在线免费观看 | 久久久久成人精品亚洲国产 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | av在线专区 | 国产97视频 | 97视频免费在线 | 18做爰免费视频网站 | 97天堂| 久久久久久久久影视 | 色瓜| 国产 欧美 在线 | 美女久久视频 | 麻豆视频成人 | 日韩动漫免费观看高清完整版在线观看 | 精品国产乱码久久久久久1区2匹 | 免费在线观看午夜视频 | 97狠狠操 | 麻豆视频免费在线观看 | 91成人免费视频 | av一级在线 | 一区二区三区在线视频111 | 91免费试看 | 国产精品一区二区久久国产 | 在线亚洲欧美日韩 | 人人超碰在线 | 伊人天堂av | 久久久久成 | 五月天久久久 | 国产免费激情久久 | 国产永久网站 | 婷婷综合导航 | 久久久久一区二区三区四区 | 激情图片qvod| 久久色在线观看 | 六月丁香在线视频 | 国产色黄网站 | 国产理论在线 | 亚洲国产黄色 | 国外av在线 | 国产高清在线 | 亚洲理论视频 | 国产手机在线精品 | 中文字幕人成人 | 婷婷丁香视频 | 九九在线免费视频 | 亚洲成人二区 | 婷婷丁香在线视频 | 日韩av资源在线观看 | 激情久久伊人 | 伊人伊成久久人综合网小说 | 91在线91拍拍在线91 | 日韩天天操 | 狠狠干我| 国产黄av | 天堂在线一区 | 四虎免费在线观看视频 | 亚洲精品成人在线 | 一区二区三区在线看 | 日韩av不卡在线 | 中文字幕在线乱 | 午夜久久久久久久久久影院 | 色网站在线免费观看 | 国产精品成人久久久久久久 | 91成年人视频 | 色欧美成人精品a∨在线观看 | 久久久精品国产免费观看同学 | 91看片麻豆 | 精品国产乱码久久久久久浪潮 | 精品九九九九 | 天天爽人人爽 | 91亚瑟视频 | 日韩中文字幕a | 97av.com | 国产色视频一区二区三区qq号 | 在线观看91久久久久久 | 在线视频 日韩 | 国产剧在线观看片 | 天天色中文 | 友田真希av| 麻豆一区在线观看 | 久久免费视频3 | 久久夜色精品国产欧美乱极品 | 国产中文字幕视频在线观看 | 精品久久精品 | 成年人黄色在线观看 | 人人涩 | 黄色三级网站 | 99热手机在线 | 日本公妇在线观看 | 在线高清av| 91桃色在线观看视频 | 欧美伦理一区 | 亚洲传媒在线 | 99成人免费视频 | 四川妇女搡bbbb搡bbbb搡 | 97天天综合网 | 国产99久久久精品视频 | 中文字幕影片免费在线观看 | 伊在线视频 | 国产一级视屏 | 91av网站在线观看 | 麻豆影视在线播放 | 日本xxxxav| 超碰在线观看97 | 人人插人人做 |