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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java实体映射工具:MapStruct

發布時間:2023/12/31 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实体映射工具:MapStruct 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????????MapStruct版本:1.3.1.Final。


????????當我們需要進行Java Model之間的拷貝時,或者項目要求Java Model需要嚴格區分為數據對象(DO)、數據傳輸對象(DTO)和展示對象(VO)的時候,我們就不得不把一個實體中的屬性映射到另一個實體中。最簡單的做法就是寫一個工具類,進行不斷的getter / setter,這樣雖然能完成要求但卻寫了很多冗余代碼,維護起來相當惡心。所以這個時候就需要一款能自動映射實體屬性的工具了。

????????Spring自帶的BeanUtils工具類算是一款,但是它卻不能自定義映射規則;ModelMapper也是一款映射工具框架,雖然它可以自定義映射規則,但寫法上卻復雜一些。而MapStruct作為一款優秀的Java實體映射工具來說,它也能夠自定義映射規則,并且是通過注解的方式來實現的,源和目標看得很清楚明白。不同于BeanUtils和ModelMapper是通過反射在運行期生成代碼從而導致性能不高,MapStruct是在編譯期生成實現類映射代碼,生成的代碼就是普通的getter / setter代碼,和原生使用的性能相差不大。


1 簡單使用

????????首先需要引入的依賴如下所示:

<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.3.1.Final</version> </dependency> <dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.3.1.Final</version> </dependency>

????????除此之外如果使用的IDE是idea的話,還可以下載MapStruct的插件:

????????該插件可以動態地提示當前沒有進行映射的字段,以及其他一些對MapStruct的支持(和Lombok不同,該插件不是必須安裝的)。

????????接著準備兩個Java Model如下所示,一個DO,一個VO:

import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;@Data @NoArgsConstructor @AllArgsConstructor @Builder public class PersonDO implements Serializable {private static final long serialVersionUID = -3483764417202514211L;private Long personId;private String name;private Integer sex;private Integer age;private String address; } import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;@Data @NoArgsConstructor @AllArgsConstructor @Builder public class PersonVO implements Serializable {private static final long serialVersionUID = 7827081422917080855L;private Long id;private String name;private String sex;private Integer age;private String address; }

????????其中用到了Lombok的注解來簡化編程,詳見我的另一篇文章《Lombok概述》。在完成了上述準備之后,就可以進行MapStruct的開發使用了。

????????我們現在是要把PersonDO轉成PersonVO,首先需要寫一個接口,如下所示:

import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers;@Mapper public interface PersonMapper {PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);PersonVO personDO2VO(PersonDO personDO); }

????????之后需要進行打包編譯,在對屬性進行變動后都要進行打包編譯,以此來生成新的實現類。MapStruct并不能及時地反映出屬性的變更,比方說接口提供方變更了Model的屬性,而調用方只有等到打包編譯的時候才能提示出錯誤,這也許是MapStruct為數不多的缺點了吧,但介于MapStruct是在編譯期生成映射代碼的機制,這點也無可厚非,只要多加留意即可。

????????生成的實現類如下所示:

import javax.annotation.Generated;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T18:46:28+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();personVO.setName( personDO.getName() );if ( personDO.getSex() != null ) {personVO.setSex( String.valueOf( personDO.getSex() ) );}personVO.setAge( personDO.getAge() );personVO.setAddress( personDO.getAddress() );return personVO;} }

????????由上可以看到,生成的實現類就是通過getter / setter方法來實現的,不損失性能。由此可見我們只需要寫一個接口,并定義好映射規則的方法就行了,不需要再寫其他的代碼。相應的測試代碼如下所示:

PersonDO personDO = PersonDO.builder().personId(1L).name("Robert Hou").sex(1).age(24).address("Beijing").build(); PersonVO personVO = PersonMapper.INSTANCE.personDO2VO(personDO); System.out.println(personVO);

????????運行結果如下:

PersonVO(id=null, name=Robert Hou, sex=1, age=24, address=Beijing)

2 Spring注入

????????除了上節的在PersonMapper映射接口中聲明INSTANCE的方式來進行調用之外,MapStruct也同時支持Spring的依賴注入機制,如下所示:

import org.mapstruct.Mapper;@Mapper(componentModel = "spring") public interface PersonMapper {PersonVO personDO2VO(PersonDO personDO); }

????????只需要在@Mapper注解中添加componentModel配置項,并設置為“spring”即可。生成的實現類如下:

import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T18:47:41+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();personVO.setName( personDO.getName() );if ( personDO.getSex() != null ) {personVO.setSex( String.valueOf( personDO.getSex() ) );}personVO.setAge( personDO.getAge() );personVO.setAddress( personDO.getAddress() );return personVO;} }

????????可以看到是對該類添加了@Component注解,注冊成為了一個Bean,之后就可以通過@Autowired注解來進行調用了。相應的測試代碼如下所示:

import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest class TestApplicationTests {@Autowiredprivate PersonMapper personMapper;@Testvoid mapperTest() {PersonDO personDO = PersonDO.builder().personId(1L).name("Robert Hou").sex(1).age(24).address("Beijing").build();PersonVO personVO = personMapper.personDO2VO(personDO);System.out.println(personVO);} }

3 自定義映射

????????由上面的映射規則可知,MapStruct默認只會對同名的屬性進行映射,對于不同名的屬性則不會映射,如PersonDO的personId屬性就沒有映射到PersonVO的id屬性中。這種情況下就需要手動選擇映射屬性,如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring") public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id")})PersonVO personDO2VO(PersonDO personDO); }

????????如果映射屬性只有一個的話,則可以不用使用@Mappings注解而只使用@Mapping注解也都是可以的。這回再來看一下生成的實現類代碼:

import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T18:48:47+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );if ( personDO.getSex() != null ) {personVO.setSex( String.valueOf( personDO.getSex() ) );}personVO.setAge( personDO.getAge() );personVO.setAddress( personDO.getAddress() );return personVO;} }

????????在第20行可以看到對Id屬性也進行了映射。


4 映射集合

