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

Spring Boot 內置八種控制數據庫連接方式

開發 前端
DataSourceTransactionManager 類是針對單個 JDBC DataSource 的 PlatformTransactionManager 實現。它將從指定的 DataSource 中獲取的 JDBC 連接綁定到當前正在執行的線程,從而可能為每個 DataSource 提供一個線程綁定的連接。

環境:SpringBoot3.4.2

1. 簡介

Spring框架管理數據庫連接的核心目標是確保高效、安全且與事務緊密集成地使用這一關鍵資源。它抽象了底層連接獲取和釋放的復雜性。

關鍵在于連接的生命周期管理:Spring提倡在需要時獲取連接,使用后及時釋放回池(或關閉),避免資源泄漏。更重要的是,它實現了連接與當前執行線程的綁定,尤其是在事務上下文中。這確保了同一事務內的多個數據庫操作共享同一個物理連接,從而保證了操作的原子性和一致性(ACID)。

Spring通過其事務管理基礎設施自動協調連接的獲取、綁定、提交/回滾和釋放。開發者通常無需手動處理連接細節,只需關注業務邏輯和聲明式事務(如@Transactional),框架會透明地處理連接的查找、復用和清理,顯著簡化了開發并提高了可靠性和性能。

接下來,我們將介紹Spring內置的8種數據庫連接的控制方式。

2.實戰案例

2.1 使用DataSource

Spring 通過 DataSource 獲取與數據庫的連接。DataSource 是 JDBC 規范的一部分,是一個通用的連接工廠。它允許容器或框架將連接池和事務管理問題從應用程序代碼中隱藏起來。

我們可以使用第三方提供的連接池實現來配置自己的數據源。傳統的選擇包括 Apache Commons DBCP 和 C3P0;而對于現代的 JDBC 連接池,可以考慮使用 HikariCP 及其基于構建器的 API。

DriverManagerDataSource 和 SimpleDriverDataSource 類(包含在 Spring 發行版中)應僅用于測試目的!這些變體不提供連接池功能,在多個連接請求發生時性能較差。

如下是使用HikariCP數據源的配置:

@Configuration
public class DataSourceConfig {
  @Bean
  @ConfigurationProperties(prefix = "spring.datasource.hikari")
  HikariDataSource dataSource(DataSourceProperties properties) {
    return (HikariDataSource) DataSourceBuilder.create()
        .type(HikariDataSource.class)
        .driverClassName(properties.getDriverClassName())
        .url(properties.getUrl())
        .username(properties.getUsername())
        .password(properties.getPassword())
        .build() ;
  }
}

2.2 使用DataSourceUtils

DataSourceUtils 類是一個便捷且功能強大的輔助類,它提供了一些靜態方法,用于從 JNDI 獲取連接,并在必要時關閉連接。它支持與 DataSourceTransactionManager 綁定線程的 JDBC 連接,同時也支持與 JtaTransactionManager 和 JpaTransactionManager 的綁定。

需要注意的是,JdbcTemplate 在其內部實現中隱含地使用了 DataSourceUtils 來訪問連接。在每一次 JDBC 操作背后,JdbcTemplate 都會利用 DataSourceUtils,從而隱式地參與到正在進行的事務中。

如下使用示例:

public class UserRepository {
  private final DataSource dataSource;
  public UserRepository(DataSource dataSource) {
    this.dataSource = dataSource;
  }
  public void updateUserName(Long userId, String newName) {
    Connection conn = null;
    try {
      // 如果當前本身就在一個事務上下文中,那么這里獲取的連接將是當前已經綁定到上下文中的Connection對象
      conn = DataSourceUtils.getConnection(dataSource);
      try (PreparedStatement ps = conn.prepareStatement("UPDATE users SET name = ? WHERE id = ?")) {
        ps.setString(1, newName);
        ps.setLong(2, userId);
        ps.executeUpdate();
      }
    } catch (SQLException e) {
      throw new RuntimeException("Update failed", e);
    } finally {
      // 關鍵點:通過 DataSourceUtils 釋放連接(事務內不會真正關閉)
      DataSourceUtils.releaseConnection(conn, dataSource);
    }
  }
}

2.3 實現SmartDataSource接口

如果你有一個類,它的任務是給應用程序提供與數據庫的連接(就像是一個“數據庫連接供應商”),那么這個類可以考慮實現 SmartDataSource 接口。

