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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mapstruct详解

發布時間:2024/4/13 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mapstruct详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 功能介紹
    • mapStruct是什么
    • mapStruct有哪些功能
  • 整合到spring中
    • 基本使用
      • 引入
      • 示例
        • 基礎映射
        • 多個對象轉換為1個對象
        • 自定義轉換器
      • mapper使用方式
        • 建議按以下方式使用
      • 更多控制
    • 問題總結
  • 注解說明
    • 精細控制
  • 參考

功能介紹

mapStruct是什么

MapStruct是基于JSR 269的Java注解處理器,因此可以在命令行構建中使用(javac、Ant、Maven等等),可以在IDE內使用。用于生成類型安全的bean映射類的Java注解處理器。屬于編譯時注解,如果轉換bean內容有變化。需要手動clean下才能將變化的內容體現到class文件中。說白了就是通過注解的形式幫我們生成set,get方法。

mapStruct有哪些功能

最大的功能就是為我們轉換兩個不同的bean,或者List,比如拿java的代碼規范來說。客戶端入參–>系統的業務層入參—>db數據庫的入參;就對這3個層次來說。一個req絕對是不能透傳到db層的。為什么呢?就是為了降低耦合。提高業務的單一性,那么某一層參數有改變不會影響其他層。

整合到spring中

基本使用

接口注入靜態方法調用

引入

<!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct --> <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>

示例

基礎映射

@Data public class PersonDto {private String name;private String sex;private Date birthday;private int age;private Double money;private String password;private Date createTime;} //----------------------------------- @Data public class PersonVo {private String fullName;private String sex;private String birthday;private int age;private Double money;private String password; } //----------------------------------- @Mapper public interface PersonMapper {PersonMapper INSTANCE = Mappers.getMapper( PersonMapper.class );@Mapping( source = "fullName",target ="name")@Mapping( target ="birthday", dateFormat = "yyyy-MM-dd")PersonDto vo2dto(PersonVo vo);@Mapping( source = "name",target ="fullName")@Mapping( target ="birthday", dateFormat = "yyyy-MM-dd")@Mapping( target ="password",ignore = true)PersonVo dto2vo(PersonDto dto);}//----------------------------------- ublic static void test1() {PersonDto dto = new PersonDto();dto.setAge(10);dto.setBirthday(Date.from(Instant.now()));dto.setMoney(2.543D);dto.setName("john");dto.setSex("F");dto.setPassword("password");dto.setCreateTime(new Date());System.out.println("dto:::" + dto.toString());PersonVo vo = PersonMapper.INSTANCE.dto2vo(dto);System.out.println("vo:::" + vo.toString());PersonDto dto2 = PersonMapper.INSTANCE.vo2dto(vo);System.out.println("dto2:::" + dto2.toString());} //--------------OUTPUT: dto:::PersonDto(name=john, sex=F, birthday=Wed Apr 07 11:53:05 CST 2021, age=10, money=2.543, password=password, createTime=Wed Apr 07 11:53:05 CST 2021) vo:::PersonVo(fullName=john, sex=F, birthday=2021-04-07, age=10, money=2.543, password=null) dto2:::PersonDto(name=john, sex=F, birthday=Wed Apr 07 00:00:00 CST 2021, age=10, money=2.543, password=null, createTime=null)

處理了以下幾種情況:

  • 相同屬性名稱自動隱式映射
  • 屬性名不同,需要指定@mapping
  • 類型不同,需要指定轉換格式
  • 不需要設置的字段,使用ignore。如果字段在目標對象上不匹配的,則會自動忽略。

自動生成代碼

package demon.study.mapstruct;import java.text.ParseException; import java.text.SimpleDateFormat; import javax.annotation.Generated;@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2021-04-07T11:51:35+0800",comments = "version: 1.3.1.Final, compiler: javac, environment: Java 1.8.0_181 (Oracle Corporation)" ) public class PersonMapperImpl implements PersonMapper {@Overridepublic PersonDto vo2dto(PersonVo vo) {if ( vo == null ) {return null;}PersonDto personDto = new PersonDto();personDto.setName( vo.getFullName() );personDto.setSex( vo.getSex() );try {if ( vo.getBirthday() != null ) {personDto.setBirthday( new SimpleDateFormat( "yyyy-MM-dd" ).parse( vo.getBirthday() ) );}}catch ( ParseException e ) {throw new RuntimeException( e );}personDto.setAge( vo.getAge() );personDto.setMoney( vo.getMoney() );personDto.setPassword( vo.getPassword() );return personDto;}@Overridepublic PersonVo dto2vo(PersonDto dto) {if ( dto == null ) {return null;}PersonVo personVo = new PersonVo();personVo.setFullName( dto.getName() );personVo.setSex( dto.getSex() );if ( dto.getBirthday() != null ) {personVo.setBirthday( new SimpleDateFormat( "yyyy-MM-dd" ).format( dto.getBirthday() ) );}personVo.setAge( dto.getAge() );personVo.setMoney( dto.getMoney() );return personVo;} }

多個對象轉換為1個對象

@Data public class A1 {private String a;private String b; }@Data public class A2 {private String c; }@Data public class A {private String a;private String b;private String c; }@Mapper public interface AMapper {AMapper INSTANCE = Mappers.getMapper( AMapper.class );@Mapping(source = "a1.a", target = "a")@Mapping(source = "a1.b", target = "b")@Mapping(source = "a2.c", target = "c")A two2one(A1 a1,A2 a2 ); }//-----------------output:

自動生成代碼

public class AMapperImpl implements AMapper {@Overridepublic A two2one(A1 a1, A2 a2) {if ( a1 == null && a2 == null ) {return null;}A a = new A();if ( a1 != null ) {a.setA( a1.getA() );a.setB( a1.getB() );}if ( a2 != null ) {a.setC( a2.getC() );}return a;} }