????????MapStruct也支持對集合的映射,寫起來也相當簡單。比如說我們現在需要將一個PersonDO的List集合轉換成PersonVO的List集合,MapStruct的寫法如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;import java.util.List;@Mapper(componentModel = "spring") public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id")})PersonVO personDO2VO(PersonDO personDO);List<PersonVO> personDOs2VOs(List<PersonDO> personDOList); }

????????可以看到只需要在第15行添加一個對集合進行映射的方法就行了,并不需要顯示地調用personDO2VO方法,這完全得益于MapStruct的自動類型探測,生成的實現類代碼如下所示:

import java.util.ArrayList; import java.util.List; import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T18:51:17+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );if ( personDO.getSex() != null ) {personVO.setSex( String.valueOf( personDO.getSex() ) );}personVO.setAge( personDO.getAge() );personVO.setAddress( personDO.getAddress() );return personVO;}@Overridepublic List<PersonVO> personDOs2VOs(List<PersonDO> personDOList) {if ( personDOList == null ) {return null;}List<PersonVO> list = new ArrayList<PersonVO>( personDOList.size() );for ( PersonDO personDO : personDOList ) {list.add( personDO2VO( personDO ) );}return list;} }

????????由上面的第41行代碼可以看到personDOs2VOs方法實現了對personDO2VO方法的調用。


5 忽略映射

????????在某些情況下我們不需要對某些字段進行映射,MapStruct也是支持的。比方說現在不需要對address字段進行映射,那么寫法如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring") public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id"),@Mapping(target = "address", ignore = true)})PersonVO personDO2VO(PersonDO personDO); }

????????如第10行代碼所示,將ignore選項值賦為true即可。這樣的話生成的實現類就不會對address字段進行映射了。


6 多參數映射

????????有些時候我們的入參不止一個,而是有多個,這樣的情況MapStruct也是支持的,如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring") public interface PersonMapper {@Mappings({@Mapping(source = "personDO1.personId", target = "id"),@Mapping(source = "personDO1.name", target = "name"),@Mapping(source = "personDO1.sex", target = "sex"),@Mapping(source = "personDO2.age", target = "age"),@Mapping(source = "personDO2.address", target = "address")})PersonVO personDO2VO(PersonDO personDO1, PersonDO personDO2); }

????????入參有兩個PersonDO,將第一個PersonDO的personId、name和sex屬性賦值給PersonVO,而將第二個PersonDO的age和address屬性賦值給PersonVO。需要注意的是如果多個入參的屬性名相同,則需要起別名來進行區別,否則編譯會報錯。生成的實現類代碼如下:

import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T20:58:00+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO1, PersonDO personDO2) {if ( personDO1 == null && personDO2 == null ) {return null;}PersonVO personVO = new PersonVO();if ( personDO1 != null ) {personVO.setName( personDO1.getName() );personVO.setId( personDO1.getPersonId() );if ( personDO1.getSex() != null ) {personVO.setSex( String.valueOf( personDO1.getSex() ) );}}if ( personDO2 != null ) {personVO.setAddress( personDO2.getAddress() );personVO.setAge( personDO2.getAge() );}return personVO;} }

7 映射規則

????????對于一些簡單的類型轉換,例如int轉String,boolean轉Boolean等等,MapStruct都可以自動完成。在上面的例子中也有所體現,例如PersonDO的sex字段是Integer類型的,而PersonVO的sex字段是String類型的,MapStruct通過String.valueOf的方式完成了轉換,不需要使用者操心。

????????而對于Date和String類型之間的相互轉換,MapStruct也是支持的,這里我們往PersonDO中新添加一個Date類型的birthday屬性,在PersonVO中新添加一個String類型的birthday屬性,兩者進行映射。然后MapStruct的接口類代碼如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring") public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id"),@Mapping(source = "birthday", target = "birthday", dateFormat = "yyyy-MM-dd HH:mm:ss")})PersonVO personDO2VO(PersonDO personDO); }

????????通過dateFormat配置項可以配置日期的格式,生成的實現類如下:

import java.text.SimpleDateFormat; import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T19:17:11+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();if ( personDO.getBirthday() != null ) {personVO.setBirthday( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format( personDO.getBirthday() ) );}personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );if ( personDO.getSex() != null ) {personVO.setSex( String.valueOf( personDO.getSex() ) );}personVO.setAge( personDO.getAge() );personVO.setAddress( personDO.getAddress() );return personVO;} }

????????由上面第22行代碼可以看到,MapStruct是通過SimpleDateFormat的方式完成的轉換。另外MapStruct還提供了一個numberFormat關于數據精度的配置,讀者可自行嘗試,這里就不再演示了。

????????有些情況下可能需要完成更加復雜、更加定制化的映射規則,這時候就需要我們自己來寫映射代碼了,這在MapStruct中實現也非常容易?,F在我們不需要從PersonDO中的sex字段映射到PersonVO中的sex字段,而是通過身份證號的倒數第二位來進行判斷,如果為奇數,則為男,反之則為女。繼續往PersonDO中新添加一個String類型的idNumber屬性,然后需要寫一個轉換的工具方法:

public class PersonUtils {private PersonUtils() {}public static String getSex(String idNumber) {if (idNumber == null) {return null;}//截取身份證倒數第二位數字String in = idNumber.substring(idNumber.length() - 2, idNumber.length() - 1);int i = Integer.parseInt(in);//如果為奇數,則是男,反之則為女return (i & 1) == 1 ? "男" : "女";} }

????????MapStruct的接口類改造如下:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring", imports = PersonUtils.class) public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id"),@Mapping(source = "birthday", target = "birthday", dateFormat = "yyyy-MM-dd HH:mm:ss"),@Mapping(target = "sex", expression = "java(PersonUtils.getSex(personDO.getIdNumber()))")})PersonVO personDO2VO(PersonDO personDO); }

????????首先需要在類上的@Mapper注解中加上imports選項來引入這個工具類,然后通過在@Mapping注解中添加expression選項來完成調用,如第11行所示。需要注意的是expression配置項中首先需要寫“java()”,然后再在其中寫具體的調用代碼。生成的實現類代碼如下所示:

import java.text.SimpleDateFormat; import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T20:04:35+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();if ( personDO.getBirthday() != null ) {personVO.setBirthday( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format( personDO.getBirthday() ) );}personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );personVO.setAge( personDO.getAge() );personVO.setAddress( personDO.getAddress() );personVO.setSex( PersonUtils.getSex(personDO.getIdNumber()) );return personVO;} }

????????如上第29行所示,通過調用PersonUtils的工具類方法,完成了sex字段的映射。同時如果使用的Java版本是8或者以上,那么可以使用從Java 8開始支持的接口中的default語句來簡化編程,不用再單獨寫一個工具類了。比如說現在我們需要將PersonDO中的age字段的值加上10,然后賦值給PersonVO中的age字段。如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring", imports = PersonUtils.class) public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id"),@Mapping(source = "birthday", target = "birthday", dateFormat = "yyyy-MM-dd HH:mm:ss"),@Mapping(target = "sex", expression = "java(PersonUtils.getSex(personDO.getIdNumber()))")})PersonVO personDO2VO(PersonDO personDO);default Integer addAge(Integer age) {return age + 10;} }

????????不需要顯式地進行調用,MapStruct會自己推測出來。生成的實現類代碼如下:

import java.text.SimpleDateFormat; import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T20:32:12+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();if ( personDO.getBirthday() != null ) {personVO.setBirthday( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format( personDO.getBirthday() ) );}personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );personVO.setAge( addAge( personDO.getAge() ) );personVO.setAddress( personDO.getAddress() );personVO.setSex( PersonUtils.getSex(personDO.getIdNumber()) );return personVO;} }

????????從第26行代碼可以看到,顯式調用了addAge方法完成了轉換的操作。但是有一點需要注意,MapStruct是通過入參和出參的類型進行判斷,從而進行賦值的。拿這個例子來說,MapStruct會把所有的源Model類型為Integer和目標Model類型為Integer的屬性都添加上這個addAge方法,這往往會造成把不想要轉換的屬性也給轉換了。在這種情況下就不能使用default語句了,而轉而使用上文所說的expression配置項,寫一個工具類方法,顯示地對屬性進行調用即可,這點需要多加留意。


8 默認值和常量

????????同時MapStruct也支持默認值和常量,如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings;@Mapper(componentModel = "spring") public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id"),@Mapping(source = "birthday", target = "birthday", dateFormat = "yyyy-MM-dd HH:mm:ss"),@Mapping(target = "sex", constant = "男"),@Mapping(target = "address", defaultValue = "中國"),})PersonVO personDO2VO(PersonDO personDO); }

????????如上第11行和第12行代碼所示,sex字段常量賦值為“男”,address字段使用了默認值,即該字段如果值為null的情況下賦值為“中國”,不為null則照常進行賦值。生成的實現類代碼如下:

import java.text.SimpleDateFormat; import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T21:20:11+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {if ( personDO == null ) {return null;}PersonVO personVO = new PersonVO();if ( personDO.getBirthday() != null ) {personVO.setBirthday( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format( personDO.getBirthday() ) );}personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );personVO.setAge( personDO.getAge() );if ( personDO.getAddress() != null ) {personVO.setAddress( personDO.getAddress() );}else {personVO.setAddress( "中國" );}personVO.setSex( "男" );return personVO;} }

9 空Model返回

????????通過上面的例子可以看到,當入參Model本身為null的時候,則直接返回null賦值給出參Model。有些情況下我們想返回一個空屬性的Model而不是null,這樣可以不用再在后續進行空指針判斷。如下所示:

import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Mappings; import org.mapstruct.NullValueMappingStrategy;@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_DEFAULT) public interface PersonMapper {@Mappings({@Mapping(source = "personId", target = "id"),@Mapping(source = "birthday", target = "birthday", dateFormat = "yyyy-MM-dd HH:mm:ss"),@Mapping(target = "sex", constant = "男"),@Mapping(target = "address", defaultValue = "中國"),})PersonVO personDO2VO(PersonDO personDO); }

????????在類上的@Mapper注解中加上nullValueMappingStrategy配置項,并賦值為NullValueMappingStrategy.RETURN_DEFAULT即可,默認為RETURN_NULL,即返回null。生成的實現類代碼如下:

import java.text.SimpleDateFormat; import javax.annotation.Generated; import org.springframework.stereotype.Component;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2020-02-08T21:24:37+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_201 (Oracle Corporation)" ) @Component public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonVO personDO2VO(PersonDO personDO) {PersonVO personVO = new PersonVO();if ( personDO != null ) {if ( personDO.getBirthday() != null ) {personVO.setBirthday( new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format( personDO.getBirthday() ) );}personVO.setId( personDO.getPersonId() );personVO.setName( personDO.getName() );personVO.setAge( personDO.getAge() );if ( personDO.getAddress() != null ) {personVO.setAddress( personDO.getAddress() );}else {personVO.setAddress( "中國" );}}personVO.setSex( "男" );return personVO;} }

????????可以看到如果PersonDO為null的話,會返回一個空屬性的PersonVO(賦值為常量的情況除外),而不是直接返回null。

總結

以上是生活随笔為你收集整理的Java实体映射工具:MapStruct的全部內容,希望文章能夠幫你解決所遇到的問題。

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