SmartDataSource 接口是 DataSource 接口的一個“升級版”。DataSource 接口已經提供了獲取數據庫連接的基本功能,但 SmartDataSource 接口更進一步,它允許使用這個接口的類去詢問:“嘿,數據庫連接供應商,在我用完這個連接之后,你是否希望我把它還給你(也就是關閉它)?”

為什么這個功能有用呢?想象一下,你正在進行一系列的數據庫操作,這些操作都需要用到同一個數據庫連接。如果你每次操作完都關閉連接,然后再重新獲取一個新的連接,那就會很浪費時間,也很低效。但是,如果你知道接下來還要用這個連接,你就可以告訴連接供應商:“我現在不用關閉它,我接下來還要用?!?/p>

所以,SmartDataSource 接口就是給數據庫連接供應商提供了一個“智能”的選擇,讓它們可以根據情況決定是否要關閉連接。當你知道你需要重用連接時,這個功能就特別有用,因為它能幫你節省時間和資源。

接口簽名如下:

public interface SmartDataSource extends DataSource {
  // 詢問是否要關閉連接
  boolean shouldClose(Connection con);
}

上面介紹的DataSourceUtils工具類,其在關閉連接時會判斷是否是SmartDataSource,代碼如下:

public abstract class DataSourceUtils {
  public static void doCloseConnection(Connection con, @Nullable DataSource dataSource) throws SQLException {
    if (!(dataSource instanceof SmartDataSource smartDataSource) 
      || smartDataSource.shouldClose(con)) {
      con.close();
    }
  }
}

2.4 繼承AbstractDataSource

AbstractDataSource 是 Spring 中 DataSource 實現的一個抽象基類。它實現了所有 DataSource 實現中通用的代碼。如果你打算編寫自己的 DataSource 實現,那么你應該擴展 AbstractDataSource 類。

如下代碼實現:

public class Pack extends AbstractDataSource {
  @Override
  public Connection getConnection() throws SQLException {
    return null;
  }
  @Override
  public Connection getConnection(String username, String password) throws SQLException {
    return null;
  }
}

我們只需要實現獲取Connection連接對象的核心方法即可。

通常我們可以在需要實現自己的數據源或是代理第三方數據源時使用。

2.5 使用SingleConnectionDataSource

SingleConnectionDataSource 類是 SmartDataSource 接口的一個實現,它封裝了一個單一的數據庫連接,并且這個連接在每次使用后不會被關閉。需要注意的是,它并不支持多線程。

如果有任何客戶端代碼在假設存在連接池的情況下調用了 close 方法(例如在使用持久化工具時),你應該將 suppressClose 屬性設置為 true。這個設置會返回一個關閉抑制代理(close-suppressing proxy),它會封裝實際的物理連接。

SingleConnectionDataSource 主要是一個用于測試的類。它通常與簡單的 JNDI 環境結合使用,以便在應用程序服務器之外輕松測試代碼。與 DriverManagerDataSource 相比,SingleConnectionDataSource 會一直重用同一個連接,從而避免了過多物理連接的創建。

如果你用過UReport一款web在線報表設計工具,那你可能知道SingleConnectionDataSource,該報表工具內部就是使用的該數據源。

2.6 使用DriverManagerDataSource

DriverManagerDataSource 類是標準 DataSource 接口的一個實現,它通過 bean 屬性來配置一個普通的 JDBC 驅動,并且每次都會返回一個新的連接。

這個實現對于在 Jakarta EE 容器之外的測試環境和獨立環境非常有用,既可以作為 Spring IoC 容器中的一個 DataSource bean,也可以與簡單的 JNDI 環境結合使用。假設存在連接池的 Connection.close() 調用會關閉連接,因此任何了解 DataSource 的持久化代碼都應該能夠正常工作。然而,即使在測試環境中,使用基于 JavaBean 風格的連接池(例如 commons-dbcp)也非常簡單,幾乎總是比使用 DriverManagerDataSource 更可取。

如下配置示例:

@Bean
DriverManagerDataSource dataSource() {
  DriverManagerDataSource dataSource = new DriverManagerDataSource() ;
  dataSource.setDriverClassName("org.hsqldb.jdbcDriver") ;
  dataSource.setUrl("jdbc:hsqldb:hsql://localhost:") ;
  dataSource.setUsername("sa") ;
  dataSource.setPassword("") ;
  return dataSource ;
}

