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

歡迎訪問 生活随笔!

生活随笔

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

javascript

2 数据源配置_Spring, MyBatis 多数据源的配置和管理

發(fā)布時間:2025/3/15 javascript 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2 数据源配置_Spring, MyBatis 多数据源的配置和管理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:digdeep

出處:https://www.cnblogs.com/digdeep/p/4512368.html

熱門推薦

vue+websocket+Springboot實現(xiàn)的即時通信開源項目

springboot炸翔版CMS開源系統(tǒng)

同一個項目有時會涉及到多個數(shù)據(jù)庫,也就是多數(shù)據(jù)源。多數(shù)據(jù)源又可以分為兩種情況:

1)兩個或多個數(shù)據(jù)庫沒有相關(guān)性,各自獨立,其實這種可以作為兩個項目來開發(fā)。比如在游戲開發(fā)中一個數(shù)據(jù)庫是平臺數(shù)據(jù)庫,其它還有平臺下的游戲?qū)?yīng)的數(shù)據(jù)庫;

2)兩個或多個數(shù)據(jù)庫是master-slave的關(guān)系,比如有mysql搭建一個 master-master,其后又帶有多個slave;或者采用MHA搭建的master-slave復(fù)制;

目前我所知道的 Spring 多數(shù)據(jù)源的搭建大概有兩種方式,可以根據(jù)多數(shù)據(jù)源的情況進行選擇。

1. 采用spring配置文件直接配置多個數(shù)據(jù)源

比如針對兩個數(shù)據(jù)庫沒有相關(guān)性的情況,可以采用直接在spring的配置文件中配置多個數(shù)據(jù)源,然后分別進行事務(wù)的配置,如下所示:

<context:component-scan base-package="net.aazj.service,net.aazj.aop" /> <context:component-scan base-package="net.aazj.aop" /> <context:property-placeholder location="classpath:config/db.properties" /> <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_username}" /> <property name="password" value="${jdbc_password}" /> <property name="initialSize" value="0" /> <property name="maxActive" value="20" /> <property name="maxIdle" value="20" /> <property name="minIdle" value="0" /> <property name="maxWait" value="60000" /> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:config/mybatis-config.xml" /> <property name="mapperLocations" value="classpath*:config/mappers/**/*.xml" /> bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> bean> <tx:annotation-driven transaction-manager="transactionManager" /> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="net.aazj.mapper" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> bean> <aop:aspectj-autoproxy/> <bean name="dataSource_2" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url_2}" /> <property name="username" value="${jdbc_username_2}" /> <property name="password" value="${jdbc_password_2}" /> <property name="initialSize" value="0" /> <property name="maxActive" value="20" /> <property name="maxIdle" value="20" /> <property name="minIdle" value="0" /> <property name="maxWait" value="60000" /> bean> <bean id="sqlSessionFactory_slave" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource_2" /> <property name="configLocation" value="classpath:config/mybatis-config-2.xml" /> <property name="mapperLocations" value="classpath*:config/mappers2/**/*.xml" /> bean> <bean id="transactionManager_2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource_2" /> bean> <tx:annotation-driven transaction-manager="transactionManager_2" /> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="net.aazj.mapper2" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_2"/> bean>

如上所示,我們分別配置了兩個 dataSource,兩個sqlSessionFactory,兩個transactionManager,以及關(guān)鍵的地方在于MapperScannerConfigurer 的配置——使用sqlSessionFactoryBeanName屬性,注入不同的sqlSessionFactory的名稱,這樣的話,就為不同的數(shù)據(jù)庫對應(yīng)的 mapper 接口注入了對應(yīng)的 sqlSessionFactory。

需要注意的是,多個數(shù)據(jù)庫的這種配置是不支持分布式事務(wù)的,也就是同一個事務(wù)中,不能操作多個數(shù)據(jù)庫。這種配置方式的優(yōu)點是很簡單,但是卻不靈活。對于master-slave類型的多數(shù)據(jù)源配置而言不太適應(yīng),master-slave性的多數(shù)據(jù)源的配置,需要特別靈活,需要根據(jù)業(yè)務(wù)的類型進行細致的配置。比如對于一些耗時特別大的select語句,我們希望放到slave上執(zhí)行,而對于update,delete等操作肯定是只能在master上執(zhí)行的,另外對于一些實時性要求很高的select語句,我們也可能需要放到master上執(zhí)行——比如一個場景是我去商城購買一件兵器,購買操作的很定是master,同時購買完成之后,需要重新查詢出我所擁有的兵器和金幣,那么這個查詢可能也需要防止master上執(zhí)行,而不能放在slave上去執(zhí)行,因為slave上可能存在延時,我們可不希望玩家發(fā)現(xiàn)購買成功之后,在背包中卻找不到兵器的情況出現(xiàn)。

所以對于master-slave類型的多數(shù)據(jù)源的配置,需要根據(jù)業(yè)務(wù)來進行靈活的配置,哪些select可以放到slave上,哪些select不能放到slave上。所以上面的那種所數(shù)據(jù)源的配置就不太適應(yīng)了。

2. 基于 AbstractRoutingDataSource 和 AOP 的多數(shù)據(jù)源的配置

基本原理是,我們自己定義一個DataSource類ThreadLocalRountingDataSource,來繼承AbstractRoutingDataSource,然后在配置文件中向ThreadLocalRountingDataSource注入 master 和 slave 的數(shù)據(jù)源,然后通過 AOP 來靈活配置,在哪些地方選擇? master 數(shù)據(jù)源,在哪些地方需要選擇 slave數(shù)據(jù)源。下面看代碼實現(xiàn):

1)先定義一個enum來表示不同的數(shù)據(jù)源:

package net.aazj.enums;/** * 數(shù)據(jù)源的類別:master/slave */public enum DataSources { MASTER, SLAVE}

2)通過 TheadLocal 來保存每個線程選擇哪個數(shù)據(jù)源的標志(key):

package net.aazj.util;import net.aazj.enums.DataSources;public class DataSourceTypeManager { private static final ThreadLocal dataSourceTypes = new ThreadLocal(){ @Override protected DataSources initialValue(){ return DataSources.MASTER; } }; public static DataSources get(){ return dataSourceTypes.get(); } public static void set(DataSources dataSourceType){ dataSourceTypes.set(dataSourceType); } public static void reset(){ dataSourceTypes.set(DataSources.MASTER0); }}

3)定義 ThreadLocalRountingDataSource,繼承AbstractRoutingDataSource:

package net.aazj.util;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class ThreadLocalRountingDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceTypeManager.get(); }}

4)在配置文件中向 ThreadLocalRountingDataSource 注入 master 和 slave 的數(shù)據(jù)源:

<context:component-scan base-package="net.aazj.service,net.aazj.aop" /> <context:component-scan base-package="net.aazj.aop" /> <context:property-placeholder location="classpath:config/db.properties" /> <bean name="dataSourceMaster" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" /> <property name="username" value="${jdbc_username}" /> <property name="password" value="${jdbc_password}" /> <property name="initialSize" value="0" /> <property name="maxActive" value="20" /> <property name="maxIdle" value="20" /> <property name="minIdle" value="0" /> <property name="maxWait" value="60000" /> bean> <bean name="dataSourceSlave" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url_slave}" /> <property name="username" value="${jdbc_username_slave}" /> <property name="password" value="${jdbc_password_slave}" /> <property name="initialSize" value="0" /> <property name="maxActive" value="20" /> <property name="maxIdle" value="20" /> <property name="minIdle" value="0" /> <property name="maxWait" value="60000" /> bean> <bean id="dataSource" class="net.aazj.util.ThreadLocalRountingDataSource"> <property name="defaultTargetDataSource" ref="dataSourceMaster" /> <property name="targetDataSources"> <map key-type="net.aazj.enums.DataSources"> <entry key="MASTER" value-ref="dataSourceMaster"/> <entry key="SLAVE" value-ref="dataSourceSlave"/> map> property> bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:config/mybatis-config.xml" /> <property name="mapperLocations" value="classpath*:config/mappers/**/*.xml" /> bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> bean> <tx:annotation-driven transaction-manager="transactionManager" /> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="net.aazj.mapper" /> bean>

上面spring的配置文件中,我們針對master數(shù)據(jù)庫和slave數(shù)據(jù)庫分別定義了dataSourceMaster和dataSourceSlave兩個dataSource,然后注入到>?中,這樣我們的dataSource就可以來根據(jù) key 的不同來選擇dataSourceMaster和 dataSourceSlave了。

5)使用Spring AOP 來指定 dataSource 的 key ,從而dataSource會根據(jù)key選擇 dataSourceMaster 和 dataSourceSlave:

package net.aazj.aop;import net.aazj.enums.DataSources;import net.aazj.util.DataSourceTypeManager;import org.aspectj.lang.JoinPoint;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;@Aspect // for aop@Component // for auto scan@Order(0)? // execute before @Transactionalpublic class DataSourceInterceptor { @Pointcut("execution(public * net.aazj.service..*.getUser(..))") public void dataSourceSlave(){}; @Before("dataSourceSlave()") public void before(JoinPoint jp) { DataSourceTypeManager.set(DataSources.SLAVE); } // ... ...}

這里我們定義了一個?Aspect?類,我們使用?@Before?來在符合?@Pointcut("execution(public * net.aazj.service..*.getUser(..))")?中的方法被調(diào)用之前,調(diào)用?DataSourceTypeManager.set(DataSources.SLAVE)?設(shè)置了 key 的類型為?DataSources.SLAVE,所以 dataSource 會根據(jù)key=DataSources.SLAVE?選擇 dataSourceSlave 這個dataSource。所以該方法對于的sql語句會在slave數(shù)據(jù)庫上執(zhí)行(經(jīng)網(wǎng)友老劉1987提醒,這里存在多個Aspect之間的一個執(zhí)行順序的問題,必須保證切換數(shù)據(jù)源的Aspect必須在@Transactional這個Aspect之前執(zhí)行,所以這里使用了@Order(0)來保證切換數(shù)據(jù)源先于@Transactional執(zhí)行)。

我們可以不斷的擴充?DataSourceInterceptor??這個?Aspect,在中進行各種各樣的定義,來為某個service的某個方法指定合適的數(shù)據(jù)源對應(yīng)的dataSource。

這樣我們就可以使用 Spring AOP 的強大功能來,十分靈活進行配置了。

6)AbstractRoutingDataSource原理剖析

ThreadLocalRountingDataSource繼承了AbstractRoutingDataSource,實現(xiàn)其抽象方法protected abstract Object determineCurrentLookupKey(); 從而實現(xiàn)對不同數(shù)據(jù)源的路由功能。我們從源碼入手分析下其中原理:

public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBeanAbstractRoutingDataSource 實現(xiàn)了 InitializingBean 那么spring在初始化該bean時,會調(diào)用InitializingBean的接口void afterPropertiesSet() throws Exception; 我們看下AbstractRoutingDataSource是如何實現(xiàn)這個接口的:@Override public void afterPropertiesSet() { if (this.targetDataSources == null) { throw new IllegalArgumentException("Property 'targetDataSources' is required"); } this.resolvedDataSources = new HashMap(this.targetDataSources.size()); for (Map.Entry entry : this.targetDataSources.entrySet()) { Object lookupKey = resolveSpecifiedLookupKey(entry.getKey()); DataSource dataSource = resolveSpecifiedDataSource(entry.getValue()); this.resolvedDataSources.put(lookupKey, dataSource); } if (this.defaultTargetDataSource != null) { this.resolvedDefaultDataSource = resolveSpecifiedDataSource(this.defaultTargetDataSource); } }targetDataSources 是我們在xml配置文件中注入的 dataSourceMaster 和 dataSourceSlave. afterPropertiesSet方法就是使用注入的dataSourceMaster 和 dataSourceSlave來構(gòu)造一個HashMap——resolvedDataSources。方便后面根據(jù) key 從該map 中取得對應(yīng)的dataSource
我們在看下 AbstractDataSource 接口中的 Connection getConnection() throws SQLException; 是如何實現(xiàn)的:@Override public Connection getConnection() throws SQLException { return determineTargetDataSource().getConnection(); }

關(guān)鍵在于?determineTargetDataSource(),根據(jù)方法名就可以看出,應(yīng)該此處就決定了使用哪個 dataSource :

protected DataSource determineTargetDataSource() { Assert.notNull(this.resolvedDataSources, "DataSource router not initialized"); Object lookupKey = determineCurrentLookupKey(); DataSource dataSource = this.resolvedDataSources.get(lookupKey); if (dataSource == null && (this.lenientFallback || lookupKey == null)) { dataSource = this.resolvedDefaultDataSource; } if (dataSource == null) { throw new IllegalStateException("Cannot determine target DataSource for lookup key [" + lookupKey + "]"); } return dataSource; }Object lookupKey = determineCurrentLookupKey(); 該方法是我們實現(xiàn)的,在其中獲取ThreadLocal中保存的 key 值。獲得了key之后,
在從afterPropertiesSet()中初始化好了的resolvedDataSources這個map中獲得key對應(yīng)的dataSource。而ThreadLocal中保存的 key 值
是通過AOP的方式在調(diào)用service中相關(guān)方法之前設(shè)置好的。OK,到此搞定!

7)擴展 ThreadLocalRountingDataSource

上面我們只是實現(xiàn)了 master-slave 數(shù)據(jù)源的選擇。如果有多臺 master 或者有多臺 slave。多臺master組成一個HA,要實現(xiàn)當其中一臺master掛了是,自動切換到另一臺master,這個功能可以使用LVS/Keepalived來實現(xiàn),也可以通過進一步擴展ThreadLocalRountingDataSource來實現(xiàn),可以另外加一個線程專門來每個一秒來測試mysql是否正常來實現(xiàn)。同樣對于多臺slave之間要實現(xiàn)負載均衡,同時當一臺slave掛了時,要實現(xiàn)將其從負載均衡中去除掉,這個功能既可以使用LVS/Keepalived來實現(xiàn),同樣也可以通過近一步擴展ThreadLocalRountingDataSource來實現(xiàn)。

3. 總結(jié)

從本文中我們可以體會到AOP的強大和靈活。

本文使用的是mybatis,其實使用Hibernate也應(yīng)該是相似的配置。

總結(jié)