自定義轉換器

枚舉與Integer型不能互相轉換,需要自定義(枚舉與String 可能會轉換正確,Int向枚舉也可能轉換正確)。

不兼容的類型需要自定義轉換。

可以使用@mapper(uses),@mapping(expression)實現

@mapping(expression) 主要用于多個屬性與一個屬性的映射

public class Custom {@Getterpublic enum CustomType {EMPTY(0, "EMPTY"),A(1, "A"),B(2, "B");private Integer code;private String desc;CustomType(Integer code, String desc) {this.code = code;this.desc = desc;}@Overridepublic String toString() {return String.format("{%s,%s}", code, desc);}public static CustomType from(Integer code) {switch (code) {case 1:return CustomType.A;case 2:return CustomType.B;default:return CustomType.EMPTY;}}}@Datapublic static class CustomDto {private Date birthday;private CustomType customA;private CustomType customB;private CustomType customC;}@Datapublic static class CustomVo {private long birthday;private String customA;private Integer customB;private Integer customC;private int all;}@Mapper(uses = {Date2IntHandler.class})public interface CustomMapper {CustomMapper INSTANCE = Mappers.getMapper(CustomMapper.class);@Mapping(target = "all", expression = "java(enum2Int(dto.getCustomB()) + enum2Int(dto.getCustomA()) )")CustomVo dto2vo(CustomDto dto);CustomDto vo2dto(CustomVo vo);default CustomType int2Enum(Integer code) {return CustomType.from(code);}default Integer enum2Int(CustomType type) {return type.getCode();}}public static class Date2IntHandler {public static Date int2Date(long i) {return new Date(i);}public static long date2Int(Date date) {return date.getTime();}}public static void main(String[] args) {test();}public static void test() {CustomDto dto = new CustomDto();dto.setBirthday(Date.from(Instant.now().minus(Period.ofDays(1000))));dto.setCustomA(CustomType.A);dto.setCustomB(CustomType.B);dto.setCustomC(CustomType.B);System.out.println("dto:::" + dto.toString());CustomVo vo = CustomMapper.INSTANCE.dto2vo(dto);System.out.println("vo:::" + vo.toString());CustomDto dto2 = CustomMapper.INSTANCE.vo2dto(vo);System.out.println("dto2:::" + dto2.toString());} }

輸出:

dto:::Custom.CustomDto(birthday=Thu Jul 12 14:38:04 CST 2018, customA={1,A}, customB={2,B}, customC={2,B}) vo:::Custom.CustomVo(birthday=1531377484863, customA=A, customB=2, customC=2, all=3) dto2:::Custom.CustomDto(birthday=Thu Jul 12 14:38:04 CST 2018, customA={1,A}, customB={2,B}, customC={2,B})

自動生成代碼

public class Custom$CustomMapperImpl implements CustomMapper {@Overridepublic CustomVo dto2vo(CustomDto dto) {if ( dto == null ) {return null;}CustomVo customVo = new CustomVo();customVo.setBirthday( Date2IntHandler.date2Int( dto.getBirthday() ) );if ( dto.getCustomA() != null ) {customVo.setCustomA( dto.getCustomA().name() );}customVo.setCustomB( enum2Int( dto.getCustomB() ) );customVo.setCustomC( enum2Int( dto.getCustomC() ) );customVo.setAll( enum2Int(dto.getCustomB()) + enum2Int(dto.getCustomA()) );return customVo;}@Overridepublic CustomDto vo2dto(CustomVo vo) {if ( vo == null ) {return null;}CustomDto customDto = new CustomDto();customDto.setBirthday( Date2IntHandler.int2Date( vo.getBirthday() ) );if ( vo.getCustomA() != null ) {customDto.setCustomA( Enum.valueOf( CustomType.class, vo.getCustomA() ) );}customDto.setCustomB( int2Enum( vo.getCustomB() ) );customDto.setCustomC( int2Enum( vo.getCustomC() ) );return customDto;} }

注意:

@mapping的屬性,source 和 expression 不能同時定義,因為expression中使用了表達式。

Maper中定義的轉換函數 ,會被自動應用到相同類型屬性的轉換上,可能會導致非期望結果。

mapper使用方式

1、接口注入方式

mapStruct接口類的聲明

//使用@Mapper(componentModel = "spring") 整合 @Mapper(componentModel = "spring") public interface ItemInfoConvert {} //------------------------------------------------------ //調用: //直接接口注入,方法調用即可@Autowiredprivate ItemInfoConvert itemInfoConvert;Person person = itemInfoConvert.deliveryDO2DTO(cart);

2、靜態方法調用

mapStruct接口類的聲明