提醒:注意使用環境。

2.7 使用TransactionAwareDataSourceProxy

TransactionAwareDataSourceProxy 是一個目標 DataSource 的代理類。這個代理類會包裝目標 DataSource,為其添加對 Spring 管理的事務的感知能力。

通常,除了在必須調用現有代碼并傳遞一個標準 JDBC DataSource 接口實現的情況下,很少需要使用這個類。

TransactionAwareDataSourceProxy 是 Spring 提供的數據源代理類,主要用于將非 Spring 管理的 JDBC 數據源包裝為支持 Spring 事務的代理對象。

如下使用示例:

@Configuration
public class LegacyIntegrationConfig {
  @Bean
  public DataSource realDataSource() {
    // 創建原始數據源(如 DBCP、HikariCP)
    return new HikariDataSource(...);
  }
  @Bean
  public TransactionAwareDataSourceProxy transactionAwareDataSource() {
    // 包裝原始數據源
    return new TransactionAwareDataSourceProxy(realDataSource());
  }
  @Bean
  public PlatformTransactionManager txManager() {
    // 事務管理器使用原始數據源
    return new DataSourceTransactionManager(realDataSource());
  }
  @Bean
  public LegacyDao legacyDao() {
    // 遺留代碼注入代理數據源
    return new LegacyDao(transactionAwareDataSource());
  }
}
// 遺留代碼(無法修改)
public class LegacyDao {
  private final DataSource dataSource;
  public LegacyDao(DataSource dataSource) {
    this.dataSource = dataSource;
  }
  public void updateData() throws SQLException {
    // 如果我們沒有使用代理,這里拿到的Connection一定不是由Spring事務管理的連接
    try (Connection conn = dataSource.getConnection()) {
      conn.prepareStatement("UPDATE t_product x SET x.name = 'xxxooo' WHERE x.id = 2").execute();
    }
  }
}
@Service
public class Service {
  private final LegacyDao legacyDao;
  // 此時我們就將遺留的代碼加入到了Spring管理的事務中
  // 這樣我們在updateData方法中獲取的Connection才受Spring事務管理
  @Transactional
  public void update() {
    this.legacyDao.updateData() ;
  }
}

2.8 使用DataSourceTransactionManager

DataSourceTransactionManager 類是針對單個 JDBC DataSource 的 PlatformTransactionManager 實現。它將從指定的 DataSource 中獲取的 JDBC 連接綁定到當前正在執行的線程,從而可能為每個 DataSource 提供一個線程綁定的連接。 

應用程序代碼需要通過 DataSourceUtils.getConnection(DataSource) 來獲取 JDBC 連接,而不是使用 Jarkarta EE 的標準 DataSource.getConnection 方法。

DataSourceTransactionManager 類支持保存點(PROPAGATION_NESTED)、自定義隔離級別以及適當應用為 JDBC 語句查詢超時的超時設置。為了支持后者,應用程序代碼必須使用 JdbcTemplate,或者為每個創建的語句調用 DataSourceUtils.applyTransactionTimeout(..) 方法。

如下代碼使用示例:

@Bean
public PlatformTransactionManager transactionManager(DataSource dataSource) {
  DataSourceTransactionManager txManager = new DataSourceTransactionManager();
  txManager.setDataSource(dataSource);
  txManager.setDefaultTimeout(10); // 默認超時30秒
  // 在這里我們可以做更多的配置了
  return txManager;
}

這在Spring Boot環境下將會覆蓋系統的默認事務管理器。

責任編輯:武曉燕 來源: Springboot全家桶實戰案例源碼
相關推薦

2025-06-06 07:38:49

2010-04-07 18:26:43

Oracle數據庫

2010-04-06 10:52:06

Oracle數據庫

2010-10-26 14:06:43

oracle連接遠程數

2011-03-21 12:51:16

Oracle數據庫表連接

2010-04-28 16:23:18

Oracle數據庫

2011-04-13 14:38:17

2024-01-10 08:17:50

HikariCP數據庫Spring

2022-02-17 11:03:33

數據庫基礎語法用法

2011-09-21 11:21:00

NoSQL

2021-06-29 17:19:44

Spring Boot集成Flyway

2011-06-08 11:15:21

web.configASP.NET

2018-09-27 15:58:06

MySQL數據庫性能優化

2011-03-25 09:05:02

Oracle數據庫共享連接專用連接

