精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

麻豆蜜桃在线| 亚洲天堂视频在线| 欧美巨大xxxx| 在线观看日韩国产| 看一级黄色录像| 日本一区高清| 国产一区二区不卡在线| 国内精品久久久久久久| 阿v天堂2014| 91精品导航| 在线观看欧美黄色| 日本一本中文字幕| av在线1区2区| 99re8在线精品视频免费播放| 国产精品爽黄69天堂a| www.av视频在线观看| 日韩成人综合| 亚洲精品一区二区久| 搡的我好爽在线观看免费视频| 深夜福利视频一区二区| 亚洲日本在线看| 欧美日韩免费高清| www.天天干.com| 久久精品国产亚洲高清剧情介绍| 91国产高清在线| 精品国产乱码久久久久久鸭王1| 欧美黄色网视频| 91精品国产一区二区三区| 无码人妻精品一区二区三区66| 青草av在线| 亚洲欧美中日韩| 日韩亚洲视频在线| 国模私拍视频在线| 国产麻豆一精品一av一免费| 国产精品久久久久av| 毛片在线免费视频| 黑丝一区二区| 欧美精品一区三区| 97在线观看免费高| 久久网站免费观看| 中文字幕一精品亚洲无线一区 | 国产成人自拍网| 国产精品精品视频一区二区三区| 天天综合网久久综合网| 欧美日本一区| 欧美成人午夜免费视在线看片| 亚洲aaa视频| 成人高清电影网站| 国产亚洲成精品久久| av中文字幕免费观看| 色婷婷精品视频| 亚洲国产精品成人精品| 国模无码视频一区| 欧美变态挠脚心| 日韩hd视频在线观看| v天堂中文在线| 欧美激情极品| 日韩精品在线免费播放| 国产伦精品一区二区三区妓女| 国产三级精品三级在线观看国产| 日韩欧美电影一二三| 亚洲 自拍 另类 欧美 丝袜| 麻豆一区在线| 亚洲高清不卡av| 亚洲熟女乱综合一区二区三区| 麻豆一区二区麻豆免费观看| 国产婷婷97碰碰久久人人蜜臀| 醉酒壮男gay强迫野外xx| 小说区图片区色综合区| 日韩国产精品一区| 国产精品高清无码在线观看| 青青草97国产精品麻豆| 一区二区三区美女xx视频| 制服丨自拍丨欧美丨动漫丨| 一区二区国产在线| 韩国福利视频一区| 男人天堂2024| 狠狠色丁香婷婷综合| 成人毛片网站| 你懂的视频在线观看| 国产精品人成在线观看免费| 国产欧美123| 女人让男人操自己视频在线观看| 91久久线看在观草草青青| 九色91popny| 午夜免费欧美电影| 亚洲精品视频免费在线观看| 一区二区三区伦理片| 亚洲一区二区| 欧美一级电影在线| 92久久精品一区二区| 波多野结衣中文字幕一区| 欧美日韩一区二区视频在线| 国产美女在线观看| 欧美色视频日本版| 想看黄色一级片| 台湾亚洲精品一区二区tv| 最好看的2019的中文字幕视频| 亚洲av鲁丝一区二区三区| 亚洲一区二区毛片| 91亚洲va在线va天堂va国 | 日韩小视频在线播放| 成人激情综合| 精品免费视频一区二区| 欧美激情久久久久久久| 亚洲午夜一区| 国产欧美一区二区| 亚洲色图21p| 亚洲六月丁香色婷婷综合久久| 99热成人精品热久久66| 美女日韩一区| 日韩一级黄色av| 麻豆精品久久久久久久99蜜桃| 激情偷乱视频一区二区三区| 久久亚洲一区二区| 欧美人与禽性xxxxx杂性| 在线观看国产日韩| 欧美精品黑人猛交高潮| 国产精品hd| 91精品国产综合久久香蕉| 亚洲av成人无码久久精品老人| 亚洲视频1区2区| 日本爱爱免费视频| 欧美一性一交| 欧美丰满少妇xxxx| 国产免费高清av| 国产女人18毛片水真多成人如厕| 国产中文字幕视频在线观看| 成人亚洲精品| www.亚洲一区| 最近中文字幕在线观看| 91美女片黄在线观看| 青草网在线观看| 欧美成人一级| 久久视频国产精品免费视频在线| 日本熟妇一区二区三区| 97国产一区二区| 秋霞无码一区二区| 天堂精品在线视频| 久久91精品国产| 国产aⅴ一区二区三区| 国产精品美女久久久久aⅴ| 日本熟妇人妻xxxxx| 久久狠狠久久| 国产91ⅴ在线精品免费观看| 全部免费毛片在线播放一个| 亚洲一区影音先锋| 秘密基地免费观看完整版中文 | 日本久久精品一区二区| 亚洲日产av中文字幕| 97人洗澡人人免费公开视频碰碰碰| 国产免费不卡视频| 一区二区高清视频在线观看| 麻豆网站免费观看| 欧美激情综合| 成人看片视频| 国产传媒av在线| 亚洲高清久久网| 在线能看的av| 国产视频一区在线观看| 岛国毛片在线播放| 亚洲有吗中文字幕| 成人av网站观看| 欧美日韩经典丝袜| 亚洲高清不卡av| 亚洲欧美一区二区三区在线观看| 久久久久青草大香线综合精品| 日本男人操女人| 日韩欧美不卡| 亚洲自拍中文字幕| wwwwxxxx在线观看| 亚洲摸下面视频| 中文字幕一区二区人妻| 自拍偷拍亚洲激情| 色哟哟视频在线| 久久av最新网址| 亚洲成人在线视频网站| av成人在线网站| 久久久免费精品视频| 涩涩视频在线观看免费| 91成人免费电影| 在线观看美女av| 成人国产免费视频| 成人在线激情网| 91av精品| 精品一区二区三区日本| jizz亚洲女人高潮大叫| 欧美人成在线视频| 免费看男男www网站入口在线| 欧美日韩一级视频| 国产香蕉在线视频| 欧美经典一区二区三区| 香蕉视频xxxx| 丝袜美腿亚洲综合| 亚洲小视频在线播放| 蜜桃成人av| 91精品国产高清久久久久久91裸体| 日本黄色免费在线| 色偷偷91综合久久噜噜| 免费av一级片| 欧美三级日韩在线| 日本少妇xxxx动漫| 国产精品拍天天在线| 久久久国产精品无码| 美女免费视频一区二区| 九九爱精品视频| 91成人观看| 欧美尤物一区| 久久亚洲黄色| **亚洲第一综合导航网站| 最新日韩三级| 午夜欧美不卡精品aaaaa| 嫩草在线视频| 亚洲三级av在线| 日本黄色三级视频| 欧美一卡在线观看| 亚洲熟妇av乱码在线观看| 亚洲国产综合91精品麻豆| 很污很黄的网站| 久久久电影一区二区三区| 精品国产aⅴ一区二区三区东京热| 日韩不卡一区二区| 欧美国产激情视频| 亚洲国产日本| 东北少妇不带套对白| 爽成人777777婷婷| 日韩亚洲视频| 国产一区二区精品久| 久久精品国产第一区二区三区最新章节| 伊人久久综合网另类网站| 国产精品成人在线| a欧美人片人妖| 91精品国产高清自在线| 日韩精品分区| 久久av在线看| 黄色网址在线免费观看| 色噜噜国产精品视频一区二区 | 欧美日韩第一页| 久久bbxx| 久久精品国产成人| 欧美日韩在线看片| 中文字幕在线亚洲| 亚洲麻豆精品| 色久欧美在线视频观看| 自拍视频在线播放| 日韩中文字幕第一页| av影片在线看| 久久精品视频在线| 黄色网页在线观看| 麻豆国产va免费精品高清在线| 一广人看www在线观看免费视频| 亚洲午夜色婷婷在线| 成人精品一区二区三区校园激情| 亚洲日本成人女熟在线观看| 九色蝌蚪在线| 中文字幕国内精品| 一广人看www在线观看免费视频| 日韩亚洲精品电影| 91精品久久| 午夜精品一区二区三区在线视| 三级在线看中文字幕完整版| 热久久免费视频精品| 日韩毛片免费观看| 国产免费一区二区三区在线观看| 日本成人一区二区| 99re6热在线精品视频播放速度| 97青娱国产盛宴精品视频| 国产精品久久久久久久久久久久午夜片| 中文久久电影小说| 久久er99热精品一区二区三区 | 暴力调教一区二区三区| 成年人网站免费看| 亚洲国产高清不卡| 91九色丨porny丨极品女神| 亚洲二区在线观看| 精品不卡一区二区| 欧美日韩国产一区二区三区地区| 国产精品久久久国产盗摄| 日韩一区二区三区电影| 无码国产色欲xxxx视频| 亚洲欧洲在线看| 国产激情视频在线| 亚洲18私人小影院| 91亚洲视频| 成人午夜电影免费在线观看| 亚洲深夜福利在线观看| 亚洲欧美影院| 极品av少妇一区二区| 任你操这里只有精品| 韩国女主播成人在线| 国产二级一片内射视频播放 | 国产一区二区视频在线播放| 97人妻精品一区二区三区免费| 国产亚洲欧美日韩日本| 日本一级二级视频| 日韩欧美黄色动漫| 99热这里只有精品1| 亚洲精品自拍第一页| 黄色在线免费| 国产97在线亚洲| 日韩三级精品| 日韩免费中文专区| 亚洲久色影视| 中文字幕线观看| www激情久久| 青青草成人免费| 欧美在线高清视频| 天天干天天舔天天射| 久久精品久久久久电影| 老司机2019福利精品视频导航| 亚洲综合精品伊人久久| 国产亚洲一区| 六月丁香婷婷激情| 国产成人精品一区二区三区网站观看 | 成人欧美大片| 成人免费91在线看| 一本精品一区二区三区| 四季av一区二区| 91香蕉视频污| 日韩av在线天堂| 91精品国产一区二区| 国产裸舞福利在线视频合集| 久久久久久网址| 国产精久久一区二区| 亚洲国产精品视频一区| 亚洲综合日韩| 91九色蝌蚪porny| 一区二区三区四区在线播放| 在线观看黄色网| 国产亚洲欧美另类中文| 自拍在线观看| 精品产品国产在线不卡| 亚洲性感美女99在线| 日韩av影视大全| 亚洲视频每日更新| 国产精品一二三四五区| 综合av色偷偷网| 国产精品一区二区免费福利视频 | 久久黄色一级视频| 亚洲婷婷综合久久一本伊一区| av首页在线观看| 亚洲人成亚洲人成在线观看| 毛片免费看不卡网站| 精品1区2区| 久久aⅴ国产紧身牛仔裤| 中文字幕丰满孑伦无码专区| 都市激情亚洲色图| 欧美日韩在线中文字幕| 欧美与欧洲交xxxx免费观看| 精品精品国产毛片在线看| 超碰成人免费在线| 国产sm精品调教视频网站| 国产一级一级片| 亚洲国产精品嫩草影院久久| 不卡的av影片| 久久国产精品-国产精品| 国产精品亚洲综合色区韩国| 亚洲天堂网一区二区| 日韩欧美一区二区三区| 国产三区四区在线观看| 国产精品免费在线免费| 五月激情久久久| 黄色片子免费看| 亚洲高清在线精品| 午夜视频免费在线| 国产成人拍精品视频午夜网站| 日韩av片子| 被黑人猛躁10次高潮视频| 夜夜精品浪潮av一区二区三区| 高h震动喷水双性1v1| 热草久综合在线| 999精品一区| 国产免费a级片| 色综合久久综合网欧美综合网 | 国偷自产av一区二区三区| 天天摸天天碰天天添| 国产精品色在线观看| av一级黄色片| 国产91精品黑色丝袜高跟鞋 | 久草视频这里只有精品| 99国产精品久久久久久久久久久| 久久久久久在线观看| 日韩中文在线视频| 国产精品xxxav免费视频| www.日日操| 亚洲久本草在线中文字幕| 日本高清视频免费看| 国产精品一区二区电影| 国精品一区二区三区| 91国模少妇一区二区三区| 日韩亚洲欧美高清| 亚洲伦理影院| 狠狠干视频网站| 国产视频在线观看一区二区三区 | 影音先锋在线国产| 日韩中文有码在线视频| 美女一区二区在线观看| 依人在线免费视频| 精品久久久久久国产| 精品欧美色视频网站在线观看|