public interface ItemInfoConvert {//靜態方法ItemInfoConvert INSTANCE = Mappers.getMapper(ItemInfoConvert.class); } //--------------------------------------------- //調用: Person person= ItemInfoConvert.INSTANCE.deliveryDO2DTO(cart);

建議按以下方式使用

@Data public class PersonDto {....../*** 輸入為null,輸出則為null* 為什么名字為toVo0?其實類是支持重載(overload),但是在使用stream時,區分不了是想用實例方法,還是類方法。* @param dto* @return*/public static PersonVo toVo0(PersonDto dto) {return PersonMapper.INSTANCE.dto2vo(dto);}public PersonVo toVo() {return PersonMapper.INSTANCE.dto2vo(this);}public static PersonDto from(PersonVo vo) {if (vo == null) {return null;}return PersonMapper.INSTANCE.vo2dto(vo);} } //------------------------------------ @Data public class PersonVo { ... ... public static PersonDto toDto0(PersonVo vo) {if (vo == null){return null;}return PersonMapper.INSTANCE.vo2dto(vo);}public PersonDto toDto(){return PersonMapper.INSTANCE.vo2dto(this);}public static PersonVo from(PersonDto dto){if (dto == null){return null;}return PersonMapper.INSTANCE.dto2vo(dto);} }//------------------------------------public static void test0() {PersonDto dto1 = new PersonDto();dto1.setAge(10);dto1.setBirthday(Date.from(Instant.now()));dto1.setMoney(2.543D);dto1.setName("john");dto1.setSex("F");dto1.setPassword("password");dto1.setCreateTime(new Date());PersonDto dto2 = new PersonDto();dto2.setAge(20);dto2.setBirthday(Date.from(Instant.now()));dto2.setMoney(7.543D);dto2.setName("tom");dto2.setSex("M");dto2.setPassword("password");dto2.setCreateTime(new Date());List<PersonDto> list = Arrays.asList(dto1, null, dto2);//未考慮空引用List<PersonVo> list2 = list.stream().map(dto -> dto.toVo()).collect(Collectors.toList());//考慮了空引用List<PersonVo> list3 = list.stream().map(PersonDto::toVo0).collect(Collectors.toList());} //------------------------------------

更多控制

見官方文檔,可以實現:

  • 內嵌屬性
  • collection,maps,list,stream等
  • defaultvalue等

問題總結

  • 保證相同的數據結構,即參數的類型相同,同string 或者同Integer,類型不同無法轉換

    Exception in thread "main" java.lang.NoSuchMethodError: demon.study.mapstruct.PersonVo.setBirthday(Ljava/util/Date;)V

    必須要使用@Mapping來解決此類問題。

  • 避開關鍵字,比如:delete等

  • 如果項目中也同時使用到了 Lombok,一定要注意 Lombok的版本要等于或者高于1.18.10,否則會有編譯不通過的情況發生

  • 注解說明

    • @Mapper:注解在接口、類上,這樣 MapStruct 才會去實現該接口

      屬性componentModel:該屬性用于指定實現類的類型,有幾個屬性值:

      • default:默認,不使用任何組建類型,可以通過Mappers.getMapper(Class) 方式獲取實例對象
      • spring:在實現類上注解 @Component,可通過 @Autowired 方式注入
      • jsr330:實現類上添加@javax.inject.Named 和@Singleton注解,可以通過 @Inject注解獲取。
    • @Mappings:配置多個@Mapping

    • @Mapping:配置屬性映射,若源對象屬性與目標對象名字一致,會自動映射對應屬性

      • source:源屬性、target:目標屬性
      • dateFormat:可將 String 到 Date 日期之間相互轉換,通過 SimpleDateFormat,該值為 SimpleDateFormat 的日期格式
      • ignore: 忽略這個字段

    精細控制

    控制拷貝屬性時,源字段為null時,是否覆蓋目標對象。

    @Mapper(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) //進行null 檢查,如果為null,則不復制屬性值。nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.SET_TO_DEFAULT //賦值 默認值 nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE //忽略,保持目標對象屬性值

    The strategy works in a hierarchical fashion. @Mapping#nullValueCheckStrategy will override @BeanMapping#nullValueCheckStrategy, @BeanMapping#nullValueCheckStrategy will override @Mapper#nullValueCheckStrategy and @Mapper#nullValueCheckStrategy will override @MaperConfig#nullValueCheckStrategy.

    NullValuePropertyMappingStrategy also applies when the presence checker returns not present.

    參考

