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

一口氣說出 6種 @Transactional 注解失效場景

運維 數據庫運維
@Transactional 注解相信大家并不陌生,平時開發中很常用的一個注解,它能保證方法內多個數據庫操作要么同時成功、要么同時失敗。使用@Transactional注解時需要注意許多的細節,不然你會發現@Transactional總是莫名其妙的就失效了。

 [[322151]]

引言

昨天公眾號粉絲咨詢了一個問題,說自己之前面試被問@Transactional注解哪些場景下會失效,一時語塞致使面試失敗。所以今天簡單的和大家分享一下@Transactional相關的知識。

@Transactional 注解相信大家并不陌生,平時開發中很常用的一個注解,它能保證方法內多個數據庫操作要么同時成功、要么同時失敗。使用@Transactional注解時需要注意許多的細節,不然你會發現@Transactional總是莫名其妙的就失效了。

一、事務

事務管理在系統開發中是不可缺少的一部分,Spring提供了很好事務管理機制,主要分為編程式事務和聲明式事務兩種。

編程式事務:是指在代碼中手動的管理事務的提交、回滾等操作,代碼侵入性比較強,如下示例:

  1. try { 
  2.     //TODO something 
  3.      transactionManager.commit(status); 
  4. } catch (Exception e) { 
  5.     transactionManager.rollback(status); 
  6.     throw new InvoiceApplyException("異常失敗"); 

聲明式事務:基于AOP面向切面的,它將具體業務與事務處理部分解耦,代碼侵入性很低,所以在實際開發中聲明式事務用的比較多。聲明式事務也有兩種實現方式,一是基于TX和AOP的xml配置文件方式,二種就是基于@Transactional注解了。

  1. @Transactional 
  2.     @GetMapping("/test"
  3.     public String test() { 
  4.  
  5.         int insert = cityInfoDictMapper.insert(cityInfoDict); 
  6.     } 

二、@Transactional介紹

1、@Transactional注解可以作用于哪些地方?

@Transactional 可以作用在接口、類、類方法。

  • 作用于類:當把@Transactional 注解放在類上時,表示所有該類的public方法都配置相同的事務屬性信息。
  • 作用于方法:當類配置了@Transactional,方法也配置了@Transactional,方法的事務會覆蓋類的事務配置信息。
  • 作用于接口:不推薦這種使用方法,因為一旦標注在Interface上并且配置了Spring AOP 使用CGLib動態代理,將會導致@Transactional注解失效
  1. @Transactional 
  2.  @RestController 
  3.  @RequestMapping 
  4.  public class MybatisPlusController { 
  5.      @Autowired 
  6.      private CityInfoDictMapper cityInfoDictMapper; 
  7.   
  8.      @Transactional(rollbackFor = Exception.class) 
  9.      @GetMapping("/test"
  10.     public String test() throws Exception { 
  11.         CityInfoDict cityInfoDict = new CityInfoDict(); 
  12.         cityInfoDict.setParentCityId(2); 
  13.         cityInfoDict.setCityName("2"); 
  14.         cityInfoDict.setCityLevel("2"); 
  15.         cityInfoDict.setCityCode("2"); 
  16.         int insert = cityInfoDictMapper.insert(cityInfoDict); 
  17.         return insert + ""
  18.     } 

2、@Transactional注有哪些屬性?

propagation屬性

propagation 代表事務的傳播行為,默認值為 Propagation.REQUIRED,其他的屬性信息如下:

  • Propagation.REQUIRED:如果當前存在事務,則加入該事務,如果當前不存在事務,則創建一個新的事務。( 也就是說如果A方法和B方法都添加了注解,在默認傳播模式下,A方法內部調用B方法,會把兩個方法的事務合并為一個事務 )
  • Propagation.SUPPORTS:如果當前存在事務,則加入該事務;如果當前不存在事務,則以非事務的方式繼續運行。
  • Propagation.MANDATORY:如果當前存在事務,則加入該事務;如果當前不存在事務,則拋出異常。
  • Propagation.REQUIRES_NEW:重新創建一個新的事務,如果當前存在事務,暫停當前的事務。( 當類A中的 a 方法用默認Propagation.REQUIRED模式,類B中的 b方法加上采用 Propagation.REQUIRES_NEW模式,然后在 a 方法中調用 b方法操作數據庫,然而 a方法拋出異常后,b方法并沒有進行回滾,因為Propagation.REQUIRES_NEW會暫停 a方法的事務 )
  • Propagation.NOT_SUPPORTED:以非事務的方式運行,如果當前存在事務,暫停當前的事務。
  • Propagation.NEVER:以非事務的方式運行,如果當前存在事務,則拋出異常。
  • Propagation.NESTED :和 Propagation.REQUIRED 效果一樣。

isolation 屬性

isolation :事務的隔離級別,默認值為 Isolation.DEFAULT。

  • Isolation.DEFAULT:使用底層數據庫默認的隔離級別。
  • Isolation.READ_UNCOMMITTED
  • Isolation.READ_COMMITTED
  • Isolation.REPEATABLE_READ
  • Isolation.SERIALIZABLE

timeout 屬性

timeout :事務的超時時間,默認值為 -1。如果超過該時間限制但事務還沒有完成,則自動回滾事務。

readOnly 屬性

readOnly :指定事務是否為只讀事務,默認值為 false;為了忽略那些不需要事務的方法,比如讀取數據,可以設置 read-only 為 true。

rollbackFor 屬性

rollbackFor :用于指定能夠觸發事務回滾的異常類型,可以指定多個異常類型。

noRollbackFor屬性**

noRollbackFor:拋出指定的異常類型,不回滾事務,也可以指定多個異常類型。

二、@Transactional失效場景

接下來我們結合具體的代碼分析一下哪些場景下,@Transactional 注解會失效。

1、@Transactional 應用在非 public 修飾的方法上

如果Transactional注解應用在非public 修飾的方法上,Transactional將會失效。

在這里插入圖片描述

 

之所以會失效是因為在Spring AOP 代理時,如上圖所示 TransactionInterceptor (事務攔截器)在目標方法執行前后進行攔截,DynamicAdvisedInterceptor(CglibAopProxy 的內部類)的 intercept 方法或 JdkDynamicAopProxy 的 invoke 方法會間接調用 AbstractFallbackTransactionAttributeSource的 computeTransactionAttribute 方法,獲取Transactional 注解的事務配置信息。

  1. protected TransactionAttribute computeTransactionAttribute(Method method, 
  2.     Class<?> targetClass) { 
  3.         // Don't allow no-public methods as required. 
  4.         if (allowPublicMethodsOnly() && !Modifier.isPublic(method.getModifiers())) { 
  5.         return null

此方法會檢查目標方法的修飾符是否為 public,不是 public則不會獲取@Transactional 的屬性配置信息。

注意:protected、private 修飾的方法上使用 @Transactional 注解,雖然事務無效,但不會有任何報錯,這是我們很容犯錯的一點。

2、@Transactional 注解屬性 propagation 設置錯誤

這種失效是由于配置錯誤,若是錯誤的配置以下三種 propagation,事務將不會發生回滾。

TransactionDefinition.PROPAGATION_SUPPORTS:如果當前存在事務,則加入該事務;如果當前沒有事務,則以非事務的方式繼續運行。

TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事務方式運行,如果當前存在事務,則把當前事務掛起。

TransactionDefinition.PROPAGATION_NEVER:以非事務方式運行,如果當前存在事務,則拋出異常。

3、@Transactional 注解屬性 rollbackFor 設置錯誤

rollbackFor 可以指定能夠觸發事務回滾的異常類型。Spring默認拋出了未檢查unchecked異常(繼承自 RuntimeException的異常)或者 Error才回滾事務;其他異常不會觸發回滾事務。如果在事務中拋出其他類型的異常,但卻期望 Spring 能夠回滾事務,就需要指定 rollbackFor屬性。

 

 


在這里插入圖片描述

 

  1. // 希望自定義的異常可以進行回滾 
  2. @Transactional(propagation= Propagation.REQUIRED,rollbackFor= MyException.class 

若在目標方法中拋出的異常是 rollbackFor 指定的異常的子類,事務同樣會回滾。Spring源碼如下:

  1. private int getDepth(Class<?> exceptionClass, int depth) { 
  2.         if (exceptionClass.getName().contains(this.exceptionName)) { 
  3.             // Found it! 
  4.             return depth; 
  5.         // If we've gone as far as we can go and haven't found it... 
  6.         if (exceptionClass == Throwable.class) { 
  7.             return -1; 
  8. return getDepth(exceptionClass.getSuperclass(), depth + 1); 

4、同一個類中方法調用,導致@Transactional失效

開發中避免不了會對同一個類里面的方法調用,比如有一個類Test,它的一個方法A,A再調用本類的方法B(不論方法B是用public還是private修飾),但方法A沒有聲明注解事務,而B方法有。則外部調用方法A之后,方法B的事務是不會起作用的。這也是經常犯錯誤的一個地方。

那為啥會出現這種情況?其實這還是由于使用Spring AOP代理造成的,因為只有當事務方法被當前類以外的代碼調用時,才會由Spring生成的代理對象來管理。

  1. //@Transactional 
  2.     @GetMapping("/test"
  3.     private Integer A() throws Exception { 
  4.         CityInfoDict cityInfoDict = new CityInfoDict(); 
  5.         cityInfoDict.setCityName("2"); 
  6.         /** 
  7.          * B 插入字段為 3的數據 
  8.          */ 
  9.         this.insertB(); 
  10.         /** 
  11.          * A 插入字段為 2的數據 
  12.          */ 
  13.         int insert = cityInfoDictMapper.insert(cityInfoDict); 
  14.  
  15.         return insert
  16.     } 
  17.  
  18.     @Transactional() 
  19.     public Integer insertB() throws Exception { 
  20.         CityInfoDict cityInfoDict = new CityInfoDict(); 
  21.         cityInfoDict.setCityName("3"); 
  22.         cityInfoDict.setParentCityId(3); 
  23.  
  24.         return cityInfoDictMapper.insert(cityInfoDict); 
  25.     } 

5、異常被你的 catch“吃了”導致@Transactional失效

這種情況是最常見的一種@Transactional注解失效場景

  1. @Transactional 
  2.     private Integer A() throws Exception { 
  3.         int insert = 0; 
  4.         try { 
  5.             CityInfoDict cityInfoDict = new CityInfoDict(); 
  6.             cityInfoDict.setCityName("2"); 
  7.             cityInfoDict.setParentCityId(2); 
  8.             /** 
  9.              * A 插入字段為 2的數據 
  10.              */ 
  11.             insert = cityInfoDictMapper.insert(cityInfoDict); 
  12.             /** 
  13.              * B 插入字段為 3的數據 
  14.              */ 
  15.             b.insertB(); 
  16.         } catch (Exception e) { 
  17.             e.printStackTrace(); 
  18.         } 
  19.     } 

如果B方法內部拋了異常,而A方法此時try catch了B方法的異常,那這個事務還能正常回滾嗎?

答案:不能!

會拋出異常:

  1. org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only 

因為當ServiceB中拋出了一個異常以后,ServiceB標識當前事務需要rollback。但是ServiceA中由于你手動的捕獲這個異常并進行處理,ServiceA認為當前事務應該正常commit。此時就出現了前后不一致,也就是因為這樣,拋出了前面的UnexpectedRollbackException異常。

spring的事務是在調用業務方法之前開始的,業務方法執行完畢之后才執行commit or rollback,事務是否執行取決于是否拋出runtime異常。如果拋出runtime exception 并在你的業務方法中沒有catch到的話,事務會回滾。

在業務方法中一般不需要catch異常,如果非要catch一定要拋出throw new RuntimeException(),或者注解中指定拋異常類型@Transactional(rollbackFor=Exception.class),否則會導致事務失效,數據commit造成數據不一致,所以有些時候try catch反倒會畫蛇添足。

6、數據庫引擎不支持事務

這種情況出現的概率并不高,事務能否生效數據庫引擎是否支持事務是關鍵。常用的MySQL數據庫默認使用支持事務的innodb引擎。一旦數據庫引擎切換成不支持事務的myisam,那事務就從根本上失效了。

總結

@Transactional 注解的看似簡單易用,但如果對它的用法一知半解,還是會踩到很多坑的。

責任編輯:武曉燕 來源: 程序員內點事
相關推薦

2020-03-31 08:12:25

Kafka架構數據庫

2022-05-24 11:50:46

延時消息分布式

2020-09-24 09:08:04

分布式系統架構

2020-07-08 07:45:44

OAuth2.0授權

2020-04-16 12:42:42

附近的人共享單車App

2020-08-12 09:55:07

附近的人數據庫MySQL

2020-05-08 10:08:21

延時隊列APIDelayQueue

2021-06-08 22:43:07

IPC方式Qt

2021-03-29 12:22:25

微信iOS蘋果

2021-12-06 08:30:49

SpringSpring Bean面試題

2025-05-14 01:55:00

FCMCPAI

2020-07-31 10:15:32

分布式ID數據庫MySQL

2020-11-04 14:20:58

分布式數據庫MySQL

2020-06-04 07:45:07

過濾器和攔截器

2020-07-10 07:44:26

Session方式Web

2023-12-18 23:09:25

開源優化引擎

2020-10-22 12:30:33

MySQL

2024-03-26 09:42:27

分片算法應用

2025-11-11 08:47:00

2021-05-18 09:03:16

Gomapslice
點贊
收藏

51CTO技術棧公眾號

五月天激情国产综合婷婷婷| 最好看的中文字幕| 在线观看免费版| 另类小说综合欧美亚洲| 日韩视频在线免费| 91精品人妻一区二区三区四区| 182在线视频观看| 国产欧美视频一区二区三区| 91久久精品国产91性色| 久久精品欧美一区二区| 国产一区二区三区四区五区| 欧美丰满高潮xxxx喷水动漫| jizzjizz国产精品喷水| 日本暖暖在线视频| 91一区一区三区| 91系列在线播放| 中文字幕黄色片| 你懂的亚洲视频| 一本久久综合亚洲鲁鲁| 风韵丰满熟妇啪啪区老熟熟女| 超碰aⅴ人人做人人爽欧美| 亚洲男女毛片无遮挡| 日本高清一区| 日韩专区第一页| 国产一区在线不卡| 国产成人在线精品| 久久国产精品系列| 欧美成人69av| www.亚洲成人| 欧美午夜激情影院| 你微笑时很美电视剧整集高清不卡| 51精品国自产在线| 波多结衣在线观看| 久九九久频精品短视频| 亚洲观看高清完整版在线观看 | 91在线精品入口| 亚洲综合激情| 97人人爽人人喊人人模波多 | 欧美午夜久久久| 国产免费黄色一级片| 成人高清免费在线| 亚洲欧洲av一区二区三区久久| 免费在线成人av| 少妇av一区二区| 国产69精品久久99不卡| 96国产粉嫩美女| 999av视频| 国产乱码精品1区2区3区| 成人国产精品一区| 国产精品久久久久久久久久久久久久久久久久 | 国产成人免费高清| 91文字幕巨乱亚洲香蕉| 国产农村妇女毛片精品| 黄网站免费久久| 亚洲va电影大全| av中文在线观看| 国产成人精品www牛牛影视| 亚洲jizzjizz日本少妇| 国内老熟妇对白xxxxhd| 粉嫩av一区二区三区| 99九九电视剧免费观看| 亚洲精品一区二区三区新线路| 国产成人免费高清| 国内精品国语自产拍在线观看| 欧美一级在线免费观看 | 国产在线精品一区二区中文| 欧美一区二区三区黄片| 99免费精品在线观看| 久久久久久久久久久久久久一区| 欧美捆绑视频| 国产精品麻豆欧美日韩ww| 一区不卡字幕| 污污影院在线观看| 俄罗斯毛片基地| 国产色婷婷在线| 无码av免费一区二区三区试看| 日韩在线观看a| 碰碰在线视频| 欧美中文字幕不卡| 成人在线短视频| 久久婷婷国产| 在线播放日韩欧美| 在线免费观看亚洲视频| 黑丝一区二区| 青青青国产精品一区二区| a片在线免费观看| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品美女久久久久av福利| 色中色在线视频| 国产日韩欧美精品在线| 欧美性受黑人性爽| 激情黄产视频在线免费观看| 大荫蒂欧美视频另类xxxx| 亚洲欧美aaa| 美国一区二区| 久久久精品欧美| 国产www在线| 国产尤物一区二区| 欧美欧美一区二区| 在线不卡日本v二区707| 色综合天天做天天爱| 四虎成人在线播放| 性欧美xxxx免费岛国不卡电影| 日韩中文av在线| 在线观看免费国产视频| 国精产品一区一区三区mba视频 | 亚洲妇女av| 日韩中文字幕视频| 日本视频免费在线| 韩日精品视频一区| 日韩福利视频| √最新版天堂资源网在线| 欧美日韩mp4| aaaaaav| 牛夜精品久久久久久久99黑人| 欧洲美女7788成人免费视频| 亚洲av无码一区二区三区性色| 国产日韩亚洲欧美综合| 日韩a∨精品日韩在线观看| 91成人app| 一区二区在线视频播放| 精品成人久久久| 国产精品99久久久久久久女警| 日韩欧美手机在线| 悠悠资源网亚洲青| 欧美精品一区二区三区久久久| 熟女少妇a性色生活片毛片| 久久婷婷麻豆| 久久草.com| 精精国产xxx在线视频app| 日韩情涩欧美日韩视频| 久久精品在线观看视频| 免费观看日韩av| 欧美自拍资源在线| 国产精品专区免费| 国产午夜精品久久久| av大片免费在线观看| 国产成a人亚洲精品| 国产四区在线观看| 疯狂欧洲av久久成人av电影| 中文字幕亚洲第一| 中文字幕 自拍偷拍| 国产欧美一区二区三区沐欲| www.色就是色| av亚洲免费| 国产精品久久久久久久久久久不卡| 可以直接在线观看的av| 日本乱人伦aⅴ精品| 亚洲狠狠婷婷综合久久久久图片| 亚洲国内自拍| 久久99精品久久久久久久久久| sm在线播放| 亚洲片在线观看| 欧美日韩a v| 亚洲国产精品av| 女同激情久久av久久| 亚洲激情五月| 成人综合色站| 国产精品vvv| 国产视频综合在线| 99re这里只有精品在线| 久久久久久久综合日本| 欧美精品aaaa| 99精品视频在线观看播放| 91精品综合视频| 蜜臀av在线| 日韩精品免费在线播放| 亚洲色成人www永久网站| 国产精品视频观看| 善良的小姨在线| 国内精品亚洲| 欧美成人蜜桃| 亚洲三级电影| 久久久久久久久爱| 蜜桃成人在线视频| 欧美性受xxxx| 欧美精品成人久久| 91视频在线观看免费| 日韩一级理论片| 91tv精品福利国产在线观看| 国产成人免费观看| 精品网站在线| 欧美日韩第一页| 五月婷婷丁香六月| 欧美日韩国产另类不卡| 国产精品久久久精品四季影院| 成人福利视频网站| 五月天婷婷激情视频| 一区二区三区午夜视频| 激情一区二区三区| 亚洲免费一区| 欧美在线免费观看| 麻豆tv免费在线观看| 亚洲国产精品视频在线观看| 中文区中文字幕免费看| 亚洲高清免费观看高清完整版在线观看| 美国黄色a级片| 国产一区二区女| 99精品视频在线看| 综合久久十次| 日韩三级电影网站| 国产精品18hdxxxⅹ在线| 538国产精品一区二区免费视频| 日本激情在线观看| 国产视频亚洲精品| 亚洲精品国偷拍自产在线观看蜜桃| 一本色道**综合亚洲精品蜜桃冫| 免费国产羞羞网站美图| 久久久久久久综合日本| 制服丝袜av在线| 久久99精品久久久久久动态图| 人妻熟妇乱又伦精品视频| 小处雏高清一区二区三区| 欧美精品欧美精品| 精品福利一区| 91成人免费视频| 日韩精品一级毛片在线播放| 日本久久久久亚洲中字幕| 17videosex性欧美| 久久资源免费视频| wwwxxx在线观看| 亚洲精品永久免费| 天堂网在线播放| 精品99久久久久久| 国产免费无遮挡| 欧美探花视频资源| 五月天激情四射| 精品欧美aⅴ在线网站| 精品少妇theporn| 亚洲欧美偷拍三级| 午夜剧场免费在线观看| 欧美激情中文不卡| 妺妺窝人体色WWW精品| wwwwxxxxx欧美| 日本一卡二卡在线| av在线综合网| 农村末发育av片一区二区| 国产美女娇喘av呻吟久久| 久国产精品视频| 美女精品自拍一二三四| 日本人视频jizz页码69| 人人爽香蕉精品| 日韩肉感妇bbwbbwbbw| 日本sm残虐另类| 亚洲欧美日韩一级| 麻豆91在线看| 毛片毛片毛片毛| 国产真实乱偷精品视频免| 日韩av自拍偷拍| 国产尤物一区二区| 久久久无码人妻精品无码| 国产99久久久国产精品 | 久久免费美女视频| 国产艳俗歌舞表演hd| 91美女片黄在线观看91美女| 偷拍女澡堂一区二区三区| 久久一夜天堂av一区二区三区| 可以直接看的无码av| 国产亚洲自拍一区| 网爆门在线观看| 亚洲免费av在线| 欧美激情图片小说| 婷婷综合五月天| 国产午夜麻豆影院在线观看| 在线区一区二视频| 一区二区三区亚洲视频| 91精品国产高清一区二区三区蜜臀| 国产av一区二区三区| 亚洲精品国产综合区久久久久久久| 清纯唯美亚洲色图| 色哟哟入口国产精品| 四虎影视国产在线视频| 欧美一级高清免费| 成人在线观看免费播放| 亚洲japanese制服美女| 欧美自拍视频| 亚洲永久激情精品| 亚洲小说区图片区| 欧美精品无码一区二区三区| 久久99精品一区二区三区| 色哟哟无码精品一区二区三区| 97aⅴ精品视频一二三区| 亚洲色图日韩精品| 一区二区三区精品在线观看| 久久久久久少妇| 制服丝袜一区二区三区| 亚洲欧美综合一区二区| 精品国产一区二区三区久久久| 国精产品一区一区三区mba下载| 日本久久91av| 日韩三级精品| 日本不卡久久| 黄色欧美日韩| 九九热99视频| 91小视频免费观看| 成人在线观看免费完整| 一本大道久久a久久精品综合| 国产免费黄色网址| 一区二区三区日韩在线| 岛国毛片av在线| 国产美女被下药99| 婷婷亚洲成人| 日韩精品一区二区三区四| 日韩av中文在线观看| 老熟女高潮一区二区三区| 欧美国产禁国产网站cc| 日韩 欧美 亚洲| 91精品一区二区三区久久久久久| 亚洲 欧美 自拍偷拍| 久久综合电影一区| 国产精品一区二区免费福利视频| 国产欧美日韩在线播放| 综合久久综合| www.这里只有精品| 久久久精品国产免费观看同学| 免费在线一级片| 91精品国产综合久久福利| 国产在线自天天| 7777kkkk成人观看| 1204国产成人精品视频| 久久久久亚洲av无码专区喷水| 日本在线不卡视频| 人妻一区二区视频| 欧美日韩美女视频| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 久久久精品电影| 99精品在线免费观看| 亚洲精品在线免费| 日韩成人dvd| 国产免费一区二区三区网站免费| 欧美日韩亚洲精品内裤| 人人妻人人澡人人爽精品日本| 久久99亚洲热视| 精品国产一区二区三区性色av| 一区二区三区四区五区精品| 蜜桃一区二区三区四区| 三年中国中文观看免费播放| 在线观看三级视频欧美| 黄色片免费在线| 国产成人精品免费视频| 国产欧美日韩精品一区二区三区| 无码精品国产一区二区三区免费| 92精品国产成人观看免费| 久久夜色精品亚洲| 亚洲美女久久久| 色尼玛亚洲综合影院| 热re99久久精品国99热蜜月| 久久精品道一区二区三区| 三级网站在线免费观看| 在线观看一区二区视频| 高清国产福利在线观看| 国产精品免费视频久久久| 日韩一区电影| 永久看看免费大片| 亚洲大型综合色站| 四虎影院在线播放| 日本高清久久天堂| 欧美日韩激情| 想看黄色一级片| 亚洲美女免费视频| 亚洲黄色在线播放| 2019av中文字幕| 欧美一二区在线观看| 中文字幕丰满乱码| 一区二区久久久| 婷婷亚洲一区二区三区| 国产精品成av人在线视午夜片| 成人在线国产| 91香蕉视频在线观看视频| 亚洲一卡二卡三卡四卡无卡久久| 天天摸天天干天天操| 国产成人精品电影| 我不卡影院28| 午夜不卡久久精品无码免费| 色一情一伦一子一伦一区| a天堂在线资源| 国产精品.com| 久久这里有精品15一区二区三区| 99久久久无码国产精品不卡| 日韩亚洲欧美中文三级| 成人av三级| 黄色高清视频网站| 91在线高清观看| 国产一区二区三区视频免费观看| 国内精品中文字幕| 日韩电影在线视频| 这里只有精品在线观看视频| 日本电影亚洲天堂一区| a毛片在线观看| 欧美高清视频一区| 国产一区二区三区四区五区美女| 亚洲视频免费播放| 久久久精品国产网站| 免费成人av| 下面一进一出好爽视频| 日韩欧美在线一区| 性xxxfreexxxx性欧美| 日本在线播放不卡| 成人精品高清在线| 亚洲影视一区二区|