以上是生活随笔為你收集整理的2 数据源配置_Spring, MyBatis 多数据源的配置和管理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产精品日韩高清 | 激情视频综合网 | 性色av香蕉一区二区 | 啪嗒啪嗒免费观看完整版 | 综合久久网 | 欧美日一级片 | 永久免费在线 | 蜜臀久久99精品久久久无需会员 | 青草视频在线看 | 久久视频在线免费观看 | 91在线观看欧美日韩 | 免费欧美高清视频 | 91在线看| 欧美性大战 | 免费在线观看视频a | 久久一视频 | 91福利免费 | 婷婷丁香在线视频 | 国产91影院 | 欧美激情综合色综合啪啪五月 | 天天操,夜夜操 | 在线视频a | 天天天天天天天操 | 国产精品美女久久久久久网站 | 人人爽人人爽 | 夜色成人网 | 99国产在线视频 | 国产手机在线视频 | 天天色天天射天天综合网 | 91免费版在线 | 99免费在线观看 | 97精品超碰一区二区三区 | 国产精品毛片久久蜜 | 五月天视频网站 | 欧美影院久久 | 久久综合九色综合久久久精品综合 | 激情欧美日韩一区二区 | 国产成人99久久亚洲综合精品 | 久久人人干 | 播五月综合 | 一区二区三区免费在线 | 欧美精品免费一区二区 | 99久久这里只有精品 | 91香蕉视频在线下载 | 最近中文字幕免费视频 | 成人夜晚看av | 视频在线日韩 | 伊人永久 | h网站免费在线观看 | 欧美va天堂va视频va在线 | 最近免费观看的电影完整版 | 国产精品1区2区 | 在线看片成人 | 国产麻豆电影在线观看 | 亚洲精品日韩一区二区电影 | 成年人免费在线播放 | 久久情侣偷拍 | 亚州人成在线播放 | 又粗又长又大又爽又黄少妇毛片 | 亚洲一区二区高潮无套美女 | 国产手机精品视频 | av成人免费| 色噜噜日韩精品欧美一区二区 | 欧美一区影院 | 亚洲精品乱码久久久久久9色 | 久久人人射 | 亚洲综合丁香 | 免费看一级 | 久草在线播放视频 | 亚洲免费精品视频 | 免费人成网 | 精品福利视频在线 | 久99热| 国内一区二区视频 | 综合在线色 | 久久精品这里都是精品 | 国产亚洲精品av | 激情视频一区二区三区 | 久久久久国产精品免费网站 | wwwwww国产 | 69精品人人人人 | 久草视频在线资源 | 2021国产视频 | 亚洲一级免费电影 | 日韩精品一区二区三区三炮视频 | 欧美精品在线一区二区 | 99精品久久久久久久久久综合 | 中文字幕免费成人 | 最新av网址大全 | 亚洲人成影院在线 | 人人澡人人澡人人 | 美女av免费 | 亚洲免费色 | 久久久久久视频 | 婷婷久久网站 | 亚洲日韩中文字幕在线播放 | 天天干天天上 | 国产精品视频永久免费播放 | 久99久在线 | 中文字幕在线国产精品 | 欧美国产日韩一区二区 | 国内精品视频久久 | 91黄视频在线观看 | 免费高清在线视频一区· | 国产小视频国产精品 | 99久久精品久久久久久清纯 | 国产最新在线 | 成人a在线观看 | 亚洲成成品网站 | 亚洲国产大片 | www.色婷婷.com | 久久99久久99久久 | 成人在线观看日韩 | 麻豆视频免费看 | 天天激情站 | 久久r精品 | 免费看的黄色网 | 久草久草久草久草 | 久久久精品欧美一区二区免费 | 精品久久国产一区 | 91麻豆精品国产自产 | 亚洲成人黄色在线观看 | 久久99在线观看 | 最新日韩在线观看视频 | 欧美综合在线视频 | 亚洲国产免费看 | 婷婷激情欧美 | 国产手机在线观看视频 | 午夜婷婷网 | 国产一区二区三精品久久久无广告 | 午夜视频99| 99精品在线观看视频 | 精品国内自产拍在线观看视频 | 黄网站大全 | 日韩激情视频在线 | 国产成人三级三级三级97 | 人人添人人 | 91理论片午午伦夜理片久久 | 欧美视频xxx | www日韩欧美| 欧美色久 | 日韩在线视频免费看 | 婷婷六月网 | 人人干人人干人人干 | 亚洲国产精彩中文乱码av | 久久久久免费精品 | 99福利片| 日韩免费不卡av | 国产免费又爽又刺激在线观看 | 欧美日韩国产综合一区二区 | 亚洲欧美日韩在线一区二区 | 国产精品久久9 | 久久精品99国产精品日本 | 国产精品福利视频 | 国产精品欧美 | 国产中文字幕视频 | 在线观看韩日电影免费 | 午夜精品一区二区三区免费 | 国产一区在线视频 | 国产原厂视频在线观看 | www.色婷婷 | 黄色三级视频片 | www.五月激情.com | 东方av免费在线观看 | 二区精品视频 | 久久精品日韩 | 粉嫩av一区二区三区免费 | 色综合a | 欧美a级免费视频 | 天堂久色| 久久国产精品久久国产精品 | 欧美日韩免费视频 | 大荫蒂欧美视频另类xxxx | 免费在线观看成人 | 中文字幕一区在线观看视频 | 毛片二区 | 91精选 | 久久综合精品国产一区二区三区 | 97超碰人人模人人人爽人人爱 | 日韩理论在线播放 | 日韩高清一区在线 | 日韩三级av| 九九热精 | 国产精品国产亚洲精品看不卡15 | 免费国产在线精品 | 视频国产 | 99热在线网站 | 最新av在线网址 | 中文字幕韩在线第一页 | 国产亚洲成av人片在线观看桃 | 人人爱人人做人人爽 | 精品一区二三区 | av在线电影免费观看 | 国产性天天综合网 | 波多在线视频 | 国产一区二区在线免费 | 日韩毛片久久久 | 91丨九色丨国产丨porny精品 | 久久久久亚洲a | 国产91aaa | 亚洲 欧美日韩 国产 中文 | 免费视频二区 | 国产午夜精品视频 | 九九视频在线观看视频6 | 波多野结衣一区二区 | 天天操夜夜操天天射 | 久久国产成人午夜av影院宅 | 成人黄色片在线播放 | 一级片在线 | 99久久99久久精品国产片 | 色吊丝在线永久观看最新版本 | 国产精品永久免费观看 | 色网站国产精品 | 99精品视频免费 | 亚洲97在线 | av中文字幕亚洲 | 久久1电影院 | 丰满少妇在线观看 | 丝袜网站在线观看 | 久久久久久久久网站 | 免费在线观看毛片网站 | 天天爱天天射天天干天天 | 视频 天天草 | 又大又硬又黄又爽视频在线观看 | 欧美性超爽 | 在线 日韩 av | 日本中出在线观看 | 日韩av看片 | 美女黄频网站 | 欧美性视频网站 | 日韩精品一卡 | 99热999 | 国产 色| 夜夜夜夜猛噜噜噜噜噜初音未来 | 久久视讯 | 免费看一级特黄a大片 | 国产剧情一区 | 国产91精品看黄网站 | 亚洲乱码中文字幕综合 | 久久理伦片 | 精品免费久久久久久 | 国产精品久久久久久a | 国产精品综合av一区二区国产馆 | 福利一区二区三区四区 | 午夜在线免费视频 | 亚洲精品免费观看视频 | 欧美a在线看 | 亚洲欧美在线观看视频 | 麻豆视频在线看 | 开心激情综合网 | 狠狠久久 | 激情网在线视频 | 欧美一级xxxx | 久久精品网站免费观看 | 国产一区免费观看 | 日本大片免费观看在线 | 免费av看片 | 97超碰在线久草超碰在线观看 | 精品久久久成人 | 亚洲成人影音 | 97电影院在线观看 | 亚洲综合视频在线播放 | 国产精品二区在线 | 成+人+色综合 | 精品福利在线视频 | 69av久久| 97视频免费在线 | 久久精品这里精品 | 97视频亚洲| 91亚洲网站 | 九九导航 | 日日干夜夜干 | 99热这里| 久久高清免费视频 | 亚洲黄色免费观看 | 日韩精品短视频 | 国产亚洲婷婷免费 | 人人看人人做人人澡 | 国产精品久久久久久久久久久久午夜 | 91精品国自产在线观看欧美 | 99精品区 | 久久久久色 | 国产精品日韩 | 97国产在线观看 | 999久久久国产精品 高清av免费观看 | 在线观看视频在线观看 | 欧美精品亚洲二区 | 亚洲一级国产 | 91亚洲夫妻 | 99精品在线免费视频 | 999成人精品 | 日本精品久久久久中文字幕 | 在线观看免费观看在线91 | 午夜av免费观看 | 美女免费电影 | 久久国产精品99国产精 | 日韩欧美在线综合网 | 久久精品影片 | 黄色三级免费网址 | 国产一区二区视频在线播放 | 亚洲激情视频在线 | 99综合电影在线视频 | 成人久久18免费网站麻豆 | 操操操影院 | 精品国产成人av在线免 | 激情中文在线 | 在线有码中文 | 中文字幕中文字幕中文字幕 | 国产中文字幕在线免费观看 | 免费在线一区二区 | 天天操人人干 | 狠狠色狠狠色综合系列 | 精品国产一区二区三区四区在线观看 | 久久66热这里只有精品 | 午夜精品在线看 | 公与妇乱理三级xxx 在线观看视频在线观看 | 国产精品成人一区二区三区 | 99久久精品免费看国产麻豆 | 日韩欧美高清视频在线观看 | 久久都是精品 | 五月天欧美精品 | 国产视频精品网 | 久久国产精品99久久人人澡 | 日韩av一卡二卡三卡 | 国产丝袜美腿在线 | 一区二区三区精品在线 | 麻豆精品国产传媒 | 欧美激情综合五月色丁香 | 日本中文一级片 | 免费看的av片 | 成人国产亚洲 | 99视频免费在线观看 | 日本精品视频在线观看 | 欧美日韩xxxxx | 国产精品毛片一区视频播不卡 | 日韩中文字幕免费视频 | 91传媒在线播放 | 性色av免费在线观看 | 五月天激情在线 | 久草在线免费在线观看 | 97色在线视频 | 久久久久久看片 | 国产精品嫩草69影院 | 成人av在线网| 97视频免费在线看 | 亚洲视频,欧洲视频 | 99久久精品视频免费 | 久久男女视频 | 亚洲人成人在线 | 欧美日韩99 | 国产成人精品一区二区三区免费 | 久久黄色影院 | 最新精品国产 | 欧美久久成人 | 国产成人一区二区三区免费看 | 色综合久久久久久久 | 天天射天天拍 | 在线观看片 | 久久亚洲综合国产精品99麻豆的功能介绍 | 天天做天天爽 | 久久综合成人 | av线上看 | 国产高清视频在线 | 午夜精品一区二区三区在线播放 | 三级性生活视频 | 黄色特一级 | 国产精品麻豆视频 | 久久看片 | 国产一区在线免费 | 91视频久久久久久 | 韩国av电影在线观看 | 国产不卡视频在线播放 | 狠狠色网 | 久久少妇 | 最近高清中文在线字幕在线观看 | 碰超人人 | 欧美日韩国产在线精品 | 天天干天天操天天 | 国产精品资源在线 | 亚洲精品乱码久久久久久蜜桃欧美 | 国产精品门事件 | 91在线产啪| 91丨精品丨蝌蚪丨白丝jk | 欧美日韩国产一区二 | 久久久久女人精品毛片 | 亚洲国内在线 | av天天在线观看 | 在线播放 亚洲 | 久久久人人爽 | 免费污片| jizz999| 69人人| 五月婷婷毛片 | 91看片在线 | 成人免费在线播放 | 91成人精品国产刺激国语对白 | 亚洲激情综合网 | 日韩乱色精品一区二区 | 国产精品一区二区久久 | 精品 一区 在线 | 久久久精品电影 | 区一区二在线 | 久久国产网站 | 免费在线观看日韩欧美 | 精品福利国产 | 视频在线亚洲 | 国产精品一区二区三区四 | 免费h精品视频在线播放 | 国产98色在线 | 日韩 | 天天射天天舔天天干 | 国产黄色精品视频 | 日韩二三区 | 福利视频一区二区 | 天天拍天天色 | 国产精品久久视频 | 精品国产伦一区二区三区观看说明 | 久久久国产精品一区二区三区 | 成人黄在线 | 国产精品一区二区无线 | 91超在线 | 日韩精品一区二区三区水蜜桃 | 在线视频一区观看 | 麻豆精品视频在线 | 涩av在线 | 天天爽天天爽夜夜爽 | 四虎影视4hu4虎成人 | 91禁看片 | 天天操天天综合网 | 国产一级片观看 | av在线专区 | 在线观看免费视频你懂的 | 91亚洲成人 | 最近字幕在线观看第一季 | 色就干| 久久国产精品影视 | 亚洲天堂色婷婷 | 国产视频九色蝌蚪 | 黄色三级视频片 | 国产成人精品午夜在线播放 | 国产一区视频免费在线观看 | 国产亚洲精品久久久久久大师 | 国产免费不卡av | 午夜婷婷网 | 国产精品嫩草在线 | 欧美日韩中文在线视频 | 18女毛片 | 亚洲三级黄 | 久久国产精品免费一区 | 天天射天天干天天爽 | 婷婷激情综合网 | 日韩视| 99精品视频免费观看视频 | 日韩在线播放视频 | mm1313亚洲精品国产 | 久久影视一区 | 91传媒在线观看 | 99re亚洲国产精品 | 国产一区高清在线 | 国产精品久久久久久电影 | 久久久久免费精品视频 | 欧美福利在线播放 | 日韩影视大全 | 999成人免费视频 | 91亚洲精品国产 | 国产专区欧美专区 | 亚洲午夜电影网 | 91观看视频| 在线国产黄色 | 国产精久久久久久妇女av | 国内精品视频在线 | 国产精品6999成人免费视频 | 国产97av| 日本性xxxxx| 日韩欧美高清在线观看 | 欧美一级片免费观看 | av女优中文字幕在线观看 | 操操操人人 | 欧美一区二区免费在线观看 | 中文字幕电影高清在线观看 | 一区二区三区韩国免费中文网站 | 一区二区视频电影在线观看 | 九热精品 | 欧美日韩激情视频8区 | 国际精品久久久久 | 天天色天天 | 亚洲精品高清视频 | 国内精品福利视频 | 久久精品香蕉视频 | 色伊人网 | 久久免费视频一区 | 国产第一页在线播放 | 久久久久久久久久久久电影 | 99热最新网址 | 国产精品黄色影片导航在线观看 | 国产录像在线观看 | 欧美成人黄 | 麻豆国产在线播放 | 国产精品久久久久久久久久久久午夜片 | 黄色av一区 | www.狠狠干| 日韩精品在线观看视频 | 国产欧美综合视频 | 久99视频 | 最新中文字幕在线播放 | 欧美激情精品久久久久久 | 国产精品美女www爽爽爽视频 | www免费在线观看 | 国产精品久久久 | 91av在线免费播放 | 天天综合网国产 | 天天色综合久久 | 日本三级中文字幕在线观看 | 色5月婷婷 | 99re8这里有精品热视频免费 | 久草视频视频在线播放 | 国产午夜精品一区二区三区四区 | 97超级碰碰碰视频在线观看 | 91久久精品日日躁夜夜躁国产 | 欧美日韩久久一区 | 国内外成人在线 | 九九精品视频在线观看 | 色视频在线观看免费 | 国产精品激情在线观看 | 亚洲美女免费精品视频在线观看 | 亚洲首页 | 日韩久久久久久久久 | 亚洲免费国产 | 国产午夜一级毛片 | 国内精品久久久久久久 | 欧美va在线观看 | 午夜av免费 | 最新中文字幕在线播放 | 一区二区中文字幕在线播放 | 99久久99视频 | 又大又硬又黄又爽视频在线观看 | 综合黄色网 | 欧美日韩在线观看一区二区三区 | 色综合久久88色综合天天人守婷 | 中文字幕免费在线看 | 亚洲最新av | 久久黄色免费视频 | 黄色福利网站 | 亚洲精品午夜aaa久久久 | 久久久久久久久久久久久9999 | 九九99靖品 | 日本在线h | 4438全国亚洲精品观看视频 | 一区二区三区国产精品 | va视频在线| 成人在线超碰 | 狠狠gao | www日韩欧美 | 99久久激情视频 | 操操色| 亚洲 欧洲 国产 精品 | 色网站在线免费观看 | 国产精品婷婷 | 精品久久久久久国产91 | 高清国产午夜精品久久久久久 | 国产不卡视频在线播放 | 成人小视频免费在线观看 | 国内小视频 | 欧美九九九 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 蜜桃久久久| 国产一区成人在线 | 国产一卡二卡在线 | 91在线视频| 精品久久久免费 | 日本成人中文字幕在线观看 | 精品免费视频. | www色av| 国产亚洲精品美女久久 | 国产精品自产拍 | 成人欧美在线 | 日韩一级网站 | 国产一级黄色片免费看 | 99国产在线| 国产精品第二页 | 蜜桃视频在线观看一区 | 国产一区二区在线精品 | 日韩精品中文字幕在线观看 | 黄色avwww | 毛片美女网站 | 国产毛片aaa | 黄色三级av | 粉嫩av一区二区三区四区在线观看 | 午夜精品久久 | 久久久国产影视 | 啪啪免费观看网站 | 精品国产一区二区三区噜噜噜 | 国产精品成人国产乱 | 亚洲天堂va| 国产精品丝袜在线 | 色婷婷97| 超碰av在线 | 在线中文字幕av观看 | 久草新在线 | 久久综合狠狠 | 99亚洲精品在线 | 久久精品99久久久久久2456 | 久久久久成人精品亚洲国产 | 91av视屏 | 十八岁以下禁止观看的1000个网站 | 91热精品 | 久久精品中文视频 | 国产午夜精品一区二区三区欧美 | 激情小说网站亚洲综合网 | 亚洲综合最新在线 | 中文字幕av专区 | 蜜臀久久99静品久久久久久 | 日韩天天操 | 久久精品一二三区白丝高潮 | 欧美作爱视频 | 天天色官网 | 欧美va电影 | 韩国在线一区 | 在线韩国电影免费观影完整版 | 黄色亚洲免费 | 最近中文字幕大全中文字幕免费 | www.com.日本一级 | 日日夜夜艹 | 最近中文字幕在线中文高清版 | 国内精品视频免费 | 视频在线99 | 91精品国产高清 | 亚洲视频www | 亚洲一级黄色片 | 在线观看中文字幕亚洲 | 久草视频精品 | 久久网站最新地址 | 日韩在线视频精品 | 日韩久久午夜一级啪啪 | 亚洲影院天堂 | 亚洲国产精品999 | 深夜免费小视频 | 亚洲视频 在线观看 | 一区二区久久久久 | 五月激情电影 | 三级av片 | 国产美女在线观看 | 午夜影院一区 | 欧美一级黄大片 | 黄色一及电影 | 欧美一级淫片videoshd | 久久精品首页 | av免费在线看网站 | 2019中文在线观看 | 久久精品视频免费 | 日韩有码在线播放 | 最新黄色av网址 | 亚洲jizzjizz日本少妇 | 婷婷伊人五月天 | 能在线看的av | 免费看国产曰批40分钟 | 精品免费久久久久 | 精品国产成人 | 色香蕉在线视频 | 男女激情片在线观看 | 欧美成人亚洲 | 在线看黄色的网站 | 亚洲九九影院 | 亚洲精品乱码久久久久久 | 国产在线精品观看 | 国产成人精品网站 | 日韩在线观看av | 丁五月婷婷| 国产日韩视频在线观看 | www激情com| 三级动态视频在线观看 | 精品久久一级片 | 国产精品成人免费精品自在线观看 | 97视频免费在线看 | 日韩激情片在线观看 | 国产精品美女久久久久久久久久久 | 国产亚洲精品久久久久久大师 | 六月婷婷网 | 十八岁免进欧美 | 黄色精品久久 | 超碰在线97免费 | 亚洲好视频 | 91视视频在线直接观看在线看网页在线看 | 久久影视中文字幕 | 高清不卡一区二区三区 | 久久伦理| 久久综合久色欧美综合狠狠 | 丁香婷婷综合色啪 | 免费黄色激情视频 | 日韩欧美视频在线观看免费 | 在线免费av观看 | 国产亚洲激情视频在线 | 国产高清av| 日本中文字幕免费观看 | 久久综合久久综合久久综合 | 久久国产精品网站 | 亚洲在线激情 | 久久精品免视看 | 日日干影院| 精品极品在线 | 精品久久99 | 亚洲美女久久 | 黄色大全视频 | 五月婷婷视频在线 | 久久久在线视频 | 在线视频 区 | 香蕉视频在线免费看 | 亚洲欧美视频在线 | 国产精品一区二区电影 | 中文字幕日本特黄aa毛片 | 国产剧情一区二区 | 免费亚洲婷婷 | 国内精品久久久久影院一蜜桃 | 国产精品一级在线 | 国产精品国产三级在线专区 | 在线综合 亚洲 欧美在线视频 | 97视频资源| 91视频久久久久久 | 丁香综合 | 亚洲视频电影在线 | 天天干,天天射,天天操,天天摸 | 精品国产一区二区三区蜜臀 | 成人aaa毛片| 久久久久免费电影 | 在线国产91 | 五月天婷亚洲天综合网精品偷 | 国产亚洲婷婷免费 | sm免费xx网站 | 日本精品在线 | 超碰在线网 | 91精品网站| 欧美日韩在线播放 | 亚洲一本视频 | 天天做日日爱夜夜爽 | 国产精品久久久久久久久久了 | 亚洲欧美成人 | 少妇bbb搡bbbb搡bbbb′ | 日韩欧美在线一区二区 | 国产在线观看xxx | 91女神的呻吟细腰翘臀美女 | 91福利在线观看 | 日本丰满少妇免费一区 | 亚州精品成人 | 久久久久一区 | 日韩av在线小说 | 免费男女羞羞的视频网站中文字幕 | 在线97| 欧美日韩精品在线观看 | 在线看一级片 | 国产亚洲精品久久 | 最新99热 | 日日夜夜狠狠干 | 天天摸天天舔天天操 | 手机看片国产日韩 | 国产123区在线观看 国产精品麻豆91 | 波多野结衣动态图 | 51久久成人国产精品麻豆 | 97在线精品国自产拍中文 | 亚洲最大av网| 黄色动态图xx | 国产精品久久久久久欧美 | 蜜臀av免费一区二区三区 | 精品亚洲va在线va天堂资源站 | 亚洲三级在线免费观看 | 五月开心色 | 午夜精品久久久久久久爽 | 日韩欧在线 | 麻豆系列在线观看 | 欧美大香线蕉线伊人久久 | 欧美日韩国产综合网 | 色偷偷88888欧美精品久久 | 一二三区视频在线 | 久久久高清一区二区三区 | 97av在线视频免费播放 | 一 级 黄 色 片免费看的 | 免费视频 三区 | 日韩欧美在线第一页 | 91九色视频国产 | av中文在线影视 | 天天干天天拍天天操天天拍 | 国产激情小视频在线观看 | 久草视频在线资源 | 91亚色免费视频 | 亚洲精品美女在线观看播放 | 亚洲精品国产精品久久99热 | 夜夜狠狠 | 69精品在线观看 | 日韩高清免费在线观看 | 91精品国产成人观看 | 久久精品站 | 久久人网| 精品视频区| 久久久久久久久久免费视频 | 夜夜骑天天操 | 亚洲国产视频网站 | 成人黄色免费在线观看 | 九九在线播放 | 处女av在线 | 操操爽| 日本免费一二三区 | 国产老熟 | 日韩在线资源 | 欧美日韩不卡在线 | 久久99九九99精品 | 亚洲aⅴ久久精品 | 欧美伦理电影一区二区 | 在线看毛片网站 | 亚洲综合在线视频 | 成人黄色电影视频 | 日韩性xxxx| 久久综合给合久久狠狠色 | 在线有码中文 | 狠狠干狠狠久久 | 色综合天天综合在线视频 | 久久久精品电影 | 亚洲永久精品视频 | 日韩有码第一页 | 国产一线二线三线在线观看 | 久久激情五月丁香伊人 | 亚洲乱码久久久 | 深爱激情av| 天天射天天干天天爽 | 99 国产精品 | 麻豆精品在线视频 | 国产成人精品免费在线观看 | 亚洲专区欧美 | 久久久国产精品亚洲一区 | 久久色在线播放 | 黄色影院在线免费观看 | 91精品国产成人 | 午夜影院日本 | 国产高清视频在线播放 | 日韩精品高清视频 | 国产免费观看高清完整版 | 国产亚洲亚洲 | 久久精品1区2区 | 91精品久久久久久久久久久久久 | 国产成人一区二 | 亚洲欧美日韩在线看 | 亚洲成人频道 | 成年人在线看片 | 欧美福利精品 | 亚洲在线视频播放 | 最新91在线视频 | 黄污污网站 | 一级a性色生活片久久毛片波多野 | 97精产国品一二三产区在线 | 成人国产精品久久久 | 能在线观看的日韩av | 999在线精品 | 亚洲精品国产精品久久99热 | 少妇bbw撒尿 | 手机在线视频福利 | 四虎国产精品免费 | 久久6精品 | 81精品国产乱码久久久久久 | 麻豆视频成人 | 最近高清中文字幕在线国语5 | 久草电影免费在线观看 | 精品国产免费人成在线观看 | 国产男女无遮挡猛进猛出在线观看 | 九九热只有精品 | 精品美女在线视频 | 不卡视频在线看 | 亚洲成a人片综合在线 | 久久久电影 | 日本黄色片一区二区 | 久久少妇免费视频 | 奇米先锋 | www.亚洲在线| 国产视频精品免费 | 麻豆果冻剧传媒在线播放 | 99久久精品费精品 | 亚洲精品videossex少妇 | 日本三级在线观看中文字 | 亚洲黑丝少妇 | 99自拍视频在线观看 | www.久久久精品 | 玖玖精品在线 | 国产一区二区三区高清播放 | 伊人春色电影网 | 韩日视频在线 | wwwav视频| 久久免费视频精品 | 国产一级片视频 | 久艹在线播放 | 成人免费观看网站 | 91麻豆文化传媒在线观看 | 亚洲国产精品成人综合 | 久久久国产电影 | 久久99久久99精品免视看婷婷 | 一区二区三区在线不卡 | 91av视频免费观看 | 黄色在线免费观看网址 | 亚洲国产欧美一区二区三区丁香婷 | 色婷婷亚洲精品 | 夜夜夜草 | av成人免费网站 | 国产二区精品 | 一区二区av | av在线进入 | 日本中文字幕视频 | 亚洲高清资源 | 欧美日韩成人一区 | 在线免费观看欧美日韩 | 久久成人一区二区 | 日韩免费看片 | 国产精品免费麻豆入口 | 国产91九色视频 | 99视频久| 久热色超碰 | 三级黄色三级 | 天堂av在线网 | 东方av免费在线观看 | 51精品国自产在线 | 亚洲黄色精品 | 色窝资源 | 免费看搞黄视频网站 | 成年一级片 | www91在线观看| 狠狠艹夜夜干 | 97人人看| 色黄www小说 | 狠狠色狠狠色综合日日小说 | 中文理论片 | 精品久久久久一区二区国产 | 色吊丝在线永久观看最新版本 | 玖玖在线观看视频 | 激情丁香综合五月 | 久久这里只有精品9 | 精品中文字幕在线播放 | 日韩福利在线观看 | 91免费在线 | 日韩在线观看小视频 | 久久久久久久久黄色 | 中文字幕日本特黄aa毛片 | 日日夜夜精品免费视频 | 国产91在线 | 美洲 | 国产高清不卡在线 | 91视频观看免费 | 成人小视频在线免费观看 | 成人在线观看网址 | 干干操操| 99999精品视频| 夜夜躁日日躁狠狠躁 | 成人免费在线播放 | 又黄又爽又湿又无遮挡的在线视频 | 91夫妻自拍 | 狠狠躁日日躁狂躁夜夜躁 | 6080yy午夜一二三区久久 | 成人av免费在线播放 | 免费在线观看黄色网 | 亚洲aⅴ一区二区三区 | 69av免费视频| 欧美一区,二区 | 日本精品一区二区三区在线播放视频 | av一级在线观看 | 国产在线探花 | 国产一级片视频 | 欧美精品在线观看一区 | 国内精品中文字幕 | 久久精品高清 | 日韩精品免费在线观看 | 欧美一级免费在线 | 四虎成人精品永久免费av | 日本韩国精品一区二区在线观看 | 四虎在线永久免费观看 | 日韩三级av | 国产精品一级在线 | 久热精品国产 | 久久久久激情视频 | 成年人免费看的视频 | 国产91精品高清一区二区三区 | 久久人人爽人人爽人人片 | 国产精品对白一区二区三区 | 少妇bbr搡bbb搡bbb | 在线观看成人小视频 | 99精品在线观看视频 | 亚洲午夜精品一区 | 久久久久久久久久久久国产精品 | 中文字幕在线观看一区二区三区 | 久草在在线视频 | 国产精品一区二区av日韩在线 | 久久久久久高清 | 欧美精品一区二区免费 | 日本精品xxxx| 国产成人久久精品77777 | 成人四虎影院 | 久久人人爽人人人人片 | 欧美日韩在线观看不卡 | 国产在线精品区 | 成人免费看黄 | 看片一区二区三区 | 欧美日韩亚洲一 | 奇米影视8888 | 欧美日韩啪啪 | 国产亚洲成av片在线观看 | 国产一区91 | 日韩特级毛片 |