精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

六種常用Bean拷貝工具一覽

開發(fā) 后端
隨著業(yè)務的劃分越來越細,對象的拷貝工作也越來越頻繁,所以本文就來梳理一下常用的對象拷貝工具和它們的差異。

[[439335]]

 在我們日常的工作中,經常需要做對象的拷貝或轉化,例如在傳遞參數時,把入參的DTO轉化為PO存入數據庫,在返回前端時把PO再轉化為VO。如果再分的細一點,可能還會有DO(Domain Object),TO(Transfer Object) ,BO(business object)等對象,隨著業(yè)務的劃分越來越細,對象的拷貝工作也越來越頻繁,所以本文就來梳理一下常用的對象拷貝工具和它們的差異。

常用的工具大概有以下幾種:

  •  Apache BeanUtils 
  •  Spring BeanUtils
  •  cglib BeanCopier
  •  Hutool BeanUtil
  •  Mapstruct
  •  Dozer

準備工作,創(chuàng)建兩個類PO和DTO: 

  1. @Data  
  2. public class OrderPO {  
  3.     Integer id;  
  4.     String orderNumber;  
  5.     List<String> proId;  
  6.  
  7. @Data  
  8. public class OrderDTO {  
  9.     int id;  
  10.     String orderNumber;  
  11.     List<String> proId;  

01.Apache  BeanUtils

引入依賴坐標: 

  1. <dependency>  
  2.     <groupId>commons-beanutils</groupId>  
  3.     <artifactId>commons-beanutils</artifactId>  
  4.     <version>1.9.3</version> 
  5.  </dependency> 

進行測試,初始化PO對象,并創(chuàng)建DTO空對象,使用BeanUtils進行: 

  1. @org.junit.Test  
  2. public void test(){  
  3.     OrderPO orderPO=new OrderPO();  
  4.     orderPO.setId(1);  
  5.     orderPO.setOrderNumber("orderNumber"); 
  6.     ArrayList<String> list = new ArrayList<String>() {{  
  7.         add("1");  
  8.         add("2");  
  9.     }};  
  10.     orderPO.setProId(list);  
  11.     OrderDTO orderDTO=new OrderDTO();  
  12.     BeanUtils.copyProperties(orderDTO,orderPO);  

打印兩個對象,具有相同的屬性: 

  1. OrderPO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2])  
  2. OrderDTO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2]) 

可以看出,在Bean中具有相同名稱的屬性分別是基本數據類型和包裝類時,比如分別是int和Integer時,可以正常進行拷貝。那么再深究一點,拷貝Bean過程中,使用的是深拷貝還是淺拷貝呢?

兩個List對象使用的是同一個對象,因此在拷貝中,如果存在引用對象,那么使用的是淺拷貝。在完成拷貝后,如果再修改這個對象: 

  1. list.add("3");  
  2. log.info(orderDTO.getProId()); 

再次打印DTO對象,發(fā)現即使不再次重新拷貝,修改的值也會被添加過去 

  1. OrderDTO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2, 3]) 

02.Spring  BeanUtils

如果使用的spring項目時不需要單獨引入依賴,單獨使用時需要引入坐標: 

  1. <dependency>  
  2.     <groupId>org.springframework</groupId>  
  3.     <artifactId>spring-beans</artifactId>  
  4.     <version>5.2.2.RELEASE</version>  
  5. </dependency> 

使用方式與apache的BeanUtils方法名相同,但參數順序相反,第一個參數是源對象,第二個參數是目標對象: 

  1. BeanUtils.copyProperties(orderPO,orderDTO); 

過程省略,這里使用的還是淺拷貝。spring的BeanUtils還提供了額外的方法,這個可變參數的方法可以忽略某些屬性進行拷貝: 

  1. void copyProperties(Object source, Object target, String... ignoreProperties); 

忽略orderNumber屬性進行拷貝: 

  1. BeanUtils.copyProperties(orderPO,orderDTO,"orderNumber"); 

輸出結果: 

  1. OrderPO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2])  
  2. OrderDTO(id=1orderNumber=nullproId=[1, 2]) 