    • MapStruct 官網:https://mapstruct.org/
    • MapStruct 官方文檔:https://mapstruct.org/documentation/reference-guide/ , https://mapstruct.org/documentation/1.3/reference/html/#expressions
    • MapStruct maven 地址:https://mvnrepository.com/artifact/org.mapstruct/mapstruct
    • MapStruct github 地址:https://github.com/mapstruct/mapstruct/
    • https://www.cnblogs.com/javaguide/p/11861749.html
    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的mapstruct详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    日韩欧美综合 | 91 在线视频播放 | 久久你懂的 | 成人午夜电影在线 | 久草新在线 | 成年人视频在线免费观看 | 国产群p | 中文字幕日韩在线播放 | 在线观看国产区 | 日韩精品不卡在线观看 | 91丨九色丨丝袜 | 日日干 天天干 | 久草在 | 91手机电视| 在线观看亚洲成人 | 国产高清视频在线播放一区 | 亚洲日本va午夜在线影院 | 亚洲手机av | 久久伊人精品天天 | 欧美午夜寂寞影院 | 蜜臀久久99精品久久久无需会员 | 久操中文字幕在线观看 | 久久综合久久八八 | 国语精品免费视频 | 麻豆视频观看 | 91大神在线看| 日韩在线观看一区二区 | 国产精品破处视频 | 超碰人人射 | 国产日韩中文字幕在线 | 超碰人人超 | 久久理伦片 | 免费av 在线 | 久久国产精品成人免费浪潮 | 狠狠五月天 | 国产麻豆精品免费视频 | 国产91免费在线观看 | 99视频精品免费观看, | 夜夜嗨av色一区二区不卡 | 狠狠色狠狠色综合日日92 | 色小说在线 | 国产91勾搭技师精品 | 免费三级在线 | 精品国产免费看 | 日韩在线观看a | 欧美一区二区伦理片 | 精品视频资源站 | 欧美韩日精品 | av一级一片| 在线免费视 | 国产在线超碰 | 精品久久久影院 | av天天澡天天爽天天av | 丰满少妇一级片 | 欧美色图视频一区 | 成人国产精品久久久久久亚洲 | 亚洲免费av一区二区 | 狠狠色丁香久久婷婷综合_中 | 在线国产日本 | 国产专区视频在线观看 | 欧美a√大片 | 91精品视频在线看 | 国产又粗又长的视频 | 日韩理论电影在线观看 | 日韩国产欧美在线播放 | 国产精品免费不卡 | 日本午夜在线观看 | 午夜免费久久看 | 91麻豆国产 | sm免费xx网站 | 国产精品一区二区精品视频免费看 | 日本久久影视 | 日日夜夜艹| 亚洲激情视频 | 欧美精品乱码久久久久 | 色综合天天色综合 | 中文字幕在线观看完整 | 曰本免费av| 97超碰色偷偷 | 成人久久久久久久久 | 天堂视频中文在线 | 免费a网站 | 黄色av一区二区三区 | 午夜av电影院 | 91精品一区二区三区久久久久久 | 青青久草在线视频 | 免费看的黄网站 | 成人免费视频在线观看 | 日本性生活一级片 | 国产91av视频在线观看 | 91丨九色丨高潮丰满 | 日本激情视频中文字幕 | 天天操天天摸天天干 | 国内外成人在线 | 婷婷在线资源 | 天天在线视频色 | 91视频a| 亚洲伊人天堂 | 亚洲最新毛片 | 国产精品午夜在线观看 | 天天干天天射天天爽 | av电影免费看 | 午夜婷婷在线播放 | 九九色网 | av电影免费观看 | 日韩v在线91成人自拍 | 四虎在线视频免费观看 | 国产黑丝一区二区三区 | 色综合久| 一区二区三区四区久久 | 黄色在线观看免费 | 久久精品网站免费观看 | 中文字幕网站视频在线 | 色婷婷综合激情 | 在线日韩亚洲 | 国内精品视频在线播放 | 国产成人精品一区二区三区 | a黄色片在线观看 | 黄色一级大片在线免费看产 | 麻豆一精品传二传媒短视频 | 日本黄色免费大片 | 91视频最新网址 | 国产精品成人在线 | 日韩视频免费观看高清完整版在线 | 国产精品麻豆99久久久久久 | 久久歪歪 | 国产综合视频在线观看 | 精品免费| 精品黄色在线观看 | 久 久久影院 | 国产一区二区在线播放视频 | 国产精品久久久久久久久久不蜜月 | 久久综合久久综合这里只有精品 | 久久久久电影网站 | 午夜电影av | 婷婷五天天在线视频 | 久久久久国产精品厨房 | 青春草视频在线播放 | 91精品专区 | 亚洲 欧洲 国产 日本 综合 | 久久久私人影院 | av中文字幕网站 | 97超碰网| 国产成人91| 在线不卡中文字幕播放 | 久插视频| 激情丁香 | 久草资源在线 | 黄色最新网址 | 日本中文字幕免费观看 | 免费看网站在线 | 欧美最猛性xxxxx免费 | 狠狠狠色丁香综合久久天下网 | av在线电影网站 | 97人人添人澡人人爽超碰动图 | 在线亚洲天堂网 | 国产精品欧美精品 | 日韩在线电影一区二区 | 97在线精品视频 | av在线中文 | 久久人人爽人人爽 | 中文字幕亚洲国产 | www.久久久精品 | 免费观看福利视频 | 超碰97国产在线 | 欧美性网站 | 天天色天天射天天干 | 日韩精品一区二区三区不卡 | 国产精品热视频 | 亚洲精品女| 国产成人亚洲在线观看 | 中文字幕专区高清在线观看 | 五月婷婷激情综合网 | 国产网站色 | 狠狠综合久久 | 国产免费又粗又猛又爽 | 天天摸日日摸人人看 | 日韩免费视频一区二区 | 久久丁香网 | 亚洲免费婷婷 | 日本精品久久久久中文字幕5 | 亚洲天堂网站视频 | 久久夜视频 | 深爱激情五月综合 | 美女视频a美女大全免费下载蜜臀 | 天天操天天舔天天爽 | 97在线免费观看 | 精品久久1 | 欧美成人亚洲成人 | 久久免费大片 | 91视频免费看网站 | 一级片视频在线 | 日韩黄在线观看 | 日韩av在线看 | 国产成人一区二区三区电影 | 天堂av在线网站 | 久久公开免费视频 | 久久国产精品99国产 | 日韩精品视频第一页 | 五月天六月色 | 久久久影院官网 | 亚洲午夜精品久久久久久久久久久久 | 国产又粗又猛又黄又爽的视频 | 午夜电影中文字幕 | 色婷婷导航| 天堂网在线视频 | 天天插夜夜操 | 国产在线永久 | 欧美一区二区三区免费观看 | 天天操天天干天天综合网 | 亚洲综合色播 | 探花系列在线 | 久久综合免费视频影院 | 天堂av色婷婷一区二区三区 | 中文字幕在线日 | 国产精品麻豆视频 | 五月天中文字幕 | sesese图片 | 国产成人在线观看免费 | 精品久久国产 | 99久久99热这里只有精品 | 日本中文字幕在线播放 | 色综合亚洲精品激情狠狠 | 又污又黄网站 | 久久美女免费视频 | 丁香六月婷婷综合 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 久久久久黄 | 亚洲精品在线免费播放 | 玖玖在线免费视频 | 丁香久久久 | 国产自产在线视频 | 天天操天天插 | 亚洲天堂网在线视频观看 | 嫩嫩影院理论片 | 五月天婷婷免费视频 | 亚洲一区二区黄色 | 国产专区在线看 | 成人国产精品入口 | 国产日韩欧美中文 | 丁香婷婷深情五月亚洲 | 在线中文字幕播放 | 久久人人精品 | 五月婷婷影院 | 免费a视频 | 超碰人人在 | 91成人在线观看高潮 | 国产精品中文 | 99这里只有精品视频 | 欧美激情综合色 | 麻豆91精品| 27xxoo无遮挡动态视频 | 国产无遮挡又黄又爽在线观看 | 草久在线视频 | 91九色视频国产 | 亚洲国产日韩欧美 | 日本激情视频中文字幕 | 波多野结衣在线观看一区 | 亚洲精品福利在线观看 | 亚洲在线视频网站 | 亚洲综合在线五月天 | 久久国产精品免费观看 | 日韩毛片久久久 | 999精品| 欧洲精品视频一区 | 亚州精品天堂中文字幕 | 日韩在线观看网站 | 国产精品久久99 | 亚洲成人av片在线观看 | 国产麻豆精品久久一二三 | 中文字幕精品www乱入免费视频 | 亚洲综合小说 | 国产一区二区三区免费视频 | 精品一区久久 | 色噜噜日韩精品一区二区三区视频 | 9ⅰ精品久久久久久久久中文字幕 | 婷婷在线网 | 国产日韩精品欧美 | 久久久久久看片 | 一区二区三区日韩视频在线观看 | 曰本三级在线 | 亚洲日本精品 | 丁香综合av | 国产一区视频免费在线观看 | 91精品小视频 | 狠狠色丁香久久综合网 | 亚洲三级视频 | 免费av福利 | 在线观看成人毛片 | 黄色91在线观看 | 18性欧美xxxⅹ性满足 | 国产精品视频资源 | 国产短视频在线播放 | 日日摸日日添日日躁av | 婷婷丁香在线 | 香蕉视频在线免费 | 久久国产精品99久久久久 | 亚洲国产精品va在线看黑人 | 日本在线观看一区 | 日日操天天操夜夜操 | 91亚洲网站| 夜夜躁日日躁狠狠躁 | 中文字幕乱码在线播放 | 婷婷在线视频观看 | 色射爱 | 国产一区二区视频在线播放 | 欧美精品久久人人躁人人爽 | av在线免费网站 | 国产精品视频在线看 | 99日精品| av片一区二区 | 久久香蕉电影网 | 中文字幕日韩精品有码视频 | 91av精品 | 天天爱天天色 | 欧美aaa级片| 久久精品艹 | 色狠狠久久av五月综合 | 午夜久久影视 | 夜夜骑天天操 | 视频二区在线 | 欧美少妇bbwhd | 日韩v欧美v日本v亚洲v国产v | 丁香花在线视频观看免费 | 在线中文字幕观看 | 欧美在线1 | 视频在线亚洲 | 探花视频免费观看 | 国产精品激情偷乱一区二区∴ | 97免费视频在线 | 免费在线观看国产黄 | 91精品黄色 | 欧美国产日韩久久 | 五月婷婷操 | 久久免费看av | 久草在线一免费新视频 | 日韩欧美区 | 久久伊人操| 女人高潮一级片 | 国产1级视频 | 一本一道久久a久久综合蜜桃 | 日韩av一区在线观看 | 999成人 | 一区精品在线 | 18久久久久久 | 国产在线观看地址 | 激情久久一区二区三区 | 麻豆94tv免费版 | 欧美另类调教 | 国产精品久久久区三区天天噜 | 中文字幕综合在线 | 色伊人网 | 中文免费在线观看 | 亚洲精品国产精品乱码不99热 | 成人午夜电影在线播放 | 久久日韩精品 | 韩日电影在线观看 | 91 在线视频播放 | 精品久久久成人 | 久久精品激情 | 久久久麻豆视频 | 丁香婷婷综合激情 | 91网免费看 | 天堂av在线 | 17videosex性欧美 | 亚洲成a人片在线观看网站口工 | 人人爽人人爽人人片av | 最近中文字幕mv | 欧美坐爱视频 | 91成人免费在线 | 国产亚洲精品久久 | 成人91av| www.成人精品 | 国产精品美女久久久久久网站 | 精品欧美小视频在线观看 | 久久影院精品 | 国产一级高清视频 | 在线观看黄色免费视频 | 久草在线费播放视频 | 精品在线观看一区二区 | 91中文在线 | 在线观看的av网站 | 97国产大学生情侣酒店的特点 | 国产精品久久久久aaaa九色 | 青草视频在线免费 | 日韩欧美在线视频一区二区 | 亚洲精品久久久久中文字幕m男 | 成人啪啪18免费游戏链接 | 中文字幕高清在线播放 | 久久久久日本精品一区二区三区 | 久久国产精品电影 | 国产精品久久久久久一区二区 | 欧美一级看片 | 亚洲免费av片 | 91大神精品视频在线观看 | 日日干天天爽 | 国产精品一区二区久久久 | 亚洲国产免费 | 国产午夜精品久久 | 欧美激情精品一区 | 欧洲在线免费视频 | 天天操网站 | 国产精品久久久久久影院 | 国产一区二区视频在线播放 | 欧美乱熟臀69xxxxxx | 日b视频在线观看网址 | 九九色在线观看 | av黄色影院 | 亚洲最大的av网站 | 国产精品久久久免费 | 国产探花 | 亚洲专区免费观看 | 国产一卡二卡在线 | 久久久国产日韩 | 国产精品99久久久久 | 日本爱爱免费视频 | 91精品一区二区在线观看 | 天天做天天爱夜夜爽 | 欧美久久久久久久久久久 | 国产在线97 | 久久在线电影 | 91视频-88av| 天堂在线视频中文网 | 中文字幕 影院 | 国产精华国产精品 | 国产精品综合久久 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 日韩欧美国产精品 | 日韩中文字幕国产精品 | 综合婷婷丁香 | 伊人小视频 | 欧美性视频网站 | 免费黄色a级毛片 | 日日碰狠狠添天天爽超碰97久久 | 91在线中字 | 九九九在线 | 中文字幕久久网 | 亚洲 欧美 日韩 综合 | 亚洲精品美女久久久 | 亚洲精品高清在线 | 亚洲黄色在线免费观看 | 天天操天天添 | 日韩欧美高清一区二区 | 午夜性盈盈 | 9999亚洲 | 久久精精品视频 | 国产成人专区 | 极品国产91在线网站 | www.av在线.com | 午夜av免费在线观看 | 中文字幕一区二区三区久久 | 午夜丁香视频在线观看 | 久久成人免费视频 | 日韩精品视频免费专区在线播放 | 狠狠撸电影 | 亚洲伊人婷婷 | 深夜精品福利 | av在线免费网站 | 日本xxxxav | 国产精品视频999 | va视频在线 | 久久草网 | 2023亚洲精品国偷拍自产在线 | 奇米四色影狠狠爱7777 | 日韩欧美在线视频一区二区三区 | 亚洲黄在线观看 | 亚洲激情网站免费观看 | 亚洲精品中文字幕视频 | 人人插人人费 | 国产不卡一 | 精品国产乱码久久久久久1区二区 | 午夜视频一区二区 | av成人动漫在线观看 | 成年人免费在线 | 欧美极品xxxxx | www.色午夜,com | 欧美在线一| 久久久91精品国产一区二区精品 | www五月天com| 成人午夜久久 | 国产免费xvideos视频入口 | 亚洲午夜精品电影 | 草久视频在线观看 | 色黄视频免费观看 | 中文字幕在线观看完整版电影 | 美女天天操 | 91在线看片| 好看的国产精品视频 | 国产成人免费精品 | 天天色天天操天天爽 | 日操操 | 国产亚洲视频系列 | 成人免费看黄 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 国产亚洲精品免费 | 一区二区三区精品在线视频 | 国产日韩视频在线 | 日本在线中文在线 | 免费久久视频 | 国产午夜精品在线 | 日日夜夜天天射 | 最近更新好看的中文字幕 | www.五月天婷婷.com | 欧美日韩久久不卡 | 国产五月 | 五月天婷婷综合 | 久久躁日日躁aaaaxxxx | 国产成人在线一区 | 成年人黄色免费看 | 中中文字幕av| 亚洲视频,欧洲视频 | 亚洲精品麻豆视频 | a级国产乱理论片在线观看 特级毛片在线观看 | 色国产精品 | 深爱激情综合网 | 欧美性做爰猛烈叫床潮 | 日韩二区三区 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 日韩在线观看免费 | 黄色软件在线观看 | 又黄又爽又色无遮挡免费 | 操少妇视频| 久久精品超碰 | 香蕉精品视频在线观看 | 手机看片国产 | 香蕉视频在线观看免费 | 人九九精品 | 天堂av网站 | 在线看小早川怜子av | 色视频在线看 | 日本爱爱免费 | 久久免费观看少妇a级毛片 久久久久成人免费 | 高清av免费一区中文字幕 | 69国产在线观看 | 激情婷婷综合网 | 亚洲v欧美v国产v在线观看 | 国产人成在线观看 | 日韩在线观看网址 | 国产一级精品绿帽视频 | 国产色在线 | 日韩在线观看小视频 | 国产精品永久 | 国产视频一区在线免费观看 | 黄色高清视频在线观看 | 欧美老少交 | www.久久成人 | 国产成人亚洲在线电影 | 免费观看91视频 | 日韩成人xxxx | 色婷婷精品大在线视频 | 四虎国产精品永久在线国在线 | 亚洲精品国产精品国 | 日本三级人妇 | 少妇高潮流白浆在线观看 | 免费观看www小视频的软件 | 亚洲视频在线观看 | 久久亚洲综合色 | 视频国产一区二区三区 | 91人网站 | 黄色小说在线观看视频 | 爱情影院aqdy鲁丝片二区 | 在线免费观看国产黄色 | ,久久福利影视 | 亚洲婷婷在线视频 | 国产高清 不卡 | 91香蕉视频色版 | 九9热这里真品2 | 国产福利小视频在线 | 97av.com| 黄色一级在线免费观看 | 91日韩精品视频 | 成人国产精品一区二区 | 九九九在线观看视频 | 亚洲综合在线观看视频 | 6080yy午夜一二三区久久 | 日韩激情视频 | av一级二级| 91av免费在线观看 | 九九精品视频在线观看 | 国产色综合天天综合网 | 国产xx在线| 精品福利视频在线 | 婷婷丁香激情五月 | 在线黄色国产电影 | 四虎永久免费网站 | 免费成人在线网站 | 国产亚洲片 | 免费中文字幕视频 | 天天射天天干 | 国产 欧美 日产久久 | 91最新在线观看 | 精品久久久久久久久亚洲 | 天天操天天操天天操天天操 | 色欧美88888久久久久久影院 | 中文字幕 国产视频 | 色综合久久久久 | 丁香婷婷综合激情 | 在线观看视频黄色 | 亚洲 中文 欧美 日韩vr 在线 | 天天碰天天操 | 欧美日韩亚洲在线观看 | 日本三级大片 | 九九精品视频在线观看 | 99精品久久99久久久久 | 日本资源中文字幕在线 | 久草视频网 | 国产视频1 | 国产精彩视频一区 | 91视频在线免费下载 | 亚洲精品免费看 | 国产亚洲一级高清 | 成人一区二区三区在线 | 亚洲精品2区 | 国产五月天婷婷 | 中文视频在线看 | 97av视频在线观看 | 丁香婷婷综合网 | 国产123区在线观看 国产精品麻豆91 | 日韩视频免费 | 狠狠色伊人亚洲综合成人 | 91在线九色 | 黄色大片免费播放 | 男女精品久久 | 97精品久久 | 在线免费观看视频 | 人人干天天射 | 久久福利国产 | 精品久久久久久久久久岛国gif | 99精品视频在线观看免费 | 亚洲精品在线电影 | 18国产精品白浆在线观看免费 | 在线免费观看成人 | 最新在线你懂的 | 2021国产精品 | 美女在线免费观看视频 | 丝袜美女在线观看 | 国产精品免费人成网站 | 日韩欧美精品一区二区 | 九九热只有精品 | 免费看十八岁美女 | 亚洲精品乱码久久久久久蜜桃91 | 久二影院| 狠狠色丁香婷婷综合最新地址 | 天天操夜夜操天天射 | 18做爰免费视频网站 | 亚洲一区二区视频在线播放 | 亚洲人成网站精品片在线观看 | 久久字幕 | 91精品福利在线 | 国产v视频 | 国产高清不卡在线 | 97超碰人人澡人人爱 | 亚洲欧洲国产视频 | 日韩高清免费在线观看 | 97超碰人人看 | 色综合久久88色综合天天 | 午夜精品久久久久久久99热影院 | 国内精品中文字幕 | 日韩黄色在线观看 | 亚洲高清免费在线 | 日韩成年视频 | 久久久久国产免费免费 | 色综合咪咪久久网 | 日韩一区二区免费播放 | 伊人午夜视频 | 麻豆国产精品一区二区三区 | 美女视频a美女大全免费下载蜜臀 | 成人h视频在线 | 欧美动漫一区二区三区 | 免费国产一区二区视频 | 一本一本久久aa综合精品 | 又黄又爽又无遮挡免费的网站 | 国产精品久久久久久av | 日韩大陆欧美高清视频区 | 久久精品91视频 | 欧美最猛性xxx | 久热免费在线观看 | 99在线精品视频在线观看 | 91av电影| 久久久久久毛片 | 五月开心六月婷婷 | 国产精品999久久久 久产久精国产品 | av电影在线不卡 | 九九九在线观看视频 | 国产免费看| 天天五月天色 | 午夜久久网 | 欧美黑人猛交 | 婷婷www| 日本在线免费看 | 狠狠色丁香久久婷婷综合五月 | 国产福利小视频在线 | 亚洲三级在线免费观看 | 天天干天天射天天爽 | 四虎最新入口 | 成人午夜黄色 | 欧美午夜剧场 | 日日干综合 | 成人啪啪18免费游戏链接 | 久久综合九色综合97_ 久久久 | 六月丁香伊人 | 韩日在线一区 | 又色又爽又激情的59视频 | 亚州日韩中文字幕 | 97精品国产| 国产69久久精品成人看 | 超碰97国产精品人人cao | 99riav1国产精品视频 | 免费观看一级一片 | 成 人 黄 色视频免费播放 | 在线免费高清 | 天天色天天色天天色 | 亚洲综合色视频在线观看 | 伊人婷婷激情 | 激情欧美一区二区三区免费看 | 日韩精品一区二区三区三炮视频 | 国产精品久久久久永久免费观看 | 91在线在线观看 | 97超碰在线免费观看 | 一区二区三区四区五区在线视频 | 黄色国产高清 | 成人免费观看大片 | 日本中文字幕免费观看 | 成人欧美亚洲 | 中文字幕在线播放一区 | 国际av在线 | 中文字幕丝袜美腿 | 国精产品999国精产 久久久久 | 亚洲国产成人高清精品 | 国产又粗又猛又色又黄视频 | 亚洲精品一区二区精华 | 精品高清视频 | 国产亚洲精品日韩在线tv黄 | 亚洲一区视频免费观看 | 丁香婷五月 | 中文字幕精品一区久久久久 | 最新av中文字幕 | 国产精品视频大全 | 黄污在线观看 | 亚洲天堂激情 | 不卡av电影在线观看 | 色婷婷av国产精品 | 中文字幕在线字幕中文 | 精品国产伦一区二区三区 | 色综合久久88色综合天天6 | 亚洲日本国产精品 | 亚洲精品伦理在线 | 区一区二区三在线观看 | 天天做日日做天天爽视频免费 | 在线电影播放 | 狠狠操影视 | 久久免费大片 | 爱色av.com | 国产中文a| 日本精品一二区 | 成人免费观看视频网站 | 在线观看你懂的网址 | 中文久草| 午夜10000| 综合色婷婷 | 色视频网站在线 | 97国产一区 | 国产精品成人一区二区三区吃奶 | 久久久.com| 西西www444 | 在线 国产 日韩 | 91九色精品女同系列 | 日韩在线理论 | 在线观看一区二区精品 | 天天天天色射综合 | 婷婷色五| 亚洲丝袜中文 | 激情av在线播放 | 特级免费毛片 | 四虎精品成人免费网站 | 国产成人av福利 | 婷婷综合成人 | 亚洲经典视频 | 国产成人精品av久久 | 国模一二三区 | 激情九九| 亚洲精品影院在线观看 | 91精品一| 人人插人人舔 | 青青草国产免费 | 在线免费高清一区二区三区 | 日韩在线不卡视频 | 91网页版在线观看 | 天天综合在线观看 | 美女网站免费福利视频 | 在线影院中文字幕 | 97网站| 国产视频一区二区在线观看 | 成人三级网址 | 国内精品亚洲 | 日产乱码一二三区别在线 | 亚洲精品九九 | 亚洲电影图片小说 | 岛国精品一区二区 | 又污又黄的网站 | 正在播放国产一区二区 | 久色 网 | 成人av片免费观看app下载 | 美女视频黄是免费的 | 亚在线播放中文视频 | 久久久.com | 最近日本韩国中文字幕 | 国产成人av综合色 | 在线免费中文字幕 | 久草精品视频在线看网站免费 | 国产精品大片在线观看 | 久久久久五月天 | 日韩午夜视频在线观看 | 久草视频首页 | 99热精品久久| 国产成人av网站 | 日韩一区二区在线免费观看 | 久久精品国产99 | 免费av视屏 | 国产三级视频在线 | 久草网在线观看 | www.com.黄 | 欧美一区二区三区免费观看 | 久草在线最新免费 | 91福利视频一区 | 色88久久| 美女久久久久久 | 91大神精品视频在线观看 | 激情影院在线观看 | 夜夜高潮夜夜爽国产伦精品 | 日韩av成人在线观看 | 欧美一区二区三区特黄 | 丁香综合av | 国产精品无av码在线观看 | 99久久夜色精品国产亚洲 | 午夜在线免费观看视频 | 五月开心综合 | 91精品国产一区二区三区 | 黄色免费电影网站 | 中文字幕一区二区在线观看 | 在线日韩av | 国产三级香港三韩国三级 | 日韩在线色视频 | 久久情爱 | 久久综合色天天久久综合图片 | 精品欧美小视频在线观看 | 国产69精品久久久久9999apgf | 波多野结衣一区二区 | 亚洲国产免费看 | av电影免费 | 日韩理论在线播放 | 亚洲一区二区三区毛片 | 亚洲精品免费视频 | 91av看片| 午夜12点 | 五月婷婷六月综合 | 色在线国产 | 久久精品国产免费 | 成人欧美一区二区三区在线观看 | 欧美日韩二区三区 | 日韩在线播放视频 | 久久久久久久18 | 免费高清在线观看成人 | 欧美在线视频精品 | 欧美嫩草影院 | 97超级碰碰碰碰久久久久 | 在线观看va | 热久久精品在线 | 色综合久久综合中文综合网 | 国产一区二区在线看 | 一区二区三区四区免费视频 | 日韩精品一区二区三区三炮视频 | 欧美精品久久久久久久久久久 | 国产91精品一区二区麻豆网站 | 三级av在线免费观看 | 欧美在线观看视频一区二区 | 日韩亚洲国产精品 | 国内丰满少妇猛烈精品播 | 在线观看欧美成人 | 成人三级网址 | 九色视频自拍 | 中文字幕在线观看一区二区三区 | 很黄很黄的网站免费的 | 婷婷电影在线观看 | 中文字幕精 | 国产三级久久久 | 亚洲精品动漫成人3d无尽在线 | 在线看片91 | 亚洲天堂香蕉 | 久久综合久久综合九色 | 国产福利午夜 | 亚洲国产精品一区二区久久hs | 欧美一级大片在线观看 | 久久伊人91| 亚洲精品乱码久久久久久写真 | 国产91在线 | 美洲 | 成人av中文字幕 | 国产一级黄色片免费看 | 在线色亚洲 | 又黄又爽又刺激 | 国产69久久久欧美一级 | 黄色资源在线观看 | 婷婷丁香久久五月婷婷 | 一区三区在线欧 | 18做爰免费视频网站 | 国产日韩欧美在线免费观看 | 在线免费黄色片 | 国产福利一区在线观看 | 国产精品美女久久久久久免费 | 欧美在线观看视频一区二区 | 色偷偷888欧美精品久久久 | 大胆欧美gogo免费视频一二区 | 久久精品79国产精品 | 91九色自拍 | 久久午夜羞羞影院 | 成人av网址大全 | 国产精品va在线 | av网站免费看 | 99精品热 | 久久国产精品小视频 | 最新成人av | 成人av地址 | 国产不卡一区二区视频 | 免费看特级毛片 | 狠狠色网| 欧美在线观看视频免费 | 国产精品黄色在线观看 | 国产性天天综合网 | 久久免费国产 | 99热网站| 99久久电影 | 久久免费av电影 | av中文字幕网址 | 精品久久久久久久久久久久久久久久 | 97在线精品国自产拍中文 | 国产四虎在线 | 免费在线观看a v | 日韩av免费大片 | 四虎在线观看网址 | 欧美日韩调教 | 狠狠色免费| 国产精品粉嫩 | 狠狠色综合网站久久久久久久 | 日韩精品中字 | 97av精品 | 91最新在线观看 | 在线观av| 97日日 | 日韩美女黄色片 | 最新中文字幕视频 | 又湿又紧又大又爽a视频国产 | 国产色 在线 | 成人黄色av网站 | 欧美性大胆 | 亚洲欧美精品一区二区 | 又污又黄的网站 | 在线观看日韩精品视频 | 日韩在线免费视频观看 | 色综合www| 国产精品免费视频观看 | 又湿又紧又大又爽a视频国产 | 亚洲最新视频在线播放 | 亚洲国产成人在线播放 | 久久首页 | 国产日韩高清在线 | 久久久亚洲精华液 | 免费看v片| 国产精品亚洲人在线观看 | 婷婷丁香色| 精品亚洲欧美一区 | 欧美性做爰猛烈叫床潮 | 黄色软件在线看 | 99久久婷婷国产 | 51久久夜色精品国产麻豆 | 97成人在线视频 | 日韩理论片中文字幕 | 黄色在线免费观看网站 | 日日日天天天 | 久久婷婷激情 | 国产中文字幕在线播放 | 国产精品久久久久久吹潮天美传媒 | 亚洲伊人第一页 | 91精品福利在线 | 水蜜桃亚洲一二三四在线 | 国色天香第二季 | 92国产精品久久久久首页 | 欧美激情奇米色 | 欧美在线久久 | 国产一级不卡视频 | 激情五月播播久久久精品 | www黄免费 | 天天射天天干天天插 | 国产一二三四在线视频 | 在线亚洲午夜片av大片 | 好看的国产精品视频 | 国产精品国产亚洲精品看不卡15 | 婷婷色站 | 在线看毛片网站 |