黄色av成人在线观看 | 麻豆国产精品va在线观看不卡 | 成人黄色短片 | 婷婷伊人综合亚洲综合网 | 黄色福利视频网站 | 四虎国产精品成人免费影视 | 亚洲高清色综合 | 午夜av一区二区三区 | 亚洲综合在 | 国产高清视频免费 | 91网站观看 | 在线午夜电影神马影院 | 中文字幕乱在线伦视频中文字幕乱码在线 | 在线播放 日韩专区 | 91综合色 | 免费看黄电影 | 国产美女精品视频免费观看 | 久热超碰| 在线观看www. | 欧美经典久久 | 国产日韩精品一区二区三区 | 伊色综合久久之综合久久 | 成人av一区二区三区 | 久久在线精品视频 | 蜜臀久久99精品久久久久久网站 | 国产99久久久精品 | 亚洲干视频在线观看 | 日日综合网 | 国产aa免费视频 | 99999精品视频 | 久久美女视频 | 成人理论在线观看 | 偷拍精偷拍精品欧洲亚洲网站 | 99精品久久久久久久 | 久要激情网 | 成年人免费av| 天天色天天射天天操 | 成人免费毛片aaaaaa片 | 日日夜夜狠狠干 | 日日爽天天 | 欧美性天天 | 久久久影院一区二区三区 | 亚洲视频 在线观看 | 久久电影中文字幕视频 | 九九综合在线 | 成人aⅴ视频 | 免费视频a | 激情综合中文娱乐网 | 国产91影视 | 国精产品满18岁在线 | 国产精品第52页 | 99re亚洲国产精品 | 国产在线播放一区二区三区 | 国产精品v欧美精品 | 91高清在线看 | 国产视频二区三区 | 国产一线在线 | 久草在线免费播放 | 国产在线观看a | 又紧又大又爽精品一区二区 | 成人黄色电影在线播放 | 91看片麻豆 | 国产成人精品午夜在线播放 | 日韩 在线 | 美女国产在线 | 国产三级精品三级在线观看 | 国产黄免费在线观看 | 91成版人在线观看入口 | 久久香蕉国产精品麻豆粉嫩av | 欧美视频国产视频 | 啪一啪在线 | www久久精品 | 国产精品麻豆果冻传媒在线播放 | 999成人| 久久久精品小视频 | 国产成人精品免高潮在线观看 | 天堂在线一区二区三区 | 91亚洲精品久久久蜜桃 | 中文字幕美女免费在线 | 日本黄色免费看 | 成人免费视频在线观看 | 在线观看日韩免费视频 | 337p西西人体大胆瓣开下部 | 国产99久久久精品 | 日韩在线免费小视频 | 国产成人99av超碰超爽 | 国产精品乱码久久久 | 99久久99久久精品免费 | 伊人小视频 | 五月网婷婷 | av免费观看网址 | 免费网站黄色 | 亚洲欧美成人在线 | 香蕉久久久久久av成人 | 99久久久国产精品免费99 | 精品人人人 | 亚洲一区视频在线播放 | 成人小视频在线 | 亚洲国产精品一区二区久久hs | 国内精品久久久久久久久久 | 激情婷婷综合网 | 69久久99精品久久久久婷婷 | 深爱婷婷久久综合 | 超碰人人91 | 六月婷婷久香在线视频 | 婷婷新五月 | 中文字幕激情 | 久久男人中文字幕资源站 | 91观看视频 | 日韩一级片大全 | 色婷婷综合久久久 | 国产精品久久久久高潮 | 色婷婷骚婷婷 | 97国产超碰在线 | 国产精品久久久久三级 | 久久久久综合 | 色偷偷888欧美精品久久久 | 人九九精品 | 狠狠躁夜夜躁人人爽超碰91 | 人人爽人人看 | 亚洲精选久久 | 在线观看麻豆av | 丁香花在线观看视频在线 | 国产精品毛片一区视频 | 丁香婷婷综合激情五月色 | www日 | 国产一级精品绿帽视频 | 国产精品久久99精品毛片三a | 探花视频免费在线观看 | 欧美不卡在线 | 久久综合狠狠综合久久激情 | av在线播放不卡 | a级国产乱理论片在线观看 伊人宗合网 | 日韩欧美大片免费观看 | 伊人亚洲综合网 | 国产女人18毛片水真多18精品 | 在线观看国产日韩 | 91资源在线播放 | 成人黄大片视频在线观看 | 欧美国产日韩久久 | 亚洲人久久 | 国产va饥渴难耐女保洁员在线观看 | 美女视频黄在线观看 | 一区二区视频在线播放 | 91亚色视频在线观看 | 日日草夜夜操 | 在线观看亚洲国产精品 | 久在线| 91污在线 | 日韩黄色在线电影 | 九九久久久久久久久激情 | 国产一区免费看 | www国产亚洲精品 | 国产馆在线播放 | 在线看日韩 | 一区二区中文字幕在线 | 在线黄色国产 | 国产美女精品人人做人人爽 | 久草视频免费 | 国产精品久久久久久电影 | 亚洲开心色| 热re99久久精品国产99热 | 亚洲精品视频第一页 | 久久亚洲区 | 久草在线视频中文 | 免费a现在观看 | 亚洲视频一 | 黄色国产大片 | 奇米导航 | 亚洲第一香蕉视频 | 激情综合啪啪 | 久久久久亚洲精品男人的天堂 | 九九热精品视频在线观看 | 欧美成亚洲 | 欧美性大战久久久久 | 国产永久网站 | 俺要去色综合狠狠 | 免费三级av | 亚洲视频播放 | 日韩视频免费看 | 美女久久久久久久 | 成人久久国产 | 日韩精品第一区 | 欧美日韩在线观看视频 | 久久av中文字幕片 | 成人国产精品av | 精品色999 | 夜色资源站国产www在线视频 | 亚洲伦理中文字幕 | 亚洲最大av在线播放 | 五月综合网站 | 日韩激情视频在线 | 亚洲 在线| 日韩高清免费无专码区 | 伊人五月婷 | 婷婷激情五月综合 | 99精品热视频只有精品10 | 欧美婷婷色 | 国产麻豆精品传媒av国产下载 | 久久全国免费视频 | 中文字幕在线资源 | 色姑娘综合网 | 黄色最新网址 | 在线高清av | 久久乐九色婷婷综合色狠狠182 | 午夜精品久久久久久久99无限制 | 色婷婷在线视频 | 日韩 国产 | 久久久久亚洲精品国产 | 日韩电影中文 | 依人成人综合网 | 成人三级视频 | 久草电影在线 | 久久国语 | 91亚洲精品久久久中文字幕 | 人人爽人人爽人人爽人人爽 | 亚洲精品乱码久久久久久蜜桃欧美 | 中文字幕在线观看免费高清完整版 | 久久99精品视频 | 91欧美在线 | 99热精品国产一区二区在线观看 | 欧美精品中文 | 国内毛片毛片 | 99久久精品国产一区二区成人 | 黄色软件在线观看视频 | 国产精品自拍在线 | 日韩在线观看中文字幕 | 99视频在线精品国自产拍免费观看 | 狠狠干.com | 17videosex性欧美 | 99久久国产免费看 | 色黄视频免费观看 | 在线观看日韩中文字幕 | 九九精品毛片 | 欧美激情视频一区二区三区免费 | 国产精品观看在线亚洲人成网 | 综合天天网 | 一区二区三区久久精品 | 国产精品永久久久久久久www | 成人小电影在线看 | 欧美日韩精品在线观看视频 | 激情综合网在线观看 | 三级av在线播放 | a极黄色片| 天天干天天做天天操 | 久久手机精品视频 | 天天操天天能 | 久久久久久久久毛片精品 | 成+人+色综合 | 人人澡超碰碰97碰碰碰软件 | 国产精品正在播放 | 日韩欧美电影在线观看 | 天天爱综合| 亚洲欧美怡红院 | 激情视频国产 | 三级黄免费看 | 色婷婷视频在线观看 | 97视频在线免费播放 | av资源在线观看 | 91成人久久| 色哟哟国产精品 | 在线观看小视频 | 国产精品国产精品 | 国产1区在线观看 | 99久久精品国产欧美主题曲 | 国产成人资源 | 国产69精品久久久久99尤 | 波多野结衣一区二区三区中文字幕 | 国产高清网站 | 日韩欧美在线中文字幕 | 日韩中文字幕免费在线观看 | 视频在线观看99 | 免费国产在线观看 | 久久成人久久 | 久久精品国产久精国产 | 99精品在线视频观看 | 四虎www com | 91视频下载 | 69av视频在线| 69亚洲乱 | www.伊人网 | 九九热视频在线免费观看 | 久久久久久久久精 | 精品一区三区 | 日韩在线观看三区 | 久久久国产影视 | 久久一区二区三区日韩 | 国产91精品一区二区麻豆网站 | 黄色三级视频片 | 国产最新视频在线观看 | 日韩高清精品免费观看 | 国产精品自在线拍国产 | 伊人成人精品 | 成 人 黄 色 视频免费播放 | 国产黄色大片 | 国产精品成人免费精品自在线观看 | 黄色午夜网站 | 色偷偷88欧美精品久久久 | 国产日韩欧美自拍 | 操高跟美女 | 中文字幕在线播放一区二区 | 午夜视频免费在线观看 | 亚洲精品久久久久中文字幕二区 | 91精品秘密在线观看 | 国产字幕在线看 | 又黄又爽又无遮挡免费的网站 | 国产日韩精品欧美 | 国产精品久久久久久久久大全 | 午夜精品一区二区三区可下载 | 最近中文字幕完整视频高清1 | 久久99亚洲热视 | 国产精品午夜免费福利视频 | 国产精品久久久久久久久蜜臀 | 久久久电影 | 美女视频免费一区二区 | 超碰97中文 | 黄色一级免费网站 | 午夜免费福利片 | 91九色在线观看 | 在线一二三四区 | 97看片吧| 欧美俄罗斯性视频 | 欧美性色xo影院 | 密桃av在线 | av天天在线观看 | 国产精品 国内视频 | 亚洲精品乱码久久久久久蜜桃91 | 一区二区三区中文字幕在线观看 | 超碰97在线人人 | 九色精品免费永久在线 | 91在线精品播放 | 久久婷婷激情 | 午夜久久精品 | 天天射成人 | 亚洲狠狠干 | 色久天| 天天操天天草 | 中文字幕 在线 一 二 | 人人射人人射 | 久久免费精品国产 | 国产不卡在线看 | 91人人爽人人爽人人精88v | 91亚州| 国产精品99视频 | 免费在线成人av电影 | 久久综合给合久久狠狠色 | 色射色 | 国产精品久久久99 | 亚洲精品免费在线观看视频 | 综合网中文字幕 | 亚洲永久精品国产 | 天天透天天插 | 伊人首页| 欧美极品xxx | 西西人体4444www高清视频 | 字幕网资源站中文字幕 | 亚洲在线观看av | 久久亚洲电影 | 91精品爽啪蜜夜国产在线播放 | 国内少妇自拍视频一区 | 中文字幕在线播放第一页 | 国产精品毛片网 | 天天av天天 | 成人在线视频一区 | 日本性动态图 | 精品一二三区视频 | 欧美精品在线观看免费 | 国产在线观看h | 福利网址在线观看 | 国产午夜精品一区 | 91麻豆精品久久久久久 | 在线天堂中文在线资源网 | 亚洲成人午夜av | 久久综合中文字幕 | 麻豆精品在线 | 国产91粉嫩白浆在线观看 | 色婷婷免费 | 久久亚洲福利 | 西西人体www444| 天天操天天操 | 久久不射电影网 | 婷婷丁香导航 | 伊人色综合久久天天网 | 五月婷婷六月综合 | 91av在线免费播放 | 一区二区三区免费网站 | 日韩av电影中文字幕在线观看 | 五月婷婷欧美 | 成人在线视频观看 | 精品一区三区 | 国内精品毛片 | 日韩,中文字幕 | 国产v在线播放 | 91精品视频观看 | 日韩在线色视频 | 久草在线视频免费资源观看 | 日韩中字在线 | 美国av片在线观看 | 日韩视频专区 | 黄色影院在线播放 | 久久99热这里只有精品 | 亚州av成人 | 天天插狠狠插 | 国产精品6999成人免费视频 | 色婷婷视频在线 | 中文字幕国语官网在线视频 | 成人在线免费观看网站 | 黄色成人在线网站 | 一级性生活片 | 国产1级毛片 | 九九99| 五月婷婷色丁香 | 色婷婷狠狠五月综合天色拍 | 天天干 夜夜操 | 狠狠色丁香婷婷综合 | 免费av看片 | 亚洲美女精品 | 黄色av一区 | 中文在线最新版天堂 | 在线免费观看欧美日韩 | 6080yy精品一区二区三区 | 日本在线成人 | 亚洲狠狠婷婷综合久久久 | 91精品国产自产91精品 | 国产在线综合视频 | 少妇搡bbbb搡bbb搡aa | 国产最新在线 | 九九在线视频免费观看 | 国产精品每日更新 | 一区二区三区在线免费观看视频 | 日本h在线播放 | 日日插日日干 | 国偷自产中文字幕亚洲手机在线 | 四虎在线永久免费观看 | 亚洲一区日韩 | 九九热精品视频在线播放 | 国产又黄又爽又猛视频日本 | 中文字幕在线播放第一页 | 国产手机在线观看视频 | 91成人在线观看高潮 | 成人av资源网 | 国产免费叼嘿网站免费 | 亚洲年轻女教师毛茸茸 | 国产亚洲精品精品精品 | 午夜黄色 | 久久久噜噜噜久久久 | 亚洲自拍偷拍色图 | www.五月天婷婷 | 超碰电影在线观看 | 91在线国产观看 | 日本精品视频网站 | 黄色av高清| 国产一区二区不卡视频 | 午夜精品剧场 | 欧美伦理电影一区二区 | 日韩一级片网址 | 91亚洲国产成人久久精品网站 | 久久夜色电影 | av免费线看 | 亚洲精品动漫在线 | 国产流白浆高潮在线观看 | av播放在线 | 久久一区二区三区超碰国产精品 | 91麻豆网站 | 日韩精品三区四区 | 91免费视频国产 | 波多野结衣视频一区二区三区 | 中文字幕第| 99久久久国产精品 | av网址在线播放 | 97免费在线观看 | www.五月天| 2019中文 | 999成人免费视频 | 久久精品一区二区国产 | 午夜av免费观看 | 国产精品久久久久久久久久久免费看 | 日韩av区| 精品国内自产拍在线观看视频 | 日韩在线观看网址 | 国产成人一区二区三区在线观看 | 夜色资源站国产www在线视频 | 手机成人在线电影 | 热99久久精品 | 中文字幕日本电影 | 午夜精品福利一区二区三区蜜桃 | 亚洲激情视频 | 国产精品毛片一区二区在线 | 久久这里只有精品久久 | 91九色蝌蚪视频网站 | 欧美福利视频一区 | 高清av中文在线字幕观看1 | 99这里精品 | 美女免费黄视频网站 | 999国内精品永久免费视频 | 色狠狠干 | 久久99热这里只有精品 | 国产不卡免费视频 | 国产在线欧美日韩 | h视频日本| 色婷五月天 | 高清av中文字幕 | 91免费在线看片 | 国产成人黄色网址 | 亚洲黄色一级电影 | 国产不卡毛片 | 一级成人在线 | 国产一二区在线观看 | 美女网站在线 | 国产麻豆果冻传媒在线观看 | 欧美日韩免费在线观看视频 | 久草在线一免费新视频 | 色网站在线看 | 久久爱综合 | 在线观看视频免费大全 | 色av婷婷 | 日韩黄色免费在线观看 | 一区二区三区四区久久 | 久久精品日产第一区二区三区乱码 | 成人国产精品久久久久久亚洲 | 国产中文字幕视频在线观看 | 中文在线字幕免费观 | 国产自在线观看 | 亚洲视频在线观看 | 亚洲欧美视频一区二区三区 | 久久dvd| 久久久999免费视频 日韩网站在线 | 久久无码av一区二区三区电影网 | 婷婷丁香激情网 | 国产精品18久久久久白浆 | 成人av网站在线播放 | 草久久久久久 | 日韩免费视频观看 | 五月综合激情 | 国产原创在线观看 | 亚洲黄色免费观看 | 免费看黄色小说的网站 | 日韩一区二区三区免费电影 | 四虎伊人 | 日韩视频免费在线观看 | 黄色免费在线视频 | 91视频xxxx| 狠狠躁18三区二区一区ai明星 | 精品9999| 欧美另类xxx| 国产中文伊人 | 亚洲综合激情网 | 亚洲永久精品在线观看 | 欧美日韩精品免费观看视频 | 亚洲国产伊人 | www夜夜操 | 91在线观看视频 | 色网站在线免费 | 99免费在线播放99久久免费 | 国产精品自产拍在线观看中文 | 亚洲不卡在线 | 精品国产乱子伦一区二区 | 色狠狠一区二区 | 久久国产二区 | 免费观看xxxx9999片 | 人人爽人人av | 色综合在| 中文字幕色播 | 九九九热精品免费视频观看网站 | 欧美成人久久 | 欧美一级性视频 | 国产精品嫩草影视久久久 | 国产精品一区二 | 一区二区免费不卡在线 | 又爽又黄又刺激的视频 | 中文字幕视频观看 | 国产黄大片| 成人免费看电影 | 伊人狠狠色丁香婷婷综合 | 日韩在线观看 | 天天爽夜夜爽人人爽曰av | 亚洲欧美日韩在线一区二区 | 日韩精品久久一区二区三区 | 久久曰视频 | 免费观看日韩 | 国产色黄网站 | 国产精品乱码一区二区视频 | 日本护士三级少妇三级999 | 丁香婷婷深情五月亚洲 | 免费人做人爱www的视 | 日韩电影在线观看一区二区三区 | 国产一级91 | 激情五月婷婷综合 | 国产午夜三级一区二区三桃花影视 | 国产成人一区二区三区在线观看 | 懂色av懂色av粉嫩av分享吧 | 久久激情影院 | 天天伊人网 | 亚洲欧美国产精品久久久久 | 精品美女久久久久 | 欧美色噜噜噜 | 国产伦精品一区二区三区免费 | 久久九九视频 | 成人久久久久久久久 | 欧美少妇bbwhd | 亚洲免费av片 | 九九涩涩av台湾日本热热 | 国产成人一区二区三区影院在线 | 玖玖在线免费视频 | 日韩精品中文字幕在线 | 2021国产在线视频 | 中文字幕日韩无 | 国产一区二区三区免费观看视频 | 欧美一级性视频 | 伊人导航 | 日韩av中文字幕在线 | 久久手机免费视频 | 久久99精品久久久久婷婷 | av在线免费观看黄 | 精品国产1区 | 2023天天干 | 亚州性色| 久久爱www. | 区一区二区三在线观看 | 91香蕉视频污在线 | 中文字幕亚洲综合久久五月天色无吗'' | 操综合 | 99热这里只有精品8 久久综合毛片 | 国产成人一区二区三区久久精品 | 国产精品久久久久久久久久免费看 | 2018亚洲男人天堂 | 免费在线看v | 九九久久精品视频 | 美女视频黄在线观看 | 中文字幕av一区二区三区四区 | 亚洲精品乱码白浆高清久久久久久 | 欧美一级片在线免费观看 | 亚洲免费国产视频 | 国产精品久久久久久久久久久久午夜 | 亚洲欧洲中文日韩久久av乱码 | 九九久久久 | 91香蕉视频 mp4| 操操日日 | 黄色av影视 | 久久成人免费电影 | 色网站在线观看 | 激情久久小说 | 91黄色免费看 | 1024手机看片国产 | 亚洲免费不卡 | 天堂网在线视频 | 久久九九久久九九 | 日韩美在线 | 久久亚洲私人国产精品va | 中文字幕在线观看资源 | 国产一区二区在线观看视频 | 国产精品久久免费看 | 超碰九九 | 麻豆手机在线 | 婷婷av综合 | 久久久久久久久久久久亚洲 | 色姑娘综合 | 中文在线字幕免费观 | 99热手机在线 | 开心色激情网 | 日韩欧美国产成人 | 射综合网| av免费在线观看1 | 99超碰在线观看 | 激情开心网站 | 亚洲黄色av网址 | 成人av午夜 | 亚洲精品午夜国产va久久成人 | 国产成人在线看 | 欧美日韩视频免费看 | 伊人婷婷网 | 亚洲视频六区 | 在线观看www91 | 在线涩涩| 久久蜜桃av | 国产在线播放不卡 | 日韩精品久久久久久久电影竹菊 | 日女人免费视频 | 精品国产_亚洲人成在线 | 欧美一区三区四区 | 激情五月在线观看 | 免费观看十分钟 | 97成人在线观看 | 91在线资源| 99日韩精品 | 最近中文字幕 | 波多野结衣小视频 | 亚洲国产午夜精品 | 日本在线观看视频一区 | 丝袜美腿在线播放 | 91视频国产免费 | 久久99热这里只有精品 | 日本精品中文字幕 | 99国产精品视频免费观看一公开 | 日日爽 | 欧美精品在线一区二区 | 亚洲人成人在线 | 97爱 | av短片在线 | 天天综合日| 欧美精品久久久久久久久久久 | 国产99久久久国产精品免费看 | 亚洲涩涩色 | 国产成年免费视频 | 国产精品成人久久久久 | 毛片网站在线 | 久久视频网 | 日韩av在线资源 | 91九色精品女同系列 | 久久亚洲综合色 | 婷婷爱五月天 | 欧美日韩国产三级 | 亚洲综合视频网 | 美女视频免费一区二区 | 国产中文欧美日韩在线 | 一区二区中文字幕在线观看 | 久久久久久久久久久久国产精品 | 一本色道久久精品 | 天天躁日日躁狠狠躁 | 精品国产伦一区二区三区免费 | 久久 精品一区 | 高清在线一区 | 99爱视频 | 欧美另类69 | 亚洲资源视频 | 香蕉视频在线播放 | a色视频| 中文字幕视频 | 亚洲国产成人精品在线观看 | 国产精品麻豆欧美日韩ww | 亚洲伊人第一页 | 999成人免费视频 | 婷婷天天色| 就要干b| 久久久久免费电影 | 激情在线五月天 | 成年人电影免费看 | 五月婷婷在线视频观看 | 久久与婷婷 | 日韩精品一区二区三区水蜜桃 | 国产一级视频在线 | 中文资源在线官网 | 国产在线观看二区 | 国产人成看黄久久久久久久久 | 毛片网站免费 | 高清国产午夜精品久久久久久 | 国产白浆视频 | av在线不卡观看 | 精品xxx| 九九热在线精品 | 一区二区三区在线影院 | 亚洲精品玖玖玖av在线看 | 亚洲精品国产精品乱码在线观看 | 国产三级精品三级在线观看 | 91看片麻豆| 亚洲精品无 | 91在线一区二区 | 日韩免费小视频 | 99国产精品视频免费观看一公开 | 久久久久久久精 | 一区二区三区精品在线视频 | 青春草国产视频 | 天天在线免费视频 | 国产三级视频在线 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 欧美激情精品久久久久久免费 | 日日干日日 | 成人黄色电影在线观看 | 一区二区三区在线看 | 97人人精品| 久久综合在线 | 日本久久久久 | 日韩a级黄色 | 欧美韩日精品 | 亚洲 中文 欧美 日韩vr 在线 | 国产精品麻豆91 | 国产精品成人一区二区三区吃奶 | 精品国产一区二区三区久久影院 | 国产高清在线不卡 | 亚洲欧美视频在线播放 | 欧美粗又大 | 在线观看黄污 | 国产明星视频三级a三级点| 99精品视频在线观看 | 久久精品一区二区三 | 欧美精品在线观看一区 | 日韩电影一区二区三区在线观看 | 国产色a在线观看 | 欧美午夜一区二区福利视频 | 在线影院av | av大全免费在线观看 | 国产精品欧美久久久久无广告 | 久久免费视频8 | 成人国产一区 | 国产精品99久久久久久武松影视 | 91在线最新| 国产91九色视频 | 91av视频在线免费观看 | av黄色在线观看 | 激情五月播播久久久精品 | 四虎影视成人精品国库在线观看 | 亚洲砖区区免费 | 激情丁香综合 | 日韩久久久久久 | 欧美激情在线看 | 精品在线观看一区二区 | 久久一二三四 | 中文字幕精 | 亚洲欧美精品在线 | 日韩精品专区 | 国产精品国产精品 | 婷婷夜夜 | 手机在线黄色网址 | 亚洲国产欧美一区二区三区丁香婷 | 久久激情五月丁香伊人 | 国语精品久久 | 成人在线观看影院 | 国产日韩精品一区二区在线观看播放 | 国产一区二区在线免费播放 | 久久免费看视频 | 又粗又长又大又爽又黄少妇毛片 | 婷婷精品国产欧美精品亚洲人人爽 | 久久久99国产精品免费 | 国产精品久久久久永久免费看 | 免费观看性生交大片3 | 在线观看国产区 | 亚洲精品综合在线观看 | 久久乐九色婷婷综合色狠狠182 | 久久99精品视频 | 日韩精品一区二区三区在线视频 | 黄色亚洲免费 | 91手机在线看片 | 五月婷婷视频在线 | 久久久精品久久日韩一区综合 | 国产精品福利久久久 | 国产99免费 | 在线观看中文字幕视频 | 国产午夜精品免费一区二区三区视频 | 免费看的黄色的网站 | 国产综合91| 日日草天天干 | 97视频免费在线观看 | www.色五月.com| 欧美日韩国产亚洲乱码字幕 | 成年人视频免费在线播放 | 国产精品久久久久久久av大片 | 久久99电影 | 五月婷婷在线视频 | 中文字幕色站 | 97在线观| 色吊丝av中文字幕 | 区一区二区三在线观看 | 综合天堂av久久久久久久 | 日韩欧美xxxx | 久久视频免费在线观看 | 精品亚洲成a人在线观看 | 果冻av在线 | 日韩毛片在线一区二区毛片 | 亚洲精品在线观看不卡 | 中文字幕亚洲欧美日韩2019 | 免费网站黄 | 欧美成人精品欧美一级乱 | 日批视频 | 日本少妇高清做爰视频 | 一本一道久久a久久精品 | 成人性生交大片免费看中文网站 | 91福利区一区二区三区 | 久久人人爽人人爽人人片 | 国产成人精品在线观看 | 日韩免费视频 | 免费av大全 | 中文在线中文资源 | 国产特级毛片aaaaaa高清 | 中文久草| av爱干| 日韩视频一二三区 | 国产二区av| 久草在线视频网 | 久久久久成人精品 | 国产成人精品亚洲日本在线观看 | 国内精品在线看 | a黄色片 | 日韩欧美久久 | 久久官网 | 国产美女精品 | 精品欧美一区二区三区久久久 | 日韩a在线播放 | 免费91麻豆精品国产自产在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 日韩av免费在线看 | 一区二区三区免费在线观看视频 | 亚洲激情综合网 | 美女久久久久久久久久 | 久久九九影视 | 亚洲在线免费视频 | 五月天综合婷婷 | 亚洲欧洲精品久久 | 涩涩爱夜夜爱 | 99国产精品久久久久久久久久 | 国产一区在线精品 | 91欧美精品 | www夜夜操com| 亚洲三级黄色 | 九九热免费视频在线观看 | 一区二区三区免费在线观看视频 | 999久久精品| 丁香六月色 | 久久精品这里热有精品 | www.香蕉| 中文字幕在线不卡国产视频 | av播放在线 | 亚洲综合在线发布 | 综合在线观看色 | 人人要人人澡人人爽人人dvd | 久久综合9988久久爱 | 成人国产一区二区 | 国产日韩视频在线 | 久久视频在线免费观看 | 国产在线观看不卡 | 狠狠色丁香久久综合网 | 91黄视频在线 | 在线视频 日韩 | 久久不卡日韩美女 | 最新高清无码专区 | 欧美日韩免费网站 | 免费在线观看一级片 | 三级av网| 亚洲成年片 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 久久成人福利 | 国产精品区在线观看 | 伊人婷婷在线 | 欧美日韩免费观看一区二区三区 | 日韩影片在线观看 | 久久综合中文字幕 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 少妇bbw搡bbbb搡bbbb | 亚洲四虎在线 | 日韩中文字幕视频在线观看 | 国产高清视频免费观看 | 亚洲成人一区 | 免费观看日韩av | 欧美乱淫视频 | 国产精品一二三 | 热99在线视频 | 免费看的黄色 | 中文一区二区三区在线观看 | 少妇高潮流白浆在线观看 | 国产中文字幕亚洲 | 亚洲国产欧洲综合997久久, | 超碰国产在线播放 | 日本中文字幕在线一区 | 一色屋精品视频在线观看 | 久久国产午夜精品理论片最新版本 | 亚洲国产成人久久 | 五月开心激情 | 日韩二三区 | www黄色软件| 国产精品久久精品国产 | 欧洲av不卡 | 欧美精品亚洲精品日韩精品 | 国产精久久久久久妇女av | 免费日韩一区二区三区 | 欧美在线视频一区二区三区 | 中文日韩在线 | 久草在线视频看看 | 黄色国产在线 | 亚洲欧美日韩精品久久奇米一区 | 成年人电影免费在线观看 | 一级黄毛片 | 欧美日韩精品网站 | 亚洲精品在线观看中文字幕 | 69久久99精品久久久久婷婷 | 色a综合| 日韩av中文 | 不卡的av中文字幕 | 特级西西人体444是什么意思 | 狠狠综合网 | 久久久91精品国产 | 久久草精品 | 在线精品在线 | 精品美女在线视频 | 五月婷婷在线综合 | 国产在线精品国自产拍影院 | 91伊人| 91热爆在线观看 | 亚洲国产一区av | 月丁香婷婷 | 最近最新最好看中文视频 | 91九色在线观看视频 | 91精品一区二区三区蜜臀 | 国产a国产a国产a | 中文字幕 影院 | 久久精选 | 人人讲 | 韩日电影在线 | 久久香蕉国产 | 免费观看v片在线观看 |