2010-10-26 16:07:45

連接oracle數據庫

2010-04-06 11:02:30

Oracle 數據庫

2010-07-27 14:33:24

DB2數據庫

2011-03-14 13:33:32

Oracle數據庫啟動

2020-09-02 13:22:28

IP訪問Oracle數據庫

2010-11-29 09:56:00

sybase數據庫備份
點贊
收藏

51CTO技術棧公眾號

h网站在线免费观看| 亚洲天堂一区在线| 日韩精品视频中文字幕| 亚洲精品乱码久久久久久久久 | 久久久久免费看黄a片app| 午夜一区在线观看| 麻豆成人免费电影| 欧美黄色小视频| av黄色免费网站| 国色天香久久精品国产一区| 精品成人国产在线观看男人呻吟| 日韩三级电影免费观看| 午夜久久久久久久久久| 丝袜美腿亚洲综合| 欧美黑人巨大精品一区二区| 男人的天堂官网| 国语一区二区三区| 欧美日韩精品欧美日韩精品| www.xxx麻豆| 老司机福利在线视频| 26uuu亚洲婷婷狠狠天堂| 亚洲va欧美va国产综合剧情| 伊人中文字幕在线观看| 欧美日韩午夜| 日韩在线小视频| 添女人荫蒂视频| 日韩中文字幕一区二区高清99| 日本韩国精品在线| 97超碰在线人人| 黄网页免费在线观看| 久久久久久影视| 成人午夜电影免费在线观看| 91成品人影院| 日日骚欧美日韩| 高清亚洲成在人网站天堂| 国产精品18在线| 亚洲成人一品| 亚洲国产精品高清久久久| 亚洲综合123| 福利一区二区三区视频在线观看| 色婷婷av久久久久久久| 欧美成人高潮一二区在线看| 性欧美videos高清hd4k| 国产精品久久精品日日| 茄子视频成人在线观看| 午夜视频在线播放| 不卡欧美aaaaa| 国产精品一区二区三区在线| 亚洲国产欧美另类| 国产成人精品三级麻豆| 亚洲xxxx视频| 精品人妻伦一二三区久久| 韩日av一区二区| 91精品在线一区| 国产农村妇女毛片精品| 国内不卡的二区三区中文字幕| 国产欧美一区二区三区在线看| 三级网站在线播放| 免费成人小视频| 国产精品综合网站| 91久久久久久久久久久久| 久久er99热精品一区二区| 国产色婷婷国产综合在线理论片a| 中文字幕精品在线观看| 久久精品国产999大香线蕉| 国产一区二区丝袜| 精品人妻无码一区二区三区蜜桃一| 国产美女精品人人做人人爽| a级国产乱理论片在线观看99| 精品人妻伦一二三区久久| 成人激情小说网站| 玖玖玖精品中文字幕| 成人网视频在线观看| 国产精品视频免费看| 玖玖精品在线视频| 岛国在线视频网站| 在线视频一区二区三区| 做a视频在线观看| 国产三级精品三级在线观看国产| 日韩精品免费在线| 91麻豆制片厂| 欧美三级不卡| 欧洲中文字幕国产精品| 国产精品午夜一区二区| 国产一区二区三区av电影| 国产精品久久久久久久久久久久冷| 日本波多野结衣在线| 久久久久久一级片| 天天做天天爱天天高潮| 精品极品在线| 欧美福利电影网| 性久久久久久久久久久| 日韩久久精品网| 欧美高清电影在线看| 国产精品一区无码| 国产麻豆精品久久一二三| 精品国产福利| 久久亚洲天堂| 欧美日韩午夜激情| 爽爽爽在线观看| 亚洲黄色录像| 欧美日韩高清在线观看| 波多野结衣大片| 国产69精品一区二区亚洲孕妇| 久久天天狠狠| 在线中文字幕电影| 欧美日韩一区国产| 你懂的在线观看网站| 99久久精品国产亚洲精品| 18一19gay欧美视频网站| 国产毛片在线视频| 欧美激情在线一区二区三区| 分分操这里只有精品| 欧美电影在线观看网站| 日韩av在线一区二区| 麻豆网址在线观看| 日韩中文字幕区一区有砖一区| 成人在线免费观看一区| 午夜不卡视频| 色八戒一区二区三区| 91视频在线免费| 欧美特黄一区| 91午夜理伦私人影院| 成人性生交大片免费看午夜| 欧美午夜美女看片| 精品久久久久一区二区| 你懂的成人av| 成人网址在线观看| avtt亚洲| 欧美日韩精品一区视频| 国产精品20p| 国产精品一页| 国产伦一区二区三区色一情| 超碰在线无需免费| 56国语精品自产拍在线观看| 免费黄色在线网址| 日本欧美一区二区| 日韩电影在线播放| 日韩美女在线看免费观看| 精品视频在线播放| 在线观看精品国产| 26uuuu精品一区二区| 欧美精品一区二区三区三州| 久久人人爽人人爽人人片av不| 日韩中文字幕不卡视频| 中文字幕一区二区人妻| 国产精品麻豆网站| 性生生活大片免费看视频| 欧美1级片网站| 成人免费看黄网站| 成人免费看片| 欧美本精品男人aⅴ天堂| 久久久久久久久久久久久女过产乱| 精品无人区卡一卡二卡三乱码免费卡| 亚洲欧洲国产精品久久| 91精品麻豆| 欧美精品午夜视频| 免费观看成年人视频| 亚洲一区二区三区四区在线观看 | 99riav一区二区三区| 欧美精品久久久久久久自慰| 西野翔中文久久精品国产| 日本成人精品在线| av在线免费观看网| 91精品国产高清一区二区三区 | 午夜激情在线| 精品久久久久久久久久久院品网 | 欧美三级视频在线观看| 欧美性生交大片| 国产成人a级片| 日韩中文字幕在线视频观看| av资源久久| 91亚洲精品久久久| 都市激情国产精品| 亚洲一级黄色av| 国产精品高潮呻吟av| 亚洲主播在线播放| 国内精品久久99人妻无码| 蜜桃一区二区三区在线| 9191国产视频| 久久爱www成人| 91精品视频在线播放| 欧美13videosex性极品| 在线观看精品国产视频| av网站免费播放| 一本色道久久综合精品竹菊| 国产在线免费看| 99久久综合精品| 性生活免费在线观看| 国内精品久久久久久久97牛牛 | 亚洲五月婷婷| 欧美在线一二三区| 视频一区中文字幕精品| 奇门遁甲1982国语版免费观看高清 | 国产奶头好大揉着好爽视频| 久久亚州av| 成人精品久久av网站| 极品视频在线| 美日韩精品免费观看视频| 欧美日韩在线中文字幕| 日韩一区二区三区三四区视频在线观看| 日韩欧美三级视频| 亚洲欧美日韩在线不卡| 国产av自拍一区| 国产91精品露脸国语对白| 黄色手机在线视频| 国产精品色网| 欧洲精品视频在线| 国产欧美久久一区二区三区| 成人三级在线| 国产精品久久免费视频 | 中文字幕无码精品亚洲资源网久久| 欧美精品一区二区三区中文字幕| 成人性色av| 成人永久在线| 国产精品电影网站| 美女在线视频免费| 久久6免费高清热精品| 日本三级视频在线观看| 亚洲欧美一区二区精品久久久| 亚洲国产精品欧美久久| 这里只有精品99re| 中文字幕二区三区| 在线视频欧美精品| 四虎精品永久在线| 午夜精品一区在线观看| 成年人av电影| 亚洲视频 欧洲视频| 1024手机在线观看你懂的| 久久日一线二线三线suv| 91人人澡人人爽| 国产一区二区三区四| 久久久久xxxx| 久久草av在线| 欧美精品 - 色网| 精品一区二区三区在线播放| 艹b视频在线观看| 奇米影视7777精品一区二区| 成年人小视频网站| 日韩精品久久久久久| 97在线免费公开视频| 先锋a资源在线看亚洲| 成熟了的熟妇毛茸茸| 国产精品日韩精品欧美精品| 国产极品粉嫩福利姬萌白酱| 国产欧美91| 国内性生活视频| 久久狠狠一本精品综合网| 中文字幕无码不卡免费视频| 久久精品二区三区| 国产精品涩涩涩视频网站| 日韩国产欧美三级| 亚洲欧美激情网| 麻豆视频观看网址久久| 中文字幕丰满乱码| 国产成人综合亚洲网站| 最新日本中文字幕| bt欧美亚洲午夜电影天堂| 三级黄色片网站| 国产亚洲精品久| 日本爱爱小视频| 亚洲男同性视频| 国产无码精品在线观看| 欧美日韩亚洲国产一区| 免费又黄又爽又猛大片午夜| 欧美日韩综合色| 国产欧美久久久精品免费| 精品国产乱子伦一区| 日韩在线免费播放| 一个人看的www久久| 国产最新在线| 午夜精品福利在线观看| 日本美女一区| 成人国产在线视频| 成人午夜网址| 日韩av不卡在线播放| 国产精品久久天天影视| 隔壁人妻偷人bd中字| 视频一区在线视频| 中文字幕剧情在线观看| 99久久久国产精品免费蜜臀| 日本一区二区视频在线播放| 亚洲精品国产高清久久伦理二区| 久久草视频在线| 欧美日韩一区二区欧美激情| www.国产欧美| 亚洲亚裔videos黑人hd| 中文字幕有码在线视频| 日韩女在线观看| 综合激情五月婷婷| 日韩福利二区| 伊人激情综合| 日本超碰在线观看| 91视频.com| 午夜爽爽爽男女免费观看| 狠狠躁夜夜躁人人躁婷婷91| a毛片在线免费观看| 国产亚洲视频在线观看| 欧美14一18处毛片| 国产精品丝袜久久久久久高清 | 国产jizzjizz一区二区| 免费成人深夜天涯网站| 亚洲mv在线观看| 国产美女永久免费| 一区二区欧美久久| 九色porny丨首页入口在线| 亚洲一区美女视频在线观看免费| 自拍自偷一区二区三区| 国产在线视频综合| 麻豆传媒一区二区三区| xxxx日本黄色| 香蕉成人啪国产精品视频综合网 | 88xx成人网| 久久久久久久久久久久久久一区 | 亚洲午夜在线视频| 一级黄在线观看| 亚洲最新中文字幕| 欲香欲色天天天综合和网| 99视频免费观看| 亚洲乱码精品| 超碰成人在线播放| 欧美国产1区2区| 天堂网视频在线| 日韩精品免费在线视频观看| 超免费在线视频| 99精品国产高清在线观看| 天天综合网网欲色| 欧美成人三级在线播放| 国产免费成人在线视频| 亚洲成熟少妇视频在线观看| 日韩精品高清视频| 嗯~啊~轻一点视频日本在线观看| 97碰碰视频| 欧美三级不卡| 国产原创剧情av| 性感美女极品91精品| 天堂中文资源在线观看| 久久久久久av| 136国产福利精品导航网址应用| 国产精品视频一二三四区| 国产自产v一区二区三区c| 亚洲精品自拍视频在线观看| 欧美日韩一区二区三区四区五区 | 国产精品久久久久久9999| 国产精品高清亚洲| 国产精品视频一区二区三区,| 久久韩剧网电视剧| 麻豆久久一区| 农民人伦一区二区三区| 波多野结衣亚洲一区| 日韩免费不卡视频| 精品丝袜一区二区三区| 中文字幕不卡三区视频| 欧美精品尤物在线| 日韩成人伦理电影在线观看| 手机毛片在线观看| 欧美日韩成人高清| www在线视频| 国产91免费视频| 国产精品亚洲综合久久| 国产又粗又猛又爽又黄av| 欧美无乱码久久久免费午夜一区| 老司机午夜在线| 国产尤物99| 爽爽淫人综合网网站| 九九热久久免费视频| 欧美一个色资源| 国产黄大片在线观看| 亚洲7777| 丰满少妇久久久久久久| 中文字幕精品无| 另类少妇人与禽zozz0性伦| 999久久久精品一区二区| 蜜臀av午夜一区二区三区| 中文字幕一区二区三区在线不卡| wwwxxxx国产| 情事1991在线| 91综合久久| 在线xxxxx| 欧美日韩免费视频| 高清电影在线免费观看| 日韩在线第一区| 国产99久久久久久免费看农村| 九九精品免费视频| 久久伊人91精品综合网站| 国产一区二区三区亚洲| 污污的视频免费| 欧美日韩国产区| 黄视频在线观看网站| 蜜桃视频成人| 国产一区二区不卡| 日韩精品成人免费观看视频| 欧美成人免费视频| 欧美人与牛zoz0性行为| av地址在线观看| 欧美无人高清视频在线观看| 蜜桃视频在线观看免费视频| 异国色恋浪漫潭| 久久久一区二区| 日本美女一级片|