此外,在阿里巴巴的開發(fā)手冊中,強制避免使用apache BeanUtils進行拷貝,建議使用Spring BeanUtils或下面要介紹的BeanCopier。主要原因還是在于Spring并沒有與 apache一樣對反射做了過多校驗,另外Spring BeanUtils內部使用了緩存,加快轉換的速度。此外,由于我們的大多項目已經集成了Spring ,如果沒有其他特殊的需求,直接使用它的BeanUtils就能滿足我們的基本需求。

03.cglib  BeanCopier

如果工程內含有spring-core包的依賴,也不需要額外引入依賴,否則需要引入坐標: 

  1. <dependency>  
  2.     <groupId>cglib</groupId>  
  3.     <artifactId>cglib</artifactId>  
  4.     <version>3.3.0</version>  
  5. </dependency> 

使用示例: 

  1. BeanCopier beanCopier = BeanCopier.create(  
  2.           orderPO.getClass(),   
  3.           orderDTO.getClass(), false);  
  4. beanCopier.copy(orderPO,orderDTO,null); 

測試結果: 

  1. OrderPO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2])  
  2. OrderDTO(id=0orderNumberorderNumber=orderNumber, proId=[1, 2]) 

在上面的例子中,id字段沒有被正常拷貝,兩個字段不同的是在PO中使用的是包裝類型Integer,但DTO中使用的是基本類型int。因此,使用BeanCopier時,如果存在基本類型和包裝類,是無法被正常拷貝,改為相同類型后才能被正常拷貝。另外,BeanCopier使用的仍然是淺拷貝,驗證過程大家可以自己進行實驗。

04.Hutool  BeanUtil

hutool是個人平常使用比較頻繁的一個工具包,對文件、加密解密、轉碼、正則、線程、XML等JDK方法進行封裝,并且也可以進行對象的拷貝。在使用前引入坐標: 

  1. <dependency>  
  2.     <groupId>cn.hutool</groupId>  
  3.     <artifactId>hutool-all</artifactId>  
  4.     <version>5.1.0</version>  
  5. </dependency> 

使用方法如下,并且使用的也是淺拷貝方式: 

  1. BeanUtil.copyProperties(orderPO,orderDTO); 

和Spring BeanUtils相同,也可以進行屬性的忽略: 

  1. void copyProperties(Object source, Object target, String... ignoreProperties); 

除此之外,hutool的BeanUtil還提供了很多其他實用的方法:

個人在使用中感覺Bean和Map的互相轉換還是很常用的,有時在使用Map接收參數時,后期能夠很方便的把Map轉換為Bean

05.Mapstruct

Mapstruct的使用和上面幾種方式有些不同,因為上面的幾種方式,spring和apache,hutool使用的都是反射,cglib是基于字節(jié)碼文件的操作,都是在都代碼運行期間動態(tài)執(zhí)行的,但是Mapstruct不同,它在編譯期間就生成了 Bean屬性復制的代碼,運行期間就無需使用反射或者字節(jié)碼技術,所以具有很高的性能。

使用Mapstruct需要需要引入下面的依賴: 

  1. <dependency>  
  2.     <groupId>org.mapstruct</groupId>  
  3.     <artifactId>mapstruct-jdk8</artifactId>  
  4.     <version>1.3.0.Final</version>  
  5. </dependency>  
  6. <dependency> 
  7.     <groupId>org.mapstruct</groupId>  
  8.     <artifactId>mapstruct-processor</artifactId> 
  9.     <version>1.3.0.Final</version>  
  10. </dependency> 

