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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring JDBC最佳实践(2)

發布時間:2023/12/19 javascript 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring JDBC最佳实践(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

使用DataSourceUtils進行Connection的管理
由上節代碼可知,JdbcTemplate在獲取Connection的時候,并不是直接調用DataSource的getConnection(),而是調用了如下的代碼:
Connection con = DataSourceUtils.getConnection(getDataSource());

為什么要這么做呢?
實際上,如果對于一個功能帶一的JdbcTemplate來說,調用如下的代碼就夠了:
Connection con = dataSource.getConnection();

只不過,spring所提供的JdbcTemplate要關注更多的東西,所以,在從dataSource取得連接的時候,需要多做一些事情。

org.springframework.jdbc.datasource.DataSourceUtils所提供的方法,用來從指定的DataSource中獲取或者釋放連接,它會將取得的Connection綁定到當前的線程,以便在使用Spring所提供的統一事務抽象層進行事務管理的時候使用。

為什么要使用NativeJdbcExtractor
在execute()方法中可以看到:

if (this.nativeJdbcExtractor != null &&this.nativeJdbcExtractor.isNativeConnectionNecessaryForNativeStatements()) {conToUse = this.nativeJdbcExtractor.getNativeConnection(con);}

if (this.nativeJdbcExtractor != null) {stmtToUse = this.nativeJdbcExtractor.getNativeStatement(stmt);}

通過該處理,獲取的將是相應的驅動程序所提供的實現類,而不是相應的代理對象。
JdbcTemplate內部定義了一個NativeJdbcExtractor類型的實例變量:
/** Custom NativeJdbcExtractor */private NativeJdbcExtractor nativeJdbcExtractor;

當我們想用驅動對象所提供的原始API的時候,可以通過JdbcTemplate的如下代碼:
public void setNativeJdbcExtractor(NativeJdbcExtractor extractor) {this.nativeJdbcExtractor = extractor;}這樣將會獲取真正的目標對象而不是代理對象。

spring默認提供面向Commons DBCP、C3P0、Weblogic、Websphere等數據源的NativeJdbcExtractor的實現類: CommonsDbcpNativeJdbcExtractor:為Jakarta Commons DBCP數據庫連接池所提供的NativeJdbcExtractor實現類 C3P0NativeJdbcExtractor:為C3P0數據庫連接池所提供的NativeJdbcExtractor實現類 WebLogicNativeJdbcExtractor:為Weblogic所準備的NativeJdbcExtractor實現類

WebSphereNativeJdbcExtractor:為WebSphere所準備的NativeJdbcExtractor實現類

控制JdbcTemplate的行為 JdbcTemplate在使用Statement或者PreparedStatement等進行具體的數據操作之前,會調用如下的代碼:

protected void applyStatementSettings(Statement stmt) throws SQLException {int fetchSize = getFetchSize();if (fetchSize > 0) {stmt.setFetchSize(fetchSize);}int maxRows = getMaxRows();if (maxRows > 0) {stmt.setMaxRows(maxRows);}DataSourceUtils.applyTimeout(stmt, getDataSource(), getQueryTimeout());}

這樣便可以設置Statement每次抓取的行數 等等。

SQLException到DataAccessException的轉譯 因為JdbcTemplate直接操作的是JDBC API,所以它需要捕獲在此期間可能發生的SQLException,處理的宗旨是將SQLException 轉譯到spring的數據訪問異常層次體系,以統一數據訪問異常的處理方式,這個工作主要是交給了SQLExceptionTranslator,該 接口的定義如下:

package org.springframework.jdbc.support;import java.sql.SQLException;import org.springframework.dao.DataAccessException;/**** @author Rod Johnson* @author Juergen Hoeller* @see org.springframework.dao.DataAccessException*/ public interface SQLExceptionTranslator {DataAccessException translate(String task, String sql, SQLException ex);}

該接口有兩個主要的實現類,SQLErrorCodeSQLExceptionTranslator和SQLStateSQLExceptionTranslator,如下所示:

SQLExceptionSubclassTranslator是Spring2.5新加的實現類,主要用于JDK6發布的將JDBC4版本中新定義的異常體系轉化為spring的異常體系,對于之前的版本,該類派不上用場。
SQLErrorCodeSQLExceptionTranslator會基于SQLExcpetion所返回的ErrorCode進行異常轉譯。通常情況下,根據各個數據庫提供商所提供的ErrorCode進行分析要比基于SqlState的方式要準確的多。默認情況下,JdbcTemplate會采用SQLErrorCodeSQLExceptionTranslator進行SQLException的轉譯,當ErrorCode無法提供足夠的信息的時候,會轉而求助SQLStateSQLExceptionTranslator。
如果JdbcTemplate默認的SQLErrorCodeSQLExceptionTranslator無法滿足當前異常轉譯的需要,我們可以擴展SQLErrorCodeSQLExceptionTranslator,使其支持更多的情況,有兩種方法進行擴展:提供其子類或者在classpath下提供相應的配置文件,

我們先大致看一下SQLErrorCodeSQLExceptionTranslator的大致調用規則,然后再從代碼層面上研究下,r進行轉譯的大致的流程如下:
1、SQLErrorCodeSQLExceptionTranslator定義了如下的自定義異常轉譯的方法:

protected DataAccessException customTranslate(String task, String sql, SQLException sqlEx) {return null;}

程序流程首先會檢查該自定義轉譯的方法是否能夠對當前的SQLException進行轉譯,如果可以,直接返回DataAccessException類型,如果為null,表示無法轉譯,程序將執行下一步,由上面代碼可以看到該方法直接返回null,所以,流程要進入下一步。
2、使用org.springframework.jdbc.support.SQLErrorCodesFactory所加載的SQLErrorCodes進行異常轉譯,其中,SQLErrorCodesFactory加載SQLErrorCodes的流程為:
1>使用org/springframework/jdbc/support/sql-error-codes.xml路徑下記載了各個數據庫提供商的配置文件,提取相應的SQLErrorCodes。
2>如果發現當前應用的根目錄下存在名稱為sql-error-codes.xml的配置文件,則加載該文件并覆蓋默認的ErrorCodes定義。

3、如果基于ErrorCode的異常轉譯還是沒法搞定的話,SQLErrorCodeSQLExceptionTranslator只能求助于SQLStateSQLExceptionTranslator或者SQLExceptionSubclassTranslator

下面從代碼層面上剖析之:
假若JdbcTemplate的如下模板方法在執行的過程中發生了異常:

public Object execute(StatementCallback action) throws DataAccessException {Assert.notNull(action, "Callback object must not be null");Connection con = DataSourceUtils.getConnection(getDataSource());Statement stmt = null;try {Connection conToUse = con;if (this.nativeJdbcExtractor != null &&this.nativeJdbcExtractor.isNativeConnectionNecessaryForNativeStatements()) {conToUse = this.nativeJdbcExtractor.getNativeConnection(con);}stmt = conToUse.createStatement();applyStatementSettings(stmt);Statement stmtToUse = stmt;if (this.nativeJdbcExtractor != null) {stmtToUse = this.nativeJdbcExtractor.getNativeStatement(stmt);}Object result = action.doInStatement(stmtToUse);handleWarnings(stmt);return result;}catch (SQLException ex) {// Release Connection early, to avoid potential connection pool deadlock// in the case when the exception translator hasn't been initialized yet.JdbcUtils.closeStatement(stmt);stmt = null;DataSourceUtils.releaseConnection(con, getDataSource());con = null;throw getExceptionTranslator().translate("StatementCallback", getSql(action), ex);}finally {JdbcUtils.closeStatement(stmt);DataSourceUtils.releaseConnection(con, getDataSource());}}

會執行catch塊中的
throw getExceptionTranslator().translate("StatementCallback", getSql(action), ex);

getExceptionTranslator()如下定義:
public synchronized SQLExceptionTranslator getExceptionTranslator() {if (this.exceptionTranslator == null) {DataSource dataSource = getDataSource();if (dataSource != null) {this.exceptionTranslator = new SQLErrorCodeSQLExceptionTranslator(dataSource);}else {this.exceptionTranslator = new SQLStateSQLExceptionTranslator();}}return this.exceptionTranslator;}

dataSource不為null,所以創建了SQLErrorCodeSQLExceptionTranslator,看下其構造方法:
public SQLErrorCodeSQLExceptionTranslator(DataSource dataSource) {this();setDataSource(dataSource);}

this()代碼為:
public SQLErrorCodeSQLExceptionTranslator() {if (JdkVersion.getMajorJavaVersion() >= JdkVersion.JAVA_16) {setFallbackTranslator(new SQLExceptionSubclassTranslator());}else {setFallbackTranslator(new SQLStateSQLExceptionTranslator());}}

如果JDK版本大于或等于6,備份了一個SQLExceptionSubclassTranslator類型的Translator,否則備份一個SQLStateSQLExceptionTranslator
setDataSource(DataSource dataSource)通過SQLErrorCodesFactory創建一個SQLErrorCodes類型的變量:
public void setDataSource(DataSource dataSource) {this.sqlErrorCodes = SQLErrorCodesFactory.getInstance().getErrorCodes(dataSource);}

SQLErrorCodesFactory采用了單例模式,在其構造方法中依然利用了BeanFactory,傳入的文件為xml bean配置文件:
protected SQLErrorCodesFactory() {Map errorCodes = null;try {DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();XmlBeanDefinitionReader bdr = new XmlBeanDefinitionReader(lbf);// Load default SQL error codes.Resource resource = loadResource(SQL_ERROR_CODE_DEFAULT_PATH);if (resource != null && resource.exists()) {bdr.loadBeanDefinitions(resource);}else {logger.warn("Default sql-error-codes.xml not found (should be included in spring.jar)");}// Load custom SQL error codes, overriding defaults.resource = loadResource(SQL_ERROR_CODE_OVERRIDE_PATH);if (resource != null && resource.exists()) {bdr.loadBeanDefinitions(resource);logger.info("Found custom sql-error-codes.xml file at the root of the classpath");}// Check all beans of type SQLErrorCodes.errorCodes = lbf.getBeansOfType(SQLErrorCodes.class, true, false);if (logger.isInfoEnabled()) {logger.info("SQLErrorCodes loaded: " + errorCodes.keySet());}}catch (BeansException ex) {logger.warn("Error loading SQL error codes from config file", ex);errorCodes = Collections.EMPTY_MAP;}this.errorCodesMap = errorCodes;}


可知首先會讀取org.springframework.jdbc.support下的sql-error-codes.xml文件,如果classpath下也有該文件,則覆蓋之,
這樣便生成了sqlErrorCodes
getExceptionTranslator().translate("StatementCallback", getSql(action), ex)的方法如下所示:

public DataAccessException translate(String task, String sql, SQLException ex) {Assert.notNull(ex, "Cannot translate a null SQLException");if (task == null) {task = "";}if (sql == null) {sql = "";}DataAccessException dex = doTranslate(task, sql, ex);if (dex != null) {// Specific exception match found.return dex;}// Looking for a fallback...SQLExceptionTranslator fallback = getFallbackTranslator();if (fallback != null) {return fallback.translate(task, sql, ex);}// We couldn't identify it more precisely.return new UncategorizedSQLException(task, sql, ex);}

doTranslate(task, sql, ex)讓子類實現,在這個例子中即是SQLErrorCodeSQLExceptionTranslator,代碼如下:
protected DataAccessException doTranslate(String task, String sql, SQLException ex) {SQLException sqlEx = ex;if (sqlEx instanceof BatchUpdateException && sqlEx.getNextException() != null) {SQLException nestedSqlEx = sqlEx.getNextException();if (nestedSqlEx.getErrorCode() > 0 || nestedSqlEx.getSQLState() != null) {logger.debug("Using nested SQLException from the BatchUpdateException");sqlEx = nestedSqlEx;}}// First, try custom translation from overridden method.DataAccessException dex = customTranslate(task, sql, sqlEx);if (dex != null) {return dex;}// Check SQLErrorCodes with corresponding error code, if available.if (this.sqlErrorCodes != null) {String errorCode = null;if (this.sqlErrorCodes.isUseSqlStateForTranslation()) {errorCode = sqlEx.getSQLState();}else {errorCode = Integer.toString(sqlEx.getErrorCode());}if (errorCode != null) {// Look for defined custom translations first.CustomSQLErrorCodesTranslation[] customTranslations = this.sqlErrorCodes.getCustomTranslations();if (customTranslations != null) {for (int i = 0; i < customTranslations.length; i++) {CustomSQLErrorCodesTranslation customTranslation = customTranslations[i];if (Arrays.binarySearch(customTranslation.getErrorCodes(), errorCode) >= 0) {if (customTranslation.getExceptionClass() != null) {DataAccessException customException = createCustomException(task, sql, sqlEx, customTranslation.getExceptionClass());if (customException != null) {logTranslation(task, sql, sqlEx, true);return customException;}}}}}// Next, look for grouped error codes.if (Arrays.binarySearch(this.sqlErrorCodes.getBadSqlGrammarCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new BadSqlGrammarException(task, sql, sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getInvalidResultSetAccessCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new InvalidResultSetAccessException(task, sql, sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getDataIntegrityViolationCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new DataIntegrityViolationException(buildMessage(task, sql, sqlEx), sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getPermissionDeniedCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new PermissionDeniedDataAccessException(buildMessage(task, sql, sqlEx), sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getDataAccessResourceFailureCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new DataAccessResourceFailureException(buildMessage(task, sql, sqlEx), sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getTransientDataAccessResourceCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new TransientDataAccessResourceException(buildMessage(task, sql, sqlEx), sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getCannotAcquireLockCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new CannotAcquireLockException(buildMessage(task, sql, sqlEx), sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getDeadlockLoserCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new DeadlockLoserDataAccessException(buildMessage(task, sql, sqlEx), sqlEx);}else if (Arrays.binarySearch(this.sqlErrorCodes.getCannotSerializeTransactionCodes(), errorCode) >= 0) {logTranslation(task, sql, sqlEx, false);return new CannotSerializeTransactionException(buildMessage(task, sql, sqlEx), sqlEx);}}}// We couldn't identify it more precisely - let's hand it over to the SQLState fallback translator.if (logger.isDebugEnabled()) {String codes = null;if (this.sqlErrorCodes != null && this.sqlErrorCodes.isUseSqlStateForTranslation()) {codes = "SQL state '" + sqlEx.getSQLState() + "', error code '" + sqlEx.getErrorCode();}else {codes = "Error code '" + sqlEx.getErrorCode() + "'";}logger.debug("Unable to translate SQLException with " + codes + ", will now try the fallback translator");}return null;}

可知假如該方法返回的是null,translate方法會調用SQLExceptionSubclassTranslator或者SQLStateSQLExceptionTranslator的translate的方法轉譯這個異常。

在SQLErrorCodeSQLExceptionTranslator轉譯異常的過程中,我們可以在兩個地方插入自定義的轉譯異常:
1、在customTranslate(String task, String sql, SQLException sqlEx)方法中,通過子類化SQLErrorCodeSQLExceptionTranslator,重寫該方法。
2、在classpath下提供sql-error-codes.xml文件。
下面是使用這兩種方式進行自定義轉譯的具體實施情況。
1、擴展SQLErrorCodeSQLExceptionTranslator
該方法最直接有效,卻不夠方便,需要子類化并且覆寫它的customTranslate方法,

package com.google.spring.jdbc;import java.sql.SQLException;import org.springframework.dao.DataAccessException; import org.springframework.dao.UncategorizedDataAccessException; import org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator;public class SimpleSQLErrorCodeSQLExceptinTranslator extends SQLErrorCodeSQLExceptionTranslator {@Overrideprotected DataAccessException customTranslate(String task, String sql, SQLException sqlEx) {if(sqlEx.getErrorCode()==111){StringBuilder builder = new StringBuilder();builder.append("unexpected data access exception raised when executing ");builder.append(task);builder.append(" with SQL>");builder.append(sql);return new UnknownUncategorizedDataAccessException(builder.toString(),sqlEx);}return null;}private class UnknownUncategorizedDataAccessException extends UncategorizedDataAccessException{public UnknownUncategorizedDataAccessException(String msg, Throwable cause) {super(msg, cause);}} }

在這里,假設當數據庫返回的錯誤代碼為111的時候,將拋出UnknownUncategorizedDataAccessException類型的異常(或者是其它自定義的DataAccessException)除此之外,返回null以保證其它的異常轉譯依然采用超類的邏輯進行。
為了能使自定義的轉譯其作用,我們需要讓JdbcTemplate使用我們的SimpleSQLErrorCodeSQLExceptinTranslator,而不是默認的SQLErrorCodeSQLExceptionTranslator,所以,需要如下代碼所示,將SimpleSQLErrorCodeSQLExceptinTranslator設置給JdbcTemplate:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");JdbcTemplate jdbc = (JdbcTemplate)applicationContext.getBean("jdbc");DataSource dataSource = (DataSource)applicationContext.getBean("dataSource");SimpleSQLErrorCodeSQLExceptinTranslator simpleSQLErrorCodeSQLExceptinTranslator = new SimpleSQLErrorCodeSQLExceptinTranslator();simpleSQLErrorCodeSQLExceptinTranslator.setDataSource(dataSource);jdbc.setExceptionTranslator(simpleSQLErrorCodeSQLExceptinTranslator);在classpath下放置一個sql-error-codes.xml文件,格式要與默認的文件格式相同。

實際上,它就是一個基本的基于DTD的Spring IOC容器的配置文件,只不過class是固定的。該配置文件對每個數據庫類型均提供了一個org.springframework.jdbc.support.SQLErrorCodes的定義。假若我們有另外一個數據庫AnotherDb,要擴展該轉譯,我們有兩種方式:
1、

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans><bean id="AnotherDB" class="org.springframework.jdbc.support.SQLErrorCodes"><property name="databaseProductName"><value>AnotherDB*</value></property><property name="badSqlGrammarCodes"><value>001</value></property><property name="dataIntegrityViolationCodes"><value>002</value></property><property name="dataAccessResourceFailureCodes"><value>0031,0032</value></property><property name="transientDataAccessResourceCodes"><value>004</value></property><property name="deadlockLoserCodes"><value>0051,0052</value></property></bean> </beans>


2、設置customTranslations屬性:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"><beans><bean id="AnotherDB" class="org.springframework.jdbc.support.SQLErrorCodes"><property name="databaseProductName"><value>AnotherDB*</value></property><property name="customTranslations"><list><bean class="org.springframework.jdbc.support.CustomSQLErrorCodesTranslation"><property name="errorCodes">111</property><property name="exceptionClass">org.springframework.dao.IncorrectResultSizeDataAccessException</property></bean></list></property></bean> </beans>

至此,spring的異常轉譯部分全部分析完畢!

轉載于:https://my.oschina.net/u/218421/blog/38576

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Spring JDBC最佳实践(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

三级小视频在线观看 | 中文在线 | 免费看黄色小说的网站 | 在线观看av小说 | 在线观看免费视频你懂的 | 国产精品一区二区在线免费观看 | 成人在线观看免费视频 | 99爱精品在线 | japanesexxx乱女另类 | 国产精品欧美久久久久久 | 毛片黄色一级 | 9在线观看免费高清完整 | 亚洲精品99久久久久中文字幕 | 99视频免费在线观看 | 亚洲国产福利视频 | 免费开视频 | 国产天天爽 | 亚洲jizzjizz日本少妇 | 99国产精品视频免费观看一公开 | 亚洲综合色激情五月 | 国产精品一区二区三区四区在线观看 | 亚洲高清在线精品 | .精品久久久麻豆国产精品 亚洲va欧美 | 人人舔人人| 午夜色婷婷 | 国产91精品欧美 | 91传媒在线播放 | 怡红院久久 | 日韩精品一区二区三区视频播放 | 国产精品毛片久久久 | 成年人在线免费看视频 | 久久国产精品久久久久 | 午夜精品久久久久久久久久久久久久 | 精品91久久久久 | 丁香激情综合久久伊人久久 | 特级黄色一级 | 婷婷激情5月天 | 亚洲a资源 | 色婷婷激情 | 黄色三级免费网址 | 五月天六月丁香 | 日韩电影精品一区 | 精品成人网 | 最近日本中文字幕a | 三级av在线 | 天天色天天搞 | 久久99精品波多结衣一区 | 伊人伊成久久人综合网小说 | 色综合久久中文综合久久牛 | 国产福利一区二区在线 | 四虎国产精品免费观看视频优播 | 国产成本人视频在线观看 | 99色婷婷| 亚洲国产精彩中文乱码av | 久久久久久中文字幕 | 天天操天天干天天爽 | 久久精品99精品国产香蕉 | 国产剧情在线一区 | 国产精品女同一区二区三区久久夜 | 国产成人精品久久亚洲高清不卡 | 欧美精品一区在线发布 | 777久久久| 成人教育av | 亚洲精选视频在线 | 全黄网站 | 欧美一级免费黄色片 | 不卡视频国产 | 在线观看av中文字幕 | 精品国产乱码久久久久久久 | 97在线观看免费视频 | 99免费在线视频观看 | 日韩成人精品一区二区三区 | 九九热视频在线 | 天天躁天天操 | 日韩av图片 | 99精品免费| 激情伊人五月天久久综合 | 日韩在线不卡视频 | 偷拍福利视频一区二区三区 | 狠狠gao| 亚洲九九九在线观看 | 中文国产字幕 | 中文字幕在线免费观看视频 | 免费大片黄在线 | 六月丁香激情网 | 手机看片99 | 国产日韩亚洲 | 9在线观看免费高清完整版 玖玖爱免费视频 | 国产精品福利久久久 | 欧美日韩精品免费观看 | 国产一级片免费观看 | 成人午夜电影网站 | 国产久草在线观看 | 天天操夜夜操天天射 | 色丁香色婷婷 | 中文字幕在线看视频国产 | 国产综合91 | 日韩高清一 | 久久精品国产一区 | 国产手机视频在线播放 | 在线韩国电影免费观影完整版 | 久久久九色精品国产一区二区三区 | 精品1区2区| 国产精品免费久久久久久 | 97超碰资源总站 | 黄色三级久久 | 7777精品伊人久久久大香线蕉 | 一区二区三区免费 | 日韩欧美在线高清 | 久久国产成人午夜av影院宅 | 在线免费av网 | 国产男女免费完整视频 | 免费三级黄 | 国产区第一页 | 521色香蕉网站在线观看 | 射射射av | 日本最新一区二区三区 | 亚洲精品国产精品乱码在线观看 | 超碰在线天天 | 国产日韩在线看 | 色婷婷亚洲综合 | 国产精品 日韩精品 | 国产午夜精品免费一区二区三区视频 | 国产精品mv在线观看 | 国产视频一级 | 国产亚洲视频中文字幕视频 | 国产色视频网站2 | 97超碰人人澡 | 麻豆免费视频观看 | 精品视频123区在线观看 | 成人亚洲网 | 日韩精品在线视频免费观看 | 美女久久久久久久久久久 | 国产天天综合 | 91夫妻视频| 国产一级在线看 | 国产黄在线 | 国产在线日韩 | 黄色三级免费看 | 黄色亚洲片 | www黄色com| 欧美激情第十页 | 狠狠操在线 | 久久精品美女视频网站 | 国产亚洲精品久久久久久大师 | 日本黄色免费播放 | 你操综合 | 国产成人精品网站 | 久久婷婷综合激情 | 亚洲成人精品在线观看 | 色丁香婷婷 | 欧美最猛性xxxxx免费 | 中文字幕在线资源 | 97在线看片 | 亚洲精品福利在线观看 | 色先锋资源网 | 欧美另类高潮 | 毛片一级免费一级 | av免费黄色| 免费国产黄线在线观看视频 | 久久久精品国产一区二区 | 一本一道久久a久久综合蜜桃 | 亚洲第一色 | 国产91精品在线观看 | 成人一级在线观看 | 天天色宗合 | 亚洲精品av中文字幕在线在线 | 国产亚洲人成网站在线观看 | 天天草天天色 | 成片免费观看视频大全 | 激情欧美一区二区免费视频 | 久草电影在线观看 | 欧美色综合天天久久综合精品 | 久久成人精品电影 | 亚洲伦理一区二区 | 五月天丁香亚洲 | 日本精品免费看 | 中文字幕日本在线观看 | 成人免费在线播放视频 | 高清免费在线视频 | 午夜美女wwww | 日韩在线观看视频一区二区三区 | 免费视频久久 | 久久理论电影 | 欧美久久久久久久久久久 | 在线观看日本高清mv视频 | 久草a视频 | 成人小视频在线观看免费 | 手机av在线不卡 | 国产三级精品三级在线观看 | 99视频精品 | 国产二级视频 | 国产91亚洲精品 | 亚洲砖区区免费 | 99超碰在线观看 | 亚洲成人高清在线 | 日韩在线视频精品 | 一本一本久久a久久精品综合妖精 | 丁香在线观看完整电影视频 | 国产精品久久久久久久久久久久午 | 国产区欧美 | 欧美亚洲免费在线一区 | 一区二区视频欧美 | 色姑娘综合 | 丁香综合| 天天干天天操天天入 | 国语自产偷拍精品视频偷 | 天天插伊人 | 色综合久久久久综合体 | 中文字幕一区二区三区久久 | 九九色在线观看 | 久久久综合香蕉尹人综合网 | 久久综合九色99 | 精品自拍av| 日本精品xxxx | 成 人 黄 色 视频 免费观看 | 午夜天天操| 男女全黄一级一级高潮免费看 | 青青草国产精品 | 久久免费视频这里只有精品 | 久久精品屋 | av成年人电影 | 日韩欧美精品免费 | 亚洲另类视频在线观看 | 激情婷婷综合网 | 日韩a免费 | 欧美精品久久久久 | 国产一级片网站 | 天天爽天天做 | 91麻豆看国产在线紧急地址 | 在线国产观看 | 日韩久久一区 | 91成人在线看 | 夜添久久精品亚洲国产精品 | 能在线观看的日韩av | 在线导航av | 日韩久久精品一区二区三区下载 | 免费观看一区二区 | 在线观看免费日韩 | 福利片视频区 | 操操操com| 久久精品一二三区白丝高潮 | 欧美精品久久久久久久 | 香蕉视频在线网站 | 久久人网 | 一级片黄色片网站 | 久久久伊人网 | 午夜三级理论 | 97成人精品视频在线观看 | 国产亚洲精品无 | 亚洲国产中文字幕在线观看 | 国产精品h在线观看 | 欧洲视频一区 | 成人精品久久久 | 成人午夜毛片 | 69久久久 | 亚洲资源| 九草在线观看 | 亚洲区色| 久久久久一区二区三区四区 | av一区二区在线观看中文字幕 | 欧美极品一区二区三区 | 久久久精品一区二区 | 久久精品国产一区二区 | 国产精品免费观看国产网曝瓜 | 国产v亚洲v| 久久国产二区 | 国内精品久久久久影院男同志 | 99久久精品日本一区二区免费 | 一区二区视频播放 | 黄色在线视频网址 | 国产91成人在在线播放 | www日韩| 亚洲va天堂va欧美ⅴa在线 | 激情久久久久久久久久久久久久久久 | 黄色软件在线观看免费 | 亚洲成a人片77777潘金莲 | 日本电影久久 | 国产第一福利 | 成人三级黄色 | 中文字幕在线观看第一区 | a级国产片 | 在线看国产视频 | 中文字幕在线网址 | 黄色一级在线观看 | 中文字幕在线不卡国产视频 | 成人在线免费视频 | 91在线91拍拍在线91 | 久久精品一区二区三区四区 | 五月宗合网 | 国产伦精品一区二区三区无广告 | 在线91网 | 美女视频黄频 | 狠狠干 狠狠操 | 成人a毛片 | 色婷婷99 | 最近更新的中文字幕 | 亚洲日本在线视频观看 | 亚洲精选久久 | 久操视频在线播放 | 亚洲精品国精品久久99热一 | 日韩精品无码一区二区三区 | 国产成人精品久久久 | 亚洲精品午夜aaa久久久 | 国产呻吟在线 | 日韩夜夜爽 | 欧美日韩国产精品一区二区 | 99久久夜色精品国产亚洲 | 国产精品美女久久久 | 亚洲精品国产成人av在线 | www激情网 | 四虎影视精品永久在线观看 | 少妇bbbb搡bbbb桶 | 成人福利av | 超碰.com| 久久久黄色免费网站 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产精品毛片一区视频 | 成人丝袜 | 亚洲国产欧美一区二区三区丁香婷 | 欧美中文字幕第一页 | 欧美 亚洲 另类 激情 另类 | 国产视频91在线 | 热re99久久精品国产99热 | a级国产乱理论片在线观看 特级毛片在线观看 | 久久免费视频这里只有精品 | 91精品在线免费观看视频 | 夜夜夜精品| 亚洲一级性 | 黄色高清视频在线观看 | 国产999精品久久久久久绿帽 | 97品白浆高清久久久久久 | 色婷婷狠狠五月综合天色拍 | 亚洲高清91 | 成人免费网站在线观看 | 欧美一级电影免费观看 | 国产黑丝一区二区三区 | 国产在线a | 免费aa大片 | 日韩免费视频一区二区 | 国产亚洲欧美精品久久久久久 | 最近中文字幕在线 | 免费日韩精品 | 在线播放一区二区三区 | www.久久com | 最新av在线播放 | 国产黄在线 | 香蕉97视频观看在线观看 | 久久99国产精品久久99 | 色噜噜日韩精品一区二区三区视频 | 国产久草在线观看 | 国产亚洲精品久久久久久大师 | 免费一级黄色 | 亚洲精品小视频 | 久久这里只有精品首页 | 九九涩涩av台湾日本热热 | 欧美日韩91| 不卡的av在线播放 | 四虎永久网站 | 国产精品一区二区久久国产 | 日日干夜夜操视频 | 亚洲视频精品 | 中文字幕在线一二 | 婷婷av综合 | 超碰日韩在线 | a视频免费 | 九九九九热精品免费视频点播观看 | 91精品久久久久久久久久久久久 | 丁香在线观看完整电影视频 | 日韩精品电影在线播放 | 青青视频一区 | 婷婷激情在线观看 | 日本久久电影网 | 日韩精品 在线视频 | 久久午夜影院 | 天天干天天怕 | 精品中文字幕在线观看 | 亚洲精品视频在线观看网站 | 国产精品成人自拍 | 成人黄色在线电影 | 欧美日韩在线精品 | 开心丁香婷婷深爱五月 | 国产美腿白丝袜足在线av | 91亚洲视频在线观看 | 精品一区二区在线观看 | 一级黄视频 | 日韩中字在线 | 黄网av在线 | 国产一二三区av | 国产精品久久久久久久午夜片 | 美女网站色免费 | 五月婷婷激情综合网 | 国产一区二区日本 | 岛国av在线 | 中文字幕在线观看免费观看 | 国产女v资源在线观看 | 9999免费视频 | 日本爱爱片 | 91精品久久久久久粉嫩 | 国产一区视频在线播放 | 久久精品中文字幕一区二区三区 | 999久久久久久 | 在线婷婷| 有码中文字幕 | 日韩精品1区2区 | a黄色片 | 婷婷丁香六月 | 中文字幕在线看 | 99久热在线精品视频成人一区 | 不卡av电影在线观看 | 久久久精品视频成人 | 精品久久亚洲 | 精品国产乱码久久久久久1区二区 | 国产高清在线免费 | 911久久香蕉国产线看观看 | 欧美另类一二三四区 | 日韩欧美视频一区 | 国产精品美乳一区二区免费 | 久久精品视频网站 | 激情五月婷婷综合 | 欧美国产日韩在线观看 | 精品国产不卡 | 一区二区三区中文字幕在线观看 | 最新真实国产在线视频 | 美女视频网 | 国产成人精品综合 | 久久99国产精品视频 | 午夜成人影视 | 亚洲精品乱码久久久久久蜜桃欧美 | 午夜10000 | 99九九免费视频 | 日韩欧在线 | 国产色小视频 | 98久久| 91精品一区二区三区久久久久久 | 欧美久久久影院 | 日韩二区精品 | 99精品国产成人一区二区 | 欧美日韩精品在线观看 | 黄污视频网站大全 | 最近中文字幕高清字幕在线视频 | 黄色网址在线播放 | 亚洲欧洲日韩 | 国产一级大片在线观看 | 黄色大全在线观看 | 在线观看mv的中文字幕网站 | 亚洲综合视频在线播放 | 超级av在线| 91高清在线 | 婷婷久久亚洲 | 99视频精品在线 | 不卡av电影在线 | 国产精品一区欧美 | 91av电影在线观看 | 欧美午夜精品久久久久久浪潮 | 九色91福利 | 久久免费视频一区 | 91精品无人成人www | 99国产在线 | 精品国偷自产在线 | 欧美日韩国产在线观看 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 在线看黄色的网站 | 超碰在线公开 | 91麻豆精品国产91久久久无限制版 | 91视频麻豆 | 天天天插 | 欧美综合干 | 免费看的黄色 | 日韩一区二区三区高清在线观看 | 亚洲污视频 | 久久精品国产v日韩v亚洲 | 国产高清在线一区 | 丁香婷婷成人 | 国产黄色片免费观看 | 丁香激情综合 | 三级免费黄 | 久久久精华网 | 国产精品自产拍在线观看网站 | 精品999在线观看 | 91视频午夜| 综合在线观看色 | 狠狠躁日日躁 | 欧美久久久 | 欧美日韩不卡在线观看 | 激情久久网 | 亚洲影院国产 | 在线观看国产一区二区 | 国产不卡在线观看 | 99热这里只有精品国产首页 | 欧美性精品 | 成人永久免费 | 天干啦夜天干天干在线线 | 婷婷性综合 | 欧美日韩网站 | 在线a视频 | 超碰人人做 | 中文字幕频道 | 国产污视频在线观看 | 精品国产一区二区三区久久影院 | 精品国产一区二区三区在线 | 九九视频精品在线 | 综合网伊人 | 欧洲亚洲激情 | 久久精品视频免费播放 | 国产成人av免费在线观看 | www黄色大片 | 亚洲成人精品久久久 | 日韩精品无码一区二区三区 | 黄色成人av | 国产区精品区 | 成人性生交大片免费观看网站 | 成人免费一级片 | 五月婷婷综合在线视频 | 国产亚洲欧洲 | 国产99久久久精品视频 | 久久精品欧美日韩精品 | 在线观看亚洲 | 国产精品一区一区三区 | 成人 亚洲 欧美 | 一本色道久久精品 | 九九九热精品免费视频观看网站 | 激情综合六月 | 久久综合视频网 | 中文字幕刺激在线 | 中文字幕在线观看网址 | 午夜久久福利视频 | 在线观看中文字幕 | 综合天天 | 青青河边草观看完整版高清 | 亚洲精品综合一区二区 | 狠狠色噜噜狠狠狠狠2022 | 日韩精品视频在线观看网址 | 黄色av影院 | 日韩免费中文字幕 | www.夜夜爽 | 亚洲国产精品影院 | 成人午夜网 | 丝袜足交在线 | 国产一区成人在线 | 国产精品一区二区三区视频免费 | 亚洲视频每日更新 | 黄色三级视频片 | 国产精品久久久久久久毛片 | av一区在线 | 国产亚洲精品美女 | 特级a老妇做爰全过程 | 国内精品久久久久影院男同志 | 国产精品九九九九九 | 天天插天天狠天天透 | 国产黄色片一级 | 久久久久久免费毛片精品 | 久久av网址 | 91av在线视频播放 | 日本性生活一级片 | 久久亚洲精品国产亚洲老地址 | 婷婷丁香色 | 久久久首页| 欧美一级在线观看视频 | 色永久免费视频 | 精品久久久久一区二区国产 | 亚洲精品成人在线 | 黄毛片在线观看 | 五月综合网站 | 欧美日韩不卡一区 | 欧洲精品一区二区 | 日韩r级电影在线观看 | 97超在线| 一区二区三区四区精品 | 亚洲黄色成人网 | 亚洲丝袜一区二区 | www.亚洲| 国产一区高清在线观看 | 成人免费视频免费观看 | 成人av一区二区兰花在线播放 | 国产一二三区在线观看 | 日本一区二区三区视频在线播放 | 亚洲欧美激情插 | 国产馆在线播放 | 狠狠狠狠狠狠狠狠 | aaa日本高清在线播放免费观看 | 亚洲在线色 | 久久99久国产精品黄毛片入口 | 青青视频一区 | 亚洲精品色视频 | 日韩av男人的天堂 | 久久精品人人做人人综合老师 | 亚洲综合视频在线观看 | 国产伦精品一区二区三区高清 | 亚州av一区 | 日韩av电影中文字幕在线观看 | 99 国产精品 | 97超级碰碰碰碰久久久久 | 国产精品不卡 | 免费观看高清 | 91免费黄视频 | av一本久道久久波多野结衣 | 欧美精品国产综合久久 | 国产婷婷一区二区 | 亚洲精品黄 | 久久精品影片 | 玖玖玖在线观看 | 日本中文字幕在线看 | 免费在线黄色av | 91黄色免费看 | 日韩免费一区 | 丁香九月激情 | 麻豆视传媒官网免费观看 | 国产97免费 | 欧美日韩在线视频一区二区 | 麻豆视频免费版 | 日韩精品第1页 | 91精品一区二区三区蜜臀 | 中文电影网 | av888.com | 一区 二区电影免费在线观看 | 久久国产电影院 | 久久免费成人精品视频 | 草久热 | 黄色电影网站在线观看 | 狠狠躁夜夜a产精品视频 | 欧美日韩另类在线观看 | 一区二区精品在线 | 精品美女在线观看 | 国产男女无遮挡猛进猛出在线观看 | 欧美人人 | 九九99靖品 | 久久综合九色欧美综合狠狠 | 国产夫妻性生活自拍 | 日韩精品一区二区三区视频播放 | 一色屋精品视频在线观看 | 精品免费观看视频 | 久久涩视频| 久久久久婷 | 亚洲一区二区天堂 | 久久久久女人精品毛片九一 | 国产综合在线观看视频 | 成 人 黄 色 视频播放1 | av大片免费| 黄色资源网站 | 亚洲一级性 | 国产一在线精品一区在线观看 | 色婷婷在线视频 | 波多野结衣亚洲一区二区 | 午夜视频久久久 | 99热官网| 手机成人在线 | 激情偷乱人伦小说视频在线观看 | 特及黄色片| 91丨九色丨高潮 | www五月 | 超碰人人av | 午夜精品视频一区 | 视频在线99re | 国产精品爽爽爽 | 国内揄拍国内精品 | 缴情综合网五月天 | 日日夜夜骑 | 日本黄色黄网站 | 欧美一进一出抽搐大尺度视频 | 精品视频免费在线 | 国产精品第 | 欧美成人aa | 国产成人av在线影院 | 国产精品专区在线 | 黄网在线免费观看 | 亚洲国产精品传媒在线观看 | 四虎在线免费观看视频 | 狠狠操欧美| 成人黄在线| 久久精品视频网 | 手机av资源 | 免费在线观看午夜视频 | 一二三区av | 99久视频 | 国产美女精品久久久 | 五月天色网站 | 91九色国产蝌蚪 | 精品久久亚洲 | 久久国产福利 | 国产伦精品一区二区三区在线 | 国产裸体视频网站 | 婷婷激情综合五月天 | 91九色最新地址 | 天天操天天射天天爽 | 免费视频一二三 | 国产精品久久久久久久午夜 | 国产亚洲免费观看 | 久精品在线观看 | 成人午夜剧场在线观看 | 正在播放五月婷婷狠狠干 | 97免费在线视频 | 精品国产伦一区二区三区观看体验 | 丁香婷五月 | 国产涩图 | 中文字幕色网站 | 久久天天躁夜夜躁狠狠85麻豆 | 亚洲精品乱码久久久久久按摩 | 国产精品久久久久久久午夜 | 国产在线p| 天天综合网 天天 | 又黄又爽又湿又无遮挡的在线视频 | 久久久久久久久久久高潮一区二区 | 欧美调教网站 | 国产高清视频在线播放一区 | 色www精品视频在线观看 | 在线观看亚洲 | 国产精品igao视频网网址 | 婷婷精品国产一区二区三区日韩 | 深爱婷婷激情 | 国产伦精品一区二区三区免费 | 激情综合色综合久久综合 | 日韩精品在线视频免费观看 | 1024手机基地在线观看 | 在线观看的av网站 | 国产精品v a免费视频 | 精品a视频 | 三级av免费观看 | 中文字幕亚洲精品在线观看 | 欧美精品久久久久久 | 午夜三级福利 | 国产在线欧美日韩 | 日韩在线观看电影 | 在线免费视频a | 久久只有精品 | 天堂av网址| 色偷偷网站视频 | 国产精品免费在线 | 久久久免费毛片 | 日韩av中文在线 | 天天操天天操天天操天天操天天操天天操 | 欧美久久久影院 | 国产精品1区 | 婷婷av网站 | 国产一二三四在线观看视频 | 99热手机在线观看 | 91在线小视频 | 超碰免费成人 | 天天操天天爽天天干 | 欧美国产日韩一区二区三区 | 免费看片成人 | av三级在线看| 五月婷婷丁香六月 | 色综合夜色一区 | 9999精品免费视频 | 国产日本在线播放 | 99久久精品免费看国产免费软件 | 欧美日韩国产色综合一二三四 | 成人午夜影院在线观看 | 日韩在线一二三区 | 极品中文字幕 | 色姑娘综合天天 | 色鬼综合网 | 免费亚洲婷婷 | 在线观看一区 | 国产精品资源在线 | 国产在线国偷精品产拍 | 久久久人 | 69绿帽绿奴3pvideos | 人人射 | 欧美片一区二区三区 | 99久久婷婷国产一区二区三区 | 欧美性生交大片免网 | 国产精品久久久久久五月尺 | 日韩在线观看第一页 | 中文字幕av全部资源www中文字幕在线观看 | 五月天色网站 | 久久99精品视频 | 国内精品久久久久国产 | 亚洲一区精品人人爽人人躁 | 亚洲女人天堂成人av在线 | 久久精久久精 | 97在线观看免费高清完整版在线观看 | 日本中文字幕网 | 九九热1| 亚洲精品视频在线观看视频 | 国产一级二级视频 | 国产理论免费 | 成人a级黄色片 | 久久久91精品国产一区二区精品 | 日韩有码第一页 | 久久亚洲欧美 | 亚洲精选视频在线 | 国产黄色片一级 | 国产精品永久免费视频 | 最近更新好看的中文字幕 | 亚洲涩涩网站 | 久久久久久久免费观看 | 在线免费观看视频一区二区三区 | 香蕉国产91 | 97视频人人 | 91免费观看| 欧美精品视 | 人人爱天天操 | 精品久久久亚洲 | 99久久久久久 | 欧美日韩精品网站 | 蜜臀久久99精品久久久酒店新书 | 黄色成人小视频 | 日韩精品黄 | 成人久久久久久久久久 | 欧美日韩在线视频一区 | 国产精品久久久久久久免费大片 | 97国产大学生情侣白嫩酒店 | 91.精品高清在线观看 | 色爽网站 | 字幕网在线观看 | 狠狠躁日日躁夜夜躁av | 国产一卡久久电影永久 | 亚洲免费不卡 | 亚洲午夜大片 | 成人91免费视频 | 天天操天天干天天插 | 亚洲精品视频在线观看网站 | 国产精品一区二区免费 | 亚洲小视频在线观看 | av在线日韩 | 国产二级视频 | 2021国产在线视频 | 成人国产一区 | 日韩天堂在线观看 | www一起操| 成人av在线看 | 超碰在线9 | 久久夜夜夜 | 亚洲精品欧美专区 | 国产精品久久久久一区二区三区 | 国产日韩欧美在线影视 | 人人插人人费 | 国产精品毛片一区二区 | 成人av观看 | 亚洲精品自在在线观看 | 伊人超碰在线 | av黄在线播放 | 97在线影院| 国产一级二级视频 | 久久这里只有精品9 | www.香蕉视频在线观看 | 亚洲综合色激情五月 | 777视频在线观看 | 99热这里只有精品免费 | 久久精品国产亚洲精品2020 | 免费男女羞羞的视频网站中文字幕 | 欧美天天射| 亚洲视频 一区 | 成年人黄色免费看 | 久久精品久久精品久久 | 日韩视频免费在线观看 | 日韩美女免费线视频 | 九九av | 日本中文字幕系列 | 免费视频a | 久久精品福利视频 | 成人亚洲网 | 中文字幕免费高 | 91亚洲欧美激情 | 久久亚洲二区 | 欧美性生活一级片 | 99热最新在线 | 久久黄色网页 | 91在线中文字幕 | 国产精品国产三级国产aⅴ入口 | 欧美另类高潮 | 丁香婷婷色月天 | 日韩电影一区二区三区 | 久热国产视频 | 91免费日韩 | 亚洲 欧美 日韩 综合 | 91视频在线看 | 五月婷婷丁香在线观看 | 中文字幕2021 | 日韩二三区 | 国产精品久久久久久久av电影 | 二区三区在线 | 在线免费av播放 | 观看免费av | 久久久久人人 | 日韩精品视频一二三 | 狠狠操夜夜 | 久久久久久久久久久久久国产精品 | 久久久久色 | 精品在线看 | 国产成人久久av | 黄色网www | 天天曰天天射 | 8x成人免费视频 | 视频在线一区 | 一区二区三区免费在线观看视频 | 国产精品久久久久久久久软件 | 五月婷婷黄色 | 超碰人人干人人 | 久久视频中文字幕 | 国产精品久久一区二区三区不卡 | 少妇按摩av| 在线观看 国产 | 欧美另类网站 | 成人a v视频 | 91福利在线观看 | 亚洲视频在线免费看 | 丝袜美腿亚洲综合 | 三级黄色片在线观看 | 国产精品99久久久久久宅男 | 丁香五婷 | 一区二区三区电影在线播 | 激情影院在线观看 | 国产成人一区二区三区久久精品 | 国产精品k频道 | 亚洲欧洲国产日韩精品 | 欧美日韩p片| 久久久久成人免费 | 欧美激情第八页 | 久久99婷婷 | 国产又粗又硬又爽视频 | 国产一区二区三精品久久久无广告 | 五月天高清欧美mv | 中日韩三级视频 | 亚洲视频免费在线 | 国产精品久久久久av福利动漫 | 久草在线中文视频 | 日韩欧美视频 | 99综合视频| 日韩动态视频 | 欧美日韩在线播放一区 | 毛片永久新网址首页 | 麻豆国产精品永久免费视频 | 在线免费观看麻豆视频 | 国产黄色视| 成人综合日日夜夜 | 久久国产免 | 人人爽人人| 亚洲欧洲视频 | 久久久久久久看片 | 国产尤物视频在线 | av免费电影在线 | 成人不用播放器 | 欧美精品一区二区三区一线天视频 | 亚洲黄色免费网站 | 精品欧美在线视频 | 九月婷婷人人澡人人添人人爽 | 成人小视频在线播放 | 日韩一区精品 | 国产高清免费观看 | 亚洲乱码在线观看 | 五月婷婷欧美视频 | 久久在线视频精品 | 色先锋av资源中文字幕 | 日韩视频1 | 亚洲资源在线网 | 麻豆影视网 | 少妇av网 | 国产精品1024 | 国产亚洲精品久久久久久 | 欧美精品一区二区蜜臀亚洲 | 亚洲伊人成综合网 | 这里只有精品视频在线 | 99久久精品国产观看 | 久精品在线观看 | 国产1区2区3区精品美女 | 国产亚洲一区二区三区 | 免费在线成人av | 91精品秘密在线观看 | 国产视频久久 | 欧美伦理电影一区二区 | 亚洲电影一级黄 | 国产最新在线 | 久久蜜桃av | 国产 日韩 欧美 在线 | 国产对白av| 日韩免费在线视频观看 | 国产精品久久久av久久久 | 91亚洲精品在线 | 国产视频在线播放 | 亚洲视频综合 | 91女神的呻吟细腰翘臀美女 | 9在线观看免费高清完整版在线观看明 | 在线视频欧美日韩 | 一区二区影院 | 色婷婷综合久久久中文字幕 | 日韩在线电影观看 | 亚洲四虎| 国产高清视频在线 | 中文字幕在线不卡国产视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 黄色的网站免费看 | 午夜久久久影院 | 亚洲精品tv久久久久久久久久 | zzijzzij日本成熟少妇 | 操操操操网 | 99色视频 | 在线不卡中文字幕播放 | 日韩r级在线 | 99精品视频免费观看视频 | 天天摸天天干天天操天天射 | 丁香免费视频 | 国产一级片免费观看 | 欧美一二三区播放 | 97av在线视频免费播放 | 又色又爽又激情的59视频 |