需要額外寫一個接口來實現: 

  1. @Mapper  
  2. public interface ConvertMapper {  
  3.     OrderDTO po2Dto(OrderPO orderPO);  

這里的@Mapper注解不是用于mybatis的注解,而是org.mapstruct.Mapper。使用起來也非常簡單: 

  1. ConvertMapper mapper = Mappers.getMapper(ConvertMapper.class);  
  2. OrderDTO orderDTO=mapper.po2Dto(orderPO); 

查看編譯后的target目錄,編譯時將我們定義的ConvertMapper 接口,生成了ConvertMapperImpl實現類,并實現了po2Dto方法。看一下編譯生成的文件:

可以看到方法中為每一個屬性生成了set方法,并且對于引用對象,生成了一個新的對象,使用深拷貝的方式,所以修改之前的引用對象,這里的值也不會改變。并且,這種使用set/get的方式比使用反射的速度更快。

06.Dozer

Dozer是一個Bean到Bean映射器,它以遞歸方式將數據從一個對象復制到另一個對象,并且這些Bean可以具有不同的復雜類型。使用前引入依賴坐標: 

  1. <dependency>  
  2.   <groupId>net.sf.dozer</groupId>  
  3.   <artifactId>dozer</artifactId>  
  4.   <version>5.4.0</version>  
  5. </dependency> 

調用方式非常簡單: 

  1. DozerBeanMapper mapper = new DozerBeanMapper();  
  2. OrderDTO orderDTO=mapper.map(orderPO,OrderDTO.class); 

查看運行時生成的對象,可以看見使用的深拷貝的方式:

除此之外,還可以配置不同屬性名稱的映射,修改DTO和PO,在PO中添加一個name屬性,在DTO中添加value屬性: 

  1. @Data  
  2. public class OrderPO {  
  3.     Integer id;  
  4.     String orderNumber;  
  5.     List<String> proId;  
  6.     String name;  
  7.  
  8. @Data  
  9. public class OrderDTO {  
  10.     int id;  
  11.     String orderNumber;  
  12.     List<String> proId;  
  13.     String value;  

新建一個配置文件,在mapping中可以添加字段的映射關系: 

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  3.           xsi:schemaLocation="http://dozer.sourceforge.net  
  4.           http://dozer.sourceforge.net/schema/beanmapping.xsd">  
  5.     <mapping>  
  6.         <class-a>com.cn.entity.OrderPO</class-a>  
  7.         <class-b>com.cn.entity.OrderDTO</class-b> 
  8.          <field>  
  9.             <a>name</a>  
  10.             <b>value</b>  
  11.         </field>  
  12.     </mapping>  
  13. </mappings> 

DozerBeanMapper使用上面的配置文件進行配置,再次拷貝對象: 

  1. ...  
  2. orderPO.setName("hydra");  
  3. DozerBeanMapper mapper = new DozerBeanMapper();  
  4. List<String> mappingFiles = new ArrayList<>();  
  5. mappingFiles.add("dozer.xml");  
  6. mapper.setMappingFiles(mappingFiles);  
  7. OrderDTO orderDTO=mapper.map(orderPO,OrderDTO.class); 

查看測試結果,不同名稱的字段也可以進行拷貝了: 

  1. OrderPO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2], name=hydra 
  2. OrderDTO(id=1orderNumberorderNumber=orderNumber, proId=[1, 2], value=hydra

如果業(yè)務場景中的Bean具有很多不同的屬性,這么配置起來還是很麻煩的,需要額外手寫很多xml文件。以上就是工作中常被接觸到的幾種對象拷貝工具,在具體的使用中,更多的要結合拷貝效率等要求,以及工作場景中需要使用的是深拷貝還是淺拷貝等諸多因素。 

 

責任編輯:龐桂玉 來源: Java知音
相關推薦

2018-09-04 10:24:35

網絡流量提取工具

2010-09-29 10:01:57

2016-08-30 11:48:10

大數據術語

2009-07-23 16:14:03

.NET測試工具NUnit2.5

2019-04-25 16:03:00

深度學習編程人工智能

2011-05-11 10:00:57

2021-07-29 09:00:00

Python工具機器學習

2019-12-03 12:16:36

物聯(lián)網ZigBee藍牙低功耗

2025-11-18 08:22:56

2009-07-27 14:19:01

Eclipse JDT

2025-06-17 08:25:00

Kubernetes集群容器

2019-08-02 08:50:47

API架構微服務

2017-06-26 10:35:58

前端JavaScript繼承方式

2009-08-18 17:53:08

思科認證介紹思科培訓

2023-11-08 07:45:47

Spring微服務

2010-11-15 09:55:35

Oracle轉換函數

2019-04-26 14:21:34

手機色彩蘋果

2011-01-11 09:53:28

linux進程

2011-01-11 10:06:14

linux進程

2021-06-08 09:47:44

Java面向對象
點贊
收藏

51CTO技術棧公眾號

久久久久亚洲蜜桃| 精品免费国产| 欧美日韩精品综合| 麻豆视频在线观看| 大胆av不用播放器在线播放| 欧美a在线观看| 中文字幕不卡在线观看| 中文字幕av一区二区三区四区| 免费高清不卡av| 亚洲免费电影在线观看| 男人添女荫道口女人有什么感觉| 中文字幕一区二区在线视频| 天堂日韩电影| 激情成人在线视频| 国产精品二区在线| 大乳护士喂奶hd| 青青草原av在线| 美女视频网站久久| 国内精品久久久久影院 日本资源| 欧美视频亚洲图片| 看黄网站在线| 国产在线精品一区二区不卡了| 色狠狠久久aa北条麻妃| 手机视频在线观看| 无遮挡动作视频在线观看免费入口| 日韩影院精彩在线| 中文字幕av日韩| 亚洲精品久久久久久宅男| 在线看黄色av| 日韩精品成人一区二区在线| 欧美激情影音先锋| 国产伦精品一区二区免费| 色成人综合网| 亚洲精品ww久久久久久p站| 99久久免费国| 天堂资源在线播放| 亚洲盗摄视频| 欧美日韩中文字幕精品| 在线观看国产一区| 性生活视频软件| 夜夜嗨一区二区| 国产亚洲视频中文字幕视频| 99re精彩视频| 在线中文字幕-区二区三区四区| 国产一区在线视频| 国产精品自产拍在线观| 青青青在线免费观看| 97se亚洲国产一区二区三区| 婷婷亚洲久悠悠色悠在线播放 | 国产a级片免费观看| 你懂的视频在线| 美日韩一区二区三区| 日本一区二区三区在线播放| 亚洲精品一区二区三区影院忠贞| av成人在线观看| 一区二区三区在线观看国产| 正在播放一区| 欧美r级在线| 麻豆国产91在线播放| www.日韩免费| 中文字幕在线播放视频| 在线国产成人影院| 亚洲最大成人网4388xx| 日本精品一区| 免费的黄色av| 久久99国产精品久久99| 国a精品视频大全| 日韩精品一区二区在线播放 | 亚洲综合久久网| 亚洲精品网址| 国产亚洲美女久久| 特级西西人体高清大胆| 精品欧美午夜寂寞影院| 欧美日韩一区二区在线观看视频| 毛葺葺老太做受视频| 操喷在线视频| 亚洲欧美激情视频在线观看一区二区三区| 久久久99爱| 亚洲女人18毛片水真多| 蜜桃av噜噜一区| 91精品视频在线看| 波多野结衣毛片| 99精品国产99久久久久久福利| 97在线看福利| 久久久久久久久久99| 日本一区二区免费高清| 亚洲精品网址在线观看| 蜜臀视频在线观看| 精品中文字幕一区二区三区四区 | 国产精品成人免费电影| 久久久美女视频| 香蕉久久a毛片| 高清欧美性猛交xxxx| 中文字幕在线播| 国产精品日韩久久久| 久久久久久久成人| 亚洲国产av一区二区三区| 极品美女销魂一区二区三区免费| 国产精品大陆在线观看| 国产偷拍一区二区| 国产一区二区三区日韩| 久久大香伊蕉在人线观看热2| 成年人视频在线免费观看| 一区二区激情小说| 日本新janpanese乱熟| 永久免费精品视频| 伊人伊人伊人久久| 黄色国产在线播放| 亚洲人成在线影院| 2020国产精品视频| 国产精品一区二区三区四| 亚洲黄网站黄| 91欧美激情另类亚洲| 可以直接在线观看的av| 亚洲一区免费视频| 青青青免费在线| 僵尸再翻生在线观看免费国语| 亚洲成av人片在线观看| 免费网站在线观看视频| 成人免费毛片嘿嘿连载视频…| 欧美在线免费观看亚洲| 最新天堂在线视频| 国产探花在线精品| 爱福利视频一区| 无码人妻av免费一区二区三区 | 国产一级久久| 国产精品免费一区二区三区在线观看| 麻豆传媒在线免费| 欧美日韩国产综合视频在线观看| 欧美第一页浮力影院| 日韩欧美四区| 88国产精品欧美一区二区三区| 亚洲AV无码成人精品区东京热| 国产91精品欧美| 欧美精品123| 国产精品电影| 精品播放一区二区| 中国女人特级毛片| 西西裸体人体做爰大胆久久久| 国产精品乱码| 久久亚洲导航| 精品播放一区二区| 亚洲一区二区91| 成人高清伦理免费影院在线观看| 免费观看成人在线| 精品国产丝袜高跟鞋| 欧美三级蜜桃2在线观看| 欧美做受xxxxxⅹ性视频| 18视频在线观看网站| 色妹子一区二区| 日本中文字幕精品—区二区| 婷婷精品在线| 国产成人精品在线视频| 99国产成人精品| 亚洲色图欧美偷拍| 夫妻免费无码v看片| 国产精品传媒麻豆hd| 一区二区三区国产视频| 国产乱码在线观看| youjizz久久| 异国色恋浪漫潭| 韩日精品一区二区| 欧美一区二区三区在线视频| 中文字幕日韩三级片| 91精品国产调教在线观看| 国产自产女人91一区在线观看| 刘亦菲久久免费一区二区| 亚洲小说欧美激情另类| 国产黄色三级网站| 老司机久久99久久精品播放免费 | 日韩在线网址| 亚洲热线99精品视频| 欧美亚洲日本在线| 成人精品小蝌蚪| 日本三区在线观看| 性欧美69xoxoxoxo| 极品校花啪啪激情久久| 欧洲av一区二区| 两个人的视频www国产精品| 国产视频1区2区| 中文字幕av一区二区三区高| 91香蕉视频免费看| 欧美成人激情| 国产精品日韩久久久久| 青梅竹马是消防员在线| 亚洲一区二区三区视频在线| 亚洲男人在线天堂| 日韩电影一区二区三区| 免费国产成人看片在线| 九九热这里有精品| 亚洲人成网站在线播| 国产精品老熟女视频一区二区| 中文字幕 久热精品 视频在线| 午夜免费一级片| 夜夜嗨一区二区三区| 亚洲精品久久区二区三区蜜桃臀| a级片在线免费| 精品久久久久久久一区二区蜜臀| www.毛片com| 久久精品亚洲乱码伦伦中文| 深夜做爰性大片蜜桃| 久久精品道一区二区三区| 麻豆av一区二区三区| 91精品国产一区二区在线观看| 中文字幕久热精品视频在线| 亚洲成人久久精品| 欧美喷水一区二区| 国产成人一级片| 亚洲在线视频网站| 亚洲综合图片一区| 国产一区美女在线| 青青青国产在线视频| 在线电影一区| 欧美极品一区| 你懂的在线观看一区二区| 欧美亚洲高清一区| 国产熟妇久久777777| 国产精品影视在线观看| 亚洲激情免费视频| 亚洲日本一区二区三区在线| 人妖精品videosex性欧美| 欧美91精品久久久久国产性生爱| 日韩一区二区精品| 日韩精品一区二区在线播放| 亚洲天天做日日做天天谢日日欢| 亚洲国产天堂av| 精品一区二区三区影院在线午夜 | 欧美日韩www| 四虎影院在线免费播放| 欧美色播在线播放| 一级黄色录像毛片| 久久伊99综合婷婷久久伊| 日本激情视频在线| 婷婷综合伊人| 黄色小网站91| 99久久免费精品国产72精品九九| 亚洲xxxx18| 手机在线理论片| 最近2019年手机中文字幕| 午夜黄色小视频| 欧美色老头old∨ideo| 国产婷婷色一区二区在线观看| 亚洲电影一级黄| ass极品国模人体欣赏| 久久久99久久精品欧美| 亚洲久久久久久久| 久久精品一区二区| 婷婷色一区二区三区| 国产无人区一区二区三区| 欧美国产在线一区| 国产麻豆午夜三级精品| 亚洲综合123| 国产iv一区二区三区| 性高潮免费视频| 99久久免费国产| 波多野结衣片子| 欧美高清在线视频| 强制高潮抽搐sm调教高h| va亚洲va日韩不卡在线观看| 日韩无码精品一区二区| 久久一夜天堂av一区二区三区| 中文字幕免费高清| 中文字幕av一区 二区| 欧美风情第一页| 国产午夜精品久久| 四虎地址8848| 夜夜精品视频一区二区| 日韩黄色a级片| 在线观看欧美黄色| 国产女人18毛片水真多| 精品国产乱码久久久久久图片 | av综合网址| 欧美中文娱乐网| 久久精品国内一区二区三区水蜜桃| 99久热在线精品视频| 色777狠狠狠综合伊人| 中文视频一区视频二区视频三区| 欧美成熟视频| 伊人狠狠色丁香综合尤物| 综合激情一区| 中文字幕一区二区三区有限公司| 在线精品国产| www国产黄色| 国产中文字幕精品| 黄色污在线观看| 国产精品久久久久久久久搜平片| 色噜噜日韩精品欧美一区二区| 国产精品嫩草久久久久| 国产sm调教视频| 亚洲欧美电影院| 性色av免费观看| 欧美成人一区二区| 国产强被迫伦姧在线观看无码| 亚洲精品在线三区| 3d成人动漫在线| 18性欧美xxxⅹ性满足| 99er精品视频| 日本电影一区二区三区| 国产综合久久| 国产资源在线免费观看| 欧美精品综合| 2019日韩中文字幕mv| 免费成人av在线| 99久久国产精| 一区二区三区免费| 亚洲图片视频小说| 91精品婷婷国产综合久久竹菊| 一区二区三区www污污污网站| 欧美三级在线视频| 少妇精品视频一区二区| 日韩黄色高清视频| 国产中文在线| 日日狠狠久久偷偷四色综合免费| f2c人成在线观看免费视频| 成人动漫网站在线观看| 欧美高清hd| 亚洲国产精品久久久久久女王| 中日韩男男gay无套| 91porn在线| 久久亚洲影视婷婷| 福利一区二区三区四区| 日韩亚洲欧美综合| 黄网站免费在线播放| 国产精品流白浆视频| 真实原创一区二区影院| 欧美 日韩 国产 高清| 日韩在线一二三区| 中文字幕av网址| 欧美国产综合一区二区| 日本黄色片免费观看| 欧美在线free| 国产爆初菊在线观看免费视频网站| 中文字幕视频一区二区在线有码| 亚洲私拍视频| 久久青青草原一区二区| 精品91久久久久| 欧美熟妇精品一区二区蜜桃视频 | 免费日韩一级片| 欧美揉bbbbb揉bbbbb| 欧美黄色小说| 国产精品91久久久| 欧美精品尤物在线观看| 老司机午夜网站| 激情欧美一区二区| 91麻豆免费视频网站| 91精选在线观看| 99自拍视频在线观看| 91精品国产高清久久久久久91裸体 | 韩日在线一区| 精品视频站长推荐| 色综合视频在线观看| 国产女人高潮的av毛片| 久久精品国产久精国产思思| 美女搞黄视频在线观看| 成人激情黄色网| 亚洲最新av| 性农村xxxxx小树林| 国产精品电影一区二区| 一级做a爱片久久毛片| 久久久成人av| 动漫3d精品一区二区三区乱码| 色爱区成人综合网| 国产精品久久久久久模特| 亚洲成人网在线播放| 欧美在线观看一区| 操你啦在线视频| 国产精品r级在线| 国产精品成人一区二区不卡| 91欧美一区二区三区| 亚洲一本大道在线| 精品影院一区| 亚洲xxxx18| 性高湖久久久久久久久| 欧美色图17p| 日韩视频一区二区在线观看| 蜜桃视频在线观看播放| 午夜一区二区三区| 丁香激情综合国产| 亚洲综合网在线| 日韩成人av网址| 国产人妖一区| a级黄色一级片| 国产精品国产自产拍在线| 丰满人妻熟女aⅴ一区| 国产suv精品一区二区| 亚洲天堂免费| 91精品人妻一区二区| 欧美一级高清大全免费观看| 神马久久午夜| 一级黄色录像免费看| 99精品国产91久久久久久 | 求av网址在线观看| 国产精品视频500部| 蜜桃av噜噜一区| 国产又大又黄又粗| 欧美成人性色生活仑片| 国产精品毛片无码| 美国av在线播放| www成人在线观看| 69视频免费看|