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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码

發(fā)布時(shí)間:2023/12/9 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

之前寫過一篇博客《Spring+Mybatis+Mysql搭建分布式數(shù)據(jù)庫訪問框架》描述如何通過Spring+Mybatis配置動(dòng)態(tài)數(shù)據(jù)源訪問多個(gè)數(shù)據(jù)庫。但是之前的方案有一些限制(原博客中也描述了):只適用于數(shù)據(jù)庫數(shù)量不多且固定的情況。針對(duì)數(shù)據(jù)庫動(dòng)態(tài)增加的情況無能為力。

下面講的方案能支持?jǐn)?shù)據(jù)庫動(dòng)態(tài)增刪,數(shù)量不限。

數(shù)據(jù)庫環(huán)境準(zhǔn)備

下面一Mysql為例,先在本地建3個(gè)數(shù)據(jù)庫用于測(cè)試。需要說明的是本方案不限數(shù)據(jù)庫數(shù)量,支持不同的數(shù)據(jù)庫部署在不同的服務(wù)器上。如圖所示db_project_001、db_project_002、db_project_003。

搭建Java后臺(tái)微服務(wù)項(xiàng)目

創(chuàng)建一個(gè)Spring Boot的maven項(xiàng)目:

config:數(shù)據(jù)源配置管理類。

datasource:自己實(shí)現(xiàn)的數(shù)據(jù)源管理邏輯。

dbmgr:管理了項(xiàng)目編碼與數(shù)據(jù)庫IP、名稱的映射關(guān)系(實(shí)際項(xiàng)目中這部分?jǐn)?shù)據(jù)保存在redis緩存中,可動(dòng)態(tài)增刪)。

mapper:數(shù)據(jù)庫訪問接口。

model:映射模型。

rest:微服務(wù)對(duì)外發(fā)布的restful接口,這里用來測(cè)試。

application.yml:配置了數(shù)據(jù)庫的JDBC參數(shù)。

詳細(xì)的代碼實(shí)現(xiàn)

1. 添加數(shù)據(jù)源配置

package com.elon.dds.config;

import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.beans.factory.annotation.Qualifier;

import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import com.elon.dds.datasource.DynamicDataSource;

/**

* 數(shù)據(jù)源配置管理。

*

* @author elon

* @version 2018年2月26日

*/

@Configuration

@MapperScan(basePackages="com.elon.dds.mapper", value="sqlSessionFactory")

public class DataSourceConfig {

/**

* 根據(jù)配置參數(shù)創(chuàng)建數(shù)據(jù)源。使用派生的子類。

*

* @return 數(shù)據(jù)源

*/

@Bean(name="dataSource")

@ConfigurationProperties(prefix="spring.datasource")

public DataSource getDataSource() {

DataSourceBuilder builder = DataSourceBuilder.create();

builder.type(DynamicDataSource.class);

return builder.build();

}

/**

* 創(chuàng)建會(huì)話工廠。

*

* @param dataSource 數(shù)據(jù)源

* @return 會(huì)話工廠

*/

@Bean(name="sqlSessionFactory")

public SqlSessionFactory getSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) {

SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

bean.setDataSource(dataSource);

try {

return bean.getObject();

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

}

2.定義動(dòng)態(tài)數(shù)據(jù)源

1)? 首先增加一個(gè)數(shù)據(jù)庫標(biāo)識(shí)類,用于區(qū)分不同的數(shù)據(jù)庫訪問。

由于我們?yōu)椴煌膒roject創(chuàng)建了單獨(dú)的數(shù)據(jù)庫,所以使用項(xiàng)目編碼作為數(shù)據(jù)庫的索引。而微服務(wù)支持多線程并發(fā)的,采用線程變量。

package com.elon.dds.datasource;

/**

* 數(shù)據(jù)庫標(biāo)識(shí)管理類。用于區(qū)分?jǐn)?shù)據(jù)源連接的不同數(shù)據(jù)庫。

*

* @author elon

* @version 2018-02-25

*/

public class DBIdentifier {

/**

* 用不同的工程編碼來區(qū)分?jǐn)?shù)據(jù)庫

*/

private static ThreadLocal projectCode = new ThreadLocal();

public static String getProjectCode() {

return projectCode.get();

}

public static void setProjectCode(String code) {

projectCode.set(code);

}

}

2)? 從DataSource派生了一個(gè)DynamicDataSource,在其中實(shí)現(xiàn)數(shù)據(jù)庫連接的動(dòng)態(tài)切換

import java.lang.reflect.Field;

import java.sql.Connection;

import java.sql.SQLException;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import org.apache.tomcat.jdbc.pool.DataSource;

import org.apache.tomcat.jdbc.pool.PoolProperties;

import com.elon.dds.dbmgr.ProjectDBMgr;

/**

* 定義動(dòng)態(tài)數(shù)據(jù)源派生類。從基礎(chǔ)的DataSource派生,動(dòng)態(tài)性自己實(shí)現(xiàn)。

*

* @author elon

* @version 2018-02-25

*/

public class DynamicDataSource extends DataSource {

private static Logger log = LogManager.getLogger(DynamicDataSource.class);

/**

* 改寫本方法是為了在請(qǐng)求不同工程的數(shù)據(jù)時(shí)去連接不同的數(shù)據(jù)庫。

*/

@Override

public Connection getConnection(){

String projectCode = DBIdentifier.getProjectCode();

//1、獲取數(shù)據(jù)源

DataSource dds = DDSHolder.instance().getDDS(projectCode);

//2、如果數(shù)據(jù)源不存在則創(chuàng)建

if (dds == null) {

try {

DataSource newDDS = initDDS(projectCode);

DDSHolder.instance().addDDS(projectCode, newDDS);

} catch (IllegalArgumentException | IllegalAccessException e) {

log.error("Init data source fail. projectCode:" + projectCode);

return null;

}

}

dds = DDSHolder.instance().getDDS(projectCode);

try {

return dds.getConnection();

} catch (SQLException e) {

e.printStackTrace();

return null;

}

}

/**

* 以當(dāng)前數(shù)據(jù)對(duì)象作為模板復(fù)制一份。

*

* @return dds

* @throws IllegalAccessException

* @throws IllegalArgumentException

*/

private DataSource initDDS(String projectCode) throws IllegalArgumentException, IllegalAccessException {

DataSource dds = new DataSource();

// 2、復(fù)制PoolConfiguration的屬性

PoolProperties property = new PoolProperties();

Field[] pfields = PoolProperties.class.getDeclaredFields();

for (Field f : pfields) {

f.setAccessible(true);

Object value = f.get(this.getPoolProperties());

try

{

f.set(property, value);

}

catch (Exception e)

{

log.info("Set value fail. attr name:" + f.getName());

continue;

}

}

dds.setPoolProperties(property);

// 3、設(shè)置數(shù)據(jù)庫名稱和IP(一般來說,端口和用戶名、密碼都是統(tǒng)一固定的)

String urlFormat = this.getUrl();

String url = String.format(urlFormat, ProjectDBMgr.instance().getDBIP(projectCode),

ProjectDBMgr.instance().getDBName(projectCode));

dds.setUrl(url);

return dds;

}

}

3)? 通過DDSTimer控制數(shù)據(jù)連接釋放(超過指定時(shí)間未使用的數(shù)據(jù)源釋放)

package com.elon.dds.datasource;

import org.apache.tomcat.jdbc.pool.DataSource;

/**

* 動(dòng)態(tài)數(shù)據(jù)源定時(shí)器管理。長時(shí)間無訪問的數(shù)據(jù)庫連接關(guān)閉。

*

* @author elon

* @version 2018年2月25日

*/

public class DDSTimer {

/**

* 空閑時(shí)間周期。超過這個(gè)時(shí)長沒有訪問的數(shù)據(jù)庫連接將被釋放。默認(rèn)為10分鐘。

*/

private static long idlePeriodTime = 10 * 60 * 1000;

/**

* 動(dòng)態(tài)數(shù)據(jù)源

*/

private DataSource dds;

/**

* 上一次訪問的時(shí)間

*/

private long lastUseTime;

public DDSTimer(DataSource dds) {

this.dds = dds;

this.lastUseTime = System.currentTimeMillis();

}

/**

* 更新最近訪問時(shí)間

*/

public void refreshTime() {

lastUseTime = System.currentTimeMillis();

}

/**

* 檢測(cè)數(shù)據(jù)連接是否超時(shí)關(guān)閉。

*

* @return true-已超時(shí)關(guān)閉; false-未超時(shí)

*/

public boolean checkAndClose() {

if (System.currentTimeMillis() - lastUseTime > idlePeriodTime)

{

dds.close();

return true;

}

return false;

}

public DataSource getDds() {

return dds;

}

}

4)????? 增加DDSHolder來管理不同的數(shù)據(jù)源,提供數(shù)據(jù)源的添加、查詢功能

package com.elon.dds.datasource;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Timer;

import org.apache.tomcat.jdbc.pool.DataSource;

/**

* 動(dòng)態(tài)數(shù)據(jù)源管理器。

*

* @author elon

* @version 2018年2月25日

*/

public class DDSHolder {

/**

* 管理動(dòng)態(tài)數(shù)據(jù)源列表。

*/

private Map ddsMap = new HashMap();

/**

* 通過定時(shí)任務(wù)周期性清除不使用的數(shù)據(jù)源

*/

private static Timer clearIdleTask = new Timer();

static {

clearIdleTask.schedule(new ClearIdleTimerTask(), 5000, 60 * 1000);

};

private DDSHolder() {

}

/*

* 獲取單例對(duì)象

*/

public static DDSHolder instance() {

return DDSHolderBuilder.instance;

}

/**

* 添加動(dòng)態(tài)數(shù)據(jù)源。

*

* @param projectCode 項(xiàng)目編碼

* @param dds dds

*/

public synchronized void addDDS(String projectCode, DataSource dds) {

DDSTimer ddst = new DDSTimer(dds);

ddsMap.put(projectCode, ddst);

}

/**

* 查詢動(dòng)態(tài)數(shù)據(jù)源

*

* @param projectCode 項(xiàng)目編碼

* @return dds

*/

public synchronized DataSource getDDS(String projectCode) {

if (ddsMap.containsKey(projectCode)) {

DDSTimer ddst = ddsMap.get(projectCode);

ddst.refreshTime();

return ddst.getDds();

}

return null;

}

/**

* 清除超時(shí)無人使用的數(shù)據(jù)源。

*/

public synchronized void clearIdleDDS() {

Iterator> iter = ddsMap.entrySet().iterator();

for (; iter.hasNext(); ) {

Entry entry = iter.next();

if (entry.getValue().checkAndClose())

{

iter.remove();

}

}

}

/**

* 單例構(gòu)件類

* @author elon

* @version 2018年2月26日

*/

private static class DDSHolderBuilder {

private static DDSHolder instance = new DDSHolder();

}

}

5)????? 定時(shí)器任務(wù)ClearIdleTimerTask用于定時(shí)清除空閑的數(shù)據(jù)源

package com.elon.dds.datasource;

import java.util.TimerTask;

/**

* 清除空閑連接任務(wù)。

*

* @author elon

* @version 2018年2月26日

*/

public class ClearIdleTimerTask extends TimerTask {

@Override

public void run() {

DDSHolder.instance().clearIdleDDS();

}

}

3.?????? 管理項(xiàng)目編碼與數(shù)據(jù)庫IP和名稱的映射關(guān)系

package com.elon.dds.dbmgr;

import java.util.HashMap;

import java.util.Map;

/**

* 項(xiàng)目數(shù)據(jù)庫管理。提供根據(jù)項(xiàng)目編碼查詢數(shù)據(jù)庫名稱和IP的接口。

* @author elon

* @version 2018年2月25日

*/

public class ProjectDBMgr {

/**

* 保存項(xiàng)目編碼與數(shù)據(jù)名稱的映射關(guān)系。這里是硬編碼,實(shí)際開發(fā)中這個(gè)關(guān)系數(shù)據(jù)可以保存到redis緩存中;

* 新增一個(gè)項(xiàng)目或者刪除一個(gè)項(xiàng)目只需要更新緩存。到時(shí)這個(gè)類的接口只需要修改為從緩存拿數(shù)據(jù)。

*/

private Map dbNameMap = new HashMap();

/**

* 保存項(xiàng)目編碼與數(shù)據(jù)庫IP的映射關(guān)系。

*/

private Map dbIPMap = new HashMap();

private ProjectDBMgr() {

dbNameMap.put("project_001", "db_project_001");

dbNameMap.put("project_002", "db_project_002");

dbNameMap.put("project_003", "db_project_003");

dbIPMap.put("project_001", "127.0.0.1");

dbIPMap.put("project_002", "127.0.0.1");

dbIPMap.put("project_003", "127.0.0.1");

}

public static ProjectDBMgr instance() {

return ProjectDBMgrBuilder.instance;

}

// 實(shí)際開發(fā)中改為從緩存獲取

public String getDBName(String projectCode) {

if (dbNameMap.containsKey(projectCode)) {

return dbNameMap.get(projectCode);

}

return "";

}

//實(shí)際開發(fā)中改為從緩存中獲取

public String getDBIP(String projectCode) {

if (dbIPMap.containsKey(projectCode)) {

return dbIPMap.get(projectCode);

}

return "";

}

private static class ProjectDBMgrBuilder {

private static ProjectDBMgr instance = new ProjectDBMgr();

}

}

4.?????? 定義數(shù)據(jù)庫訪問的mapper

package com.elon.dds.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Result;

import org.apache.ibatis.annotations.Results;

import org.apache.ibatis.annotations.Select;

import com.elon.dds.model.User;

/**

* Mybatis映射接口定義。

*

* @author elon

* @version 2018年2月26日

*/

@Mapper

public interface UserMapper

{

/**

* 查詢所有用戶數(shù)據(jù)

* @return 用戶數(shù)據(jù)列表

*/

@Results(value= {

@Result(property="userId", column="id"),

@Result(property="name", column="name"),

@Result(property="age", column="age")

})

@Select("select id, name, age from tbl_user")

List getUsers();

}

5.?????? 定義查詢對(duì)象模型

package com.elon.dds.model;

public class User

{

private int userId = -1;

private String name = "";

private int age = -1;

@Override

public String toString()

{

return "name:" + name + "|age:" + age;

}

public int getUserId()

{

return userId;

}

public void setUserId(int userId)

{

this.userId = userId;

}

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

public int getAge()

{

return age;

}

public void setAge(int age)

{

this.age = age;

}

}

6.?????? 定義查詢用戶數(shù)據(jù)的restful接口

package com.elon.dds.rest;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

import com.elon.dds.datasource.DBIdentifier;

import com.elon.dds.mapper.UserMapper;

import com.elon.dds.model.User;

/**

* 用戶數(shù)據(jù)訪問接口。

*

* @author elon

* @version 2018年2月26日

*/

@RestController

@RequestMapping(value="/user")

public class WSUser {

@Autowired

private UserMapper userMapper;

/**

* 查詢項(xiàng)目中所有用戶信息

*

* @param projectCode 項(xiàng)目編碼

* @return 用戶列表

*/

@RequestMapping(value="/v1/users", method=RequestMethod.GET)

public List queryUser(@RequestParam(value="projectCode", required=true) String projectCode)

{

DBIdentifier.setProjectCode(projectCode);

return userMapper.getUsers();

}

}

要求每次查詢都要帶上projectCode參數(shù)。

7.?????? 編寫Spring Boot App的啟動(dòng)代碼

package com.elon.dds;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

/**

* Hello world!

*

*/

@SpringBootApplication

public class App

{

public static void main( String[] args )

{

System.out.println( "Hello World!" );

SpringApplication.run(App.class, args);

}

}

8.?????? 在application.yml中配置數(shù)據(jù)源

其中的數(shù)據(jù)庫IP和數(shù)據(jù)庫名稱使用%s。在查詢用戶數(shù)據(jù)中動(dòng)態(tài)切換。

spring:

datasource:

url: jdbc:mysql://%s:3306/%s?useUnicode=true&characterEncoding=utf-8

username: root

password:

driver-class-name: com.mysql.jdbc.Driver

logging:

config: classpath:log4j2.xml

測(cè)試方案

1.?????? 查詢project_001的數(shù)據(jù),正常返回

2.?????? 查詢project_002的數(shù)據(jù),正常返回

總結(jié)

以上所述是小編給大家介紹的通過Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問多個(gè)數(shù)據(jù)庫的實(shí)現(xiàn)代碼,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

總結(jié)

以上是生活随笔為你收集整理的mysql 多数据源访问_通过Spring Boot配置动态数据源访问多个数据库的实现代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

亚洲91中文字幕无线码三区 | 欧美日韩亚洲在线 | 免费在线观看视频一区 | 久久综合九色综合97_ 久久久 | 2021国产在线视频 | 国产又黄又爽又猛视频日本 | 99c视频高清免费观看 | 黄色三级网站在线观看 | 精品国产aⅴ一区二区三区 在线直播av | 日韩免费av网址 | 福利一区二区三区四区 | 丁香激情网 | 青青河边草免费 | 国产 欧美 日本 | 国产黄色精品在线 | 亚洲男男gaygay无套 | 免费国产视频 | 国产 中文 日韩 欧美 | 日韩中文字幕91 | 久久综合久久综合九色 | 中文字幕资源站 | 91传媒激情理伦片 | 亚洲国产综合在线 | 国产精品毛片一区二区在线看 | 中文网丁香综合网 | 97超碰资源网 | 精品一二三四视频 | 久久五月情影视 | 亚洲激情综合 | 九九免费在线观看视频 | 国产又粗又猛又色又黄视频 | 免费韩国av| 色丁香综合 | 成 人 黄 色视频免费播放 | 久久综合9988久久爱 | 9在线观看免费高清完整版在线观看明 | 黄色免费高清视频 | 久久免费av电影 | 欧美在线视频不卡 | 毛片1000部免费看 | 久久亚洲国产精品 | 中文字幕在线人 | 91粉色视频 | 日本性xxx | 黄色亚洲在线 | 97国产小视频 | 久久综合导航 | 国产精品一区二区麻豆 | 日本一区二区免费在线观看 | 亚洲最新av网址 | 国内精品小视频 | 中文字幕三区 | 91人人射| 欧美五月婷婷 | 精品久久国产精品 | 久久大片网站 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 在线观看视频在线观看 | 99久久精品免费视频 | 97人人添人澡人人爽超碰动图 | 久久精品观看 | 婷婷国产v亚洲v欧美久久 | 在线免费观看不卡av | 久久久久亚洲天堂 | 男女日麻批 | 中文字幕在线免费看 | 国内亚洲精品 | 少妇性aaaaaaaaa视频 | 最近中文字幕在线中文高清版 | 午夜手机电影 | 欧美性网站 | 欧美色图一区 | 色诱亚洲精品久久久久久 | 久久最新网址 | 麻豆久久精品 | 免费91在线观看 | 亚洲精品高清在线观看 | 91精品91| 国产视频 亚洲视频 | 欧美在线视频第一页 | 高潮久久久久久久久 | 日本久久精品视频 | 国内精品亚洲 | 久草成人在线 | 国产精品伦一区二区三区视频 | 国产精品99久久久久久小说 | 色婷婷免费视频 | 欧美一区免费观看 | 国产成人精品a | 波多野结衣在线观看视频 | 成人av教育| 久久在线免费观看视频 | 波多野结衣电影一区二区三区 | 中文字幕中文字幕中文字幕 | 天天综合精品 | 西西4444www大胆无视频 | 久久免费精品 | 人人狠狠综合久久亚洲 | 亚洲国产日韩一区 | 麻豆视频免费版 | 国产九九热视频 | 日本精品视频在线 | 在线中文字幕网站 | 成人动漫一区二区三区 | 亚洲更新最快 | 亚洲最大成人免费网站 | 日韩亚洲国产中文字幕 | 免费看国产曰批40分钟 | 久久色在线观看 | 亚洲一区二区黄色 | 欧美少妇xxx| 天天射天天搞 | 色婷婷六月天 | 午夜影视剧场 | 99re亚洲国产精品 | 香蕉在线视频观看 | 一区二区三区免费在线播放 | 美女视频黄免费的久久 | 亚洲黄色av网址 | 欧美日韩裸体免费视频 | 色综合天天视频在线观看 | 成人午夜黄色 | 狠狠做深爱婷婷综合一区 | 亚洲午夜精品一区二区三区电影院 | 在线观看日本高清mv视频 | 97色狠狠 | 亚洲国产天堂av | 三级在线国产 | 天天操天天透 | 欧美日韩视频观看 | 1024手机看片国产 | 亚洲激情视频 | 操碰av| 日韩一区二区三区在线观看 | 国产一区二区精品 | 国产精品青草综合久久久久99 | 麻豆视频在线 | 99精品国产99久久久久久97 | 最近日本中文字幕 | 久久久久亚洲精品国产 | 亚洲国产精品影院 | 探花视频网站 | 一区二区三区高清在线观看 | 免费中文字幕视频 | 美女视频黄免费的 | 国产美女免费视频 | 国产黄色资源 | 日日爱av| 不卡av免费在线观看 | 中文字幕电影一区 | 国产成人99av超碰超爽 | 日韩a级免费视频 | 婷婷色在线资源 | 成人在线视频免费看 | 国产精品久久久久久久久久久久久久 | 久久综合久色欧美综合狠狠 | 亚洲一区免费在线 | 久久久久久欧美二区电影网 | 欧美一二三四在线 | 久久午夜电影院 | 91高清在线看 | 97精产国品一二三产区在线 | 色中色亚洲| 欧美成年人在线视频 | 国产a级片免费观看 | 久精品一区 | 在线观看一级视频 | 久久人人爽人人爽人人片av免费 | 500部大龄熟乱视频 欧美日本三级 | 国产精品一区二区三区视频免费 | 欧美韩国日本在线观看 | 91精品影视 | 亚洲做受高潮欧美裸体 | 久久国产精品99久久久久久老狼 | 欧美国产一区在线 | 91视频专区| 日韩中文字幕在线观看 | 99久久电影 | 亚洲国产播放 | 国产精品理论片在线观看 | 天天综合网天天综合色 | 亚洲激情综合 | 夜夜操天天干, | 久久99国产精品免费 | 天天操天天添天天吹 | 天天干天天草天天爽 | 久操伊人 | 中文亚洲欧美日韩 | av在线激情 | 免费视频国产 | a v在线视频 | 亚洲aⅴ免费在线观看 | 日夜夜精品视频 | 中文字幕成人av | 国产在线高清精品 | 国产在线观看,日本 | 偷拍精品一区二区三区 | 日韩精品免费一线在线观看 | 黄色片软件网站 | 亚洲v欧美v国产v在线观看 | 国产精品久久久久久一区二区 | 精品99在线观看 | 久久99网| 91观看视频 | 97国产人人| 亚洲区视频在线 | 亚洲va天堂va欧美ⅴa在线 | 久久天天躁夜夜躁狠狠躁2022 | 91色视频 | 久久国产亚洲 | 激情五月六月婷婷 | 99草视频| 五月天亚洲婷婷 | 国产免费成人av | 欧美人人爱 | 天天爱天天干天天爽 | 99精品国产兔费观看久久99 | 久久久国产精品麻豆 | 欧美久久成人 | 精品国产成人在线影院 | 亚洲午夜久久久久久久久 | 亚洲精品美女久久久 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 精品亚洲va在线va天堂资源站 | 国产玖玖在线 | 99国产成+人+综合+亚洲 欧美 | 狠狠操导航 | a黄色| 精品久久久久亚洲 | 国产视频二区三区 | 国产一二三区av | 五月婷av| 成 人 黄 色 视频免费播放 | 高清色免费| 色综合久久88色综合天天 | 日本三级久久久 | 久久精久久精 | 亚洲精品免费在线观看视频 | 成人一区二区三区在线 | 国产夫妻性生活自拍 | 国产精品99久久99久久久二8 | 国产黄色在线看 | 久久精品—区二区三区 | 爱爱av在线| 日韩v在线91成人自拍 | 国产男男gay做爰 | 国产99一区| 久久黄色美女 | 91片网| 日韩视频一区二区在线观看 | 亚洲精品一区二区在线观看 | 国产精品久久久免费 | 97电影手机 | 成年人在线看视频 | 九九久久影视 | 久久a久久| 国产色中涩 | 色吊丝在线永久观看最新版本 | 国产小视频在线播放 | 国产精品视频免费看 | 日韩三级免费观看 | 久久欧美在线电影 | 欧洲高潮三级做爰 | 免费福利在线视频 | 久久精久久精 | 夜夜操夜夜干 | 亚洲综合婷婷 | 欧美韩日精品 | 久久电影国产免费久久电影 | 麻豆免费在线播放 | 天天躁日日躁狠狠躁 | 日韩a在线播放 | 欧美色就是色 | 黄网站色成年免费观看 | 久久综合色播五月 | 精品在线观看免费 | 久av在线 | 欧美精品乱码久久久久久按摩 | 免费不卡中文字幕视频 | 亚洲精选视频在线 | 国产三级精品在线 | 国产精品99久久久久久久久 | 亚洲综合精品视频 | 国产午夜一区 | 免费情缘 | 99视频在线免费看 | 蜜臀av夜夜澡人人爽人人 | 久久国产精品一区二区三区 | 久久精品视频18 | 麻豆91小视频 | 国产精品久久综合 | 国产一区在线看 | 国产在线观看黄 | 天天躁日日躁狠狠躁 | 亚洲精品免费在线观看视频 | 东方av在| 亚洲精品女人久久久 | 九色视频网站 | 亚洲国产精品成人精品 | 欧美日韩超碰 | 黄色三级网站在线观看 | 蜜臀久久99静品久久久久久 | 久久日本视频 | 亚洲精品美女在线观看播放 | 国产一区视频免费在线观看 | 欧美激情另类文学 | 久章操| 国产精品v欧美精品v日韩 | 中文av在线播放 | 丁香激情五月婷婷 | 色婷婷精品大在线视频 | 永久免费的啪啪网站免费观看浪潮 | 丁香六月欧美 | 久久国产影院 | 天堂在线视频中文网 | 97免费公开视频 | 欧美福利视频一区 | 手机在线免费av | 欧美精品亚州精品 | 在线免费观看视频一区二区三区 | 中日韩在线视频 | 伊人午夜| 国产精品黄色在线观看 | 欧美日韩国产在线观看 | 日韩在线小视频 | 超碰精品在线观看 | 成人资源在线观看 | 欧洲视频一区 | 亚洲国产精品成人女人久久 | 伊人网站 | 一区二区亚洲精品 | 91免费视频网站在线观看 | 性色视频在线 | 国产精品美女久久久久久久 | 久久天天操 | 狠狠色狠狠色综合系列 | 亚洲人成在线观看 | av三级在线看 | 国产精品色视频 | 日日草夜夜操 | 亚洲资源网 | 欧美性猛片 | 激情视频网页 | 免费亚洲电影 | 亚洲狠狠干 | 黄色在线视频网址 | 日韩91av | 久久久美女 | 亚洲国产精品成人精品 | 亚洲综合成人婷婷小说 | 日韩免费视频线观看 | 欧美a级在线播放 | 国产精品69av | 欧美日在线| 日韩高清免费在线 | 欧美黄色软件 | av在线小说 | 国产在线观看不卡 | 黄色在线视频网址 | 国产剧情一区二区 | 国产精品乱码高清在线看 | 国产区在线视频 | 不卡的一区二区三区 | 国产精品无 | 3d黄动漫免费看 | 国产伦理久久 | 777xxx欧美| 日韩综合一区二区三区 | 菠萝菠萝蜜在线播放 | 黄色av一级 | 国产精品 日韩 欧美 | av电影 一区二区 | 国产99久久久久 | 亚洲高清视频在线 | 日韩精品视频免费 | 韩日电影在线免费看 | 日韩va亚洲va欧美va久久 | 国产伦理久久精品久久久久_ | 国产做爰视频 | 色综合久久66| 亚洲激情网站免费观看 | 久草观看 | 天天摸天天舔天天操 | 亚洲午夜精品久久久久久久久 | 免费视频你懂的 | 亚洲久在线 | 国产黄色电影 | 夜夜操天天干 | 人人添人人澡人人澡人人人爽 | 久久99国产综合精品免费 | 深爱激情综合 | 国产成人久久 | 黄色亚洲| 国产精品美乳一区二区免费 | 亚洲成人中文在线 | 麻豆影视网 | 亚洲精品tv久久久久久久久久 | 精品一区二三区 | 色激情五月 | 探花视频在线观看+在线播放 | 天堂视频中文在线 | 国产精品伦一区二区三区视频 | 麻豆成人在线观看 | 亚洲二级片 | 国产精品欧美久久久久久 | 久久久久久久久黄色 | 久久婷婷久久 | av中文字幕在线免费观看 | 久草在线免费资源 | 黄色在线成人 | 成 人 黄 色 视频免费播放 | 国产人免费人成免费视频 | 国产黄色精品视频 | 美女视频国产 | 在线最新av| 亚洲欧美国产视频 | 国产九九九九九 | 亚洲精品久久久久www | 亚洲电影久久 | 亚洲精品国产第一综合99久久 | www.综合网.com | 99精品国产一区二区三区麻豆 | 亚洲精品国产精品国 | 婷婷亚洲五月色综合 | 久久不射影院 | 一级一片免费视频 | 九九久久国产 | 免费一级片观看 | 中文字幕高清免费日韩视频在线 | 欧美午夜寂寞影院 | 91大神电影 | 日韩免费不卡视频 | 午夜精品一区二区三区免费视频 | 大片网站久久 | 国产美女免费视频 | 亚洲一级电影视频 | 免费黄色av电影 | 中文字幕在线播放第一页 | 国产一区二区三区黄 | 亚洲视频第一页 | 成年一级片 | 成人黄色片免费 | www黄| 久久 地址| 久久久精品国产免费观看一区二区 | a级片韩国| 中文字幕电影网 | 超碰99在线| 日韩高清免费无专码区 | 亚洲视频 视频在线 | 日韩免费看的电影 | 国产麻豆精品一区 | 精品一区二区三区在线播放 | 91精品一区在线观看 | 久草视频免费在线播放 | 99精品偷拍视频一区二区三区 | 日本久久综合视频 | 2022国产精品视频 | 午夜精品久久久久久中宇69 | 三级av在线 | 国产99中文字幕 | 人人盈棋牌 | 91夫妻自拍| 日韩在线电影一区 | 91福利区一区二区三区 | 亚洲 欧美 91| 成人免费视频播放 | 国产精品五月天 | 99久久精品国产一区 | 色99在线 | 国产精品视频最多的网站 | 国产成人av电影在线观看 | 天天干天天操天天 | 久久精品一区二区三区四区 | 欧美精品乱码久久久久久 | 粉嫩一二三区 | 日本 在线 视频 中文 有码 | 色瓜| 看片一区二区三区 | 天天射一射 | 国产精品一区电影 | 九九一级片 | 91自拍成人 | 亚洲一级二级 | 粉嫩aⅴ一区二区三区 | 亚洲一级片 | 17婷婷久久www| 免费h精品视频在线播放 | 1区2区视频 | 亚洲日本va午夜在线影院 | 五月天激情视频 | 婷婷在线综合 | 亚洲第一伊人 | 久热国产视频 | 97超碰人人网 | 夜夜骑日日操 | 成人小视频在线观看免费 | 人人网人人爽 | 成年人免费看的视频 | av在线电影网站 | 国产拍揄自揄精品视频麻豆 | 免费进去里的视频 | 国产理伦在线 | 一区二区三区视频网站 | 一区二区三区在线观看免费视频 | 午夜精品福利一区二区三区蜜桃 | www色com| 国产无遮挡又黄又爽馒头漫画 | 久久久久久久久久福利 | 丁香六月中文字幕 | 久久久精品网站 | 超碰人人干人人 | 婷婷激情久久 | av免费网站在线观看 | a天堂中文在线 | 狠狠操在线 | 欧美少妇18p| 中文字幕黄色网 | 99久热在线精品视频观看 | 日韩久久精品 | 91麻豆精品国产91久久久久久 | 奇米网在线观看 | 国产成人久久精品77777综合 | 日韩av电影免费在线观看 | 免费看的毛片 | 国产一区在线免费观看视频 | 伊人一级 | 最近日韩中文字幕中文 | 日韩视频一区二区三区 | 久久久精品网 | 最新日韩视频 | 日批视频 | 国产成人精品亚洲日本在线观看 | 97日日| 啪啪精品 | 亚洲精品自拍视频在线观看 | 在线看小早川怜子av | 国产在线观看av | 九九九电影免费看 | 国产精品免费观看国产网曝瓜 | 91成人免费| 五月天婷婷在线观看视频 | 免费久久99精品国产婷婷六月 | 不卡的av电影 | 亚洲国产精品成人女人久久 | 天天干天天操天天干 | 狠狠狠操 | 日韩v欧美v日本v亚洲v国产v | 视频国产区 | 免费看黄电影 | 97精品国自产拍在线观看 | www.com黄 | 99精品观看 | 00av视频 | 日本aaa在线观看 | 色综合天天色 | 91麻豆网站| adn—256中文在线观看 | 毛片一级免费一级 | 欧美精品在线观看免费 | 久草在线综合 | 欧美午夜精品久久久久 | 日韩午夜网站 | 99精品视频免费观看视频 | 成人a毛片| 久艹在线免费观看 | 久久综合射 | 婷婷丁香在线观看 | 国产.精品.日韩.另类.中文.在线.播放 | 超碰人人91 | 懂色av一区二区在线播放 | 精品久久网| 免费久草视频 | 在线观看国产成人av片 | 97超在线视频 | 国内少妇自拍视频一区 | 国产精品美女在线观看 | 黄色www在线观看 | 亚洲午夜精品久久久久久久久 | 久久精品视频在线 | 91福利社在线观看 | 极品久久久 | 美女又爽又黄 | 亚洲激情影院 | 久久综合九色99 | 久久久久成人精品亚洲国产 | 免费特级黄色片 | 久久视频国产精品免费视频在线 | 国产va在线| 在线观看av中文字幕 | 亚洲黄色小说网 | 99精品区| 久久99久久精品国产 | 五月婷婷久久丁香 | 中文字幕在线观看视频免费 | 亚洲成av人片在线观看无 | 丁香导航| 天天舔天天搞 | 狠狠88综合久久久久综合网 | 综合久久网站 | 色综合综合 | 九九交易行官网 | 天天弄天天操 | 免费看三级 | 欧美va天堂va视频va在线 | 综合影视| 久久精品欧美一区二区三区麻豆 | 久在线 | 99久久久国产精品免费99 | 亚洲国产精品久久久久久 | 毛片美女网站 | 天天干.com| 日韩久久激情 | 精品日本视频 | 久草综合在线观看 | 黄色福利 | 亚洲精品午夜aaa久久久 | 天天插天天狠 | 国产一区免费在线 | 久久久91精品国产一区二区精品 | 国产香蕉视频在线播放 | 国产视频18| 五月天开心 | 国产在线精品一区二区不卡了 | 奇米导航| 午夜精品福利影院 | 国产欧美综合在线观看 | 欧美一区二区日韩一区二区 | 人人射人人插 | 日韩免费在线视频观看 | 亚洲成a人片77777潘金莲 | 欧美黄污视频 | 樱空桃av | 天堂av在线7 | 久草在线播放视频 | 色七七亚洲影院 | 狠狠干婷婷 | 超碰在线日韩 | 日韩av中文 | 国产一区在线观看视频 | 中文字幕视频观看 | 69精品久久久 | 久草国产在线 | 国产成人精品国内自产拍免费看 | 久久免费高清 | 成年人在线免费看 | 九九免费精品视频 | 婷婷去俺也去六月色 | 亚洲第一伊人 | 狠狠精品 | 看毛片的网址 | 国产精品视频永久免费播放 | 午夜精品久久久久久久99水蜜桃 | 国产一级片视频 | 97日日碰人人模人人澡分享吧 | 天天干天天拍天天操 | 日韩视频免费观看高清 | 久久综合久久88 | 久久在线| 午夜视频免费 | 日日碰狠狠躁久久躁综合网 | 91丨精品丨蝌蚪丨白丝jk | 丰满少妇在线观看 | 精品国产一区二区三区在线观看 | 久久99久久99| 亚洲日本韩国一区二区 | 精品一区精品二区高清 | 香蕉视频在线看 | 99在线看 | 日韩中文在线视频 | 中文字幕免费看 | 日韩精品久久一区二区 | 亚洲九九爱 | 91精品国自产拍天天拍 | 中文在线免费观看 | 欧美精品久久久久久久久久久 | 婷婷六月天在线 | 欧美不卡视频在线 | 日本精品视频免费 | 久久高清国产 | 国产成人精品午夜在线播放 | 毛片网站免费在线观看 | 久久久久免费网站 | 人人盈棋牌 | 日韩精品一区二区免费视频 | 色婷婷亚洲婷婷 | 麻豆国产在线视频 | 日日干天天插 | 奇米网网址 | av电影一区二区 | 2024国产精品视频 | 亚洲成a人片综合在线 | 日韩在线免费电影 | 日韩在线网| 国产精品99精品久久免费 | 91日韩在线视频 | 国产 日韩 欧美 中文 在线播放 | 欧美一级在线观看视频 | 国产91aaa | av成人在线电影 | 激情五月色播五月 | 日本三级人妇 | 成年人免费在线观看 | 亚洲欧美成人网 | 久久久天堂 | 日本在线精品视频 | 久久这里精品视频 | 精品国产免费久久 | 亚洲欧美偷拍另类 | 久久免费看av | 天天射天天干天天插 | 免费视频a| 黄色小视频在线观看免费 | 夜夜视频 | av久久在线| 91高清一区| 国产专区精品视频 | 国产小视频福利在线 | 在线国产精品视频 | 蜜桃传媒一区二区 | 欧美一级片在线免费观看 | 99这里只有精品视频 | 日韩免费高清在线观看 | 免费日韩一区二区三区 | 国产亚洲一区二区三区 | 最近中文字幕高清字幕在线视频 | av大全在线免费观看 | 日韩亚洲在线 | www免费看片com | 天天草天天草 | 亚洲国产中文在线观看 | 欧美成人播放 | 午夜精品久久 | 最新成人av | 欧美国产在线看 | 亚洲国产精品成人女人久久 | 久久曰视频 | 一本一本久久a久久 | 精品国产欧美一区二区 | 婷婷色网站 | 黄色中文字幕 | 国产一级在线观看 | 成人午夜av电影 | 国产第一页精品 | 狠狠狠狠狠狠狠狠 | 精品国产一区二区三区在线观看 | 2019中文最近的2019中文在线 | 国产成人一区二区三区 | 亚洲美女免费精品视频在线观看 | 一区二区三区免费 | 欧美一区二区精美视频 | 91视频在线免费看 | 91大神精品视频在线观看 | 99久久er热在这里只有精品66 | 五月天视频网 | 岛国片在线 | 婷婷在线免费视频 | 色婷婷综合久久久 | 日韩中文字幕免费电影 | 亚洲人成网站精品片在线观看 | 4438全国亚洲精品在线观看视频 | 亚洲精品自拍视频在线观看 | 亚洲天堂在线观看完整版 | 欧美精品乱码99久久影院 | 久久国产热 | 美女在线国产 | 欧美日韩在线观看一区二区 | 国产中文字幕在线免费观看 | 天天干天天干天天干 | 国产91在线播放 | 成人午夜剧场在线观看 | 免费视频a | 国产一级免费观看 | 在线免费观看黄色小说 | 国产中文字幕在线视频 | 久久久久免费精品 | 十八岁免进欧美 | 国产精品黑丝在线观看 | 国产又粗又猛又爽又黄的视频免费 | 久草新在线 | 99精品欧美一区二区 | 三级视频日韩 | 91亚洲国产成人久久精品网站 | 九九免费在线视频 | 亚洲成人av在线 | 日韩精品欧美专区 | 亚洲最新av网址 | 99热这里只有精品1 av中文字幕日韩 | 香蕉视频91| 夜又临在线观看 | 伊人五月在线 | 黄色三级免费看 | 在线91精品 | 国产成人精品日本亚洲999 | 亚洲a色 | 五月婷婷久久综合 | 国产精品网红直播 | 中国一级特黄毛片大片久久 | 国产最新网站 | 手机在线视频福利 | 国产精品免费不卡 | 国产精品美女网站 | 国产无吗一区二区三区在线欢 | 色久网 | 中日韩欧美精彩视频 | 国产精品免费视频一区二区 | 成人黄视频 | 色婷婷久久一区二区 | 国产精品av久久久久久无 | 香蕉影院在线播放 | 日本成址在线观看 | 射九九 | 久久久天天操 | 欧美国产在线看 | 九九精品久久 | 国产精品观看 | 天天骚夜夜操 | 视频一区二区在线 | 欧美欧美 | 免费黄色小网站 | 国产亚洲欧美一区 | 97香蕉久久超级碰碰高清版 | 青草视频在线 | 欧美日韩不卡在线 | 免费在线观看一级片 | 在线香蕉视频 | 亚洲区精品视频 | 天天爱天天色 | 国产在线精品一区二区 | 一区二区三区高清 | 国产精品久久久久久久久岛 | 不卡av电影在线 | 成 人 免费 黄 色 视频 | 韩日电影在线观看 | 91av精品| 中文字幕色站 | 91大神视频网站 | 国产一区二区三区高清播放 | 精品久久一 | 色婷婷福利视频 | 国产一区二区三区免费视频 | 欧美精品免费在线观看 | 特级黄色视频毛片 | 人人澡人人爽欧一区 | 亚洲成人频道 | 深夜免费网站 | 日韩精品免费在线 | 不卡的av在线播放 | 在线v片免费观看视频 | 久久综合免费视频 | 最新国产精品久久精品 | 中文字幕在线久一本久 | 999视频网 | 成年人免费在线播放 | 欧美成天堂网地址 | 综合久久久 | 人人干人人干人人干 | 免费麻豆网站 | 亚洲国产成人精品在线 | 成人在线黄色电影 | 婷婷丁香色综合狠狠色 | 成人资源在线 | 五月天综合色激情 | 成人av免费在线观看 | 免费看污网站 | 久久国产视频网站 | 在线观看片 | 亚洲国产字幕 | 成人亚洲精品久久久久 | www久久99 | 欧美色图一区 | 日韩av一区二区在线播放 | 国产日韩欧美网站 | 国产成人精品一区二区三区免费 | 成人在线视频观看 | 日日爽| 成人在线播放网站 | 国产精品久久一卡二卡 | 成全免费观看视频 | av在线日韩| 四虎在线视频免费观看 | 久久午夜色播影院免费高清 | 久久试看| 伊香蕉大综综综合久久啪 | 亚洲资源一区 | av一级二级 | 91麻豆网| 狠狠躁夜夜躁人人爽超碰97香蕉 | 婷婷综合导航 | 日韩精品视频免费专区在线播放 | www.com在线观看 | 亚洲黄色免费 | 欧美精品国产综合久久 | 亚洲a色 | 午夜日b视频| 日韩欧美在线观看一区 | 久久综合狠狠综合 | 久艹在线免费观看 | 99热最新在线 | 成年人视频在线免费 | 国产亚洲免费观看 | 97超碰国产精品女人人人爽 | 中文字幕在线观看视频一区二区三区 | 久久精品国产第一区二区三区 | 超碰在线人人草 | 婷婷综合影院 | 99免在线观看免费视频高清 | 欧美二区视频 | 国产一级大片免费看 | 国产最顶级的黄色片在线免费观看 | 91网站在线视频 | 在线观看中文字幕视频 | 91精品在线免费观看 | 在线观看亚洲专区 | 婷婷丁香色 | 欧美一二三专区 | 久色伊人 | 国产成人在线观看 | 伊人午夜| 毛片激情永久免费 | 欧美日韩一区二区三区免费视频 | 91九色免费视频 | 天天操夜夜摸 | 国产精品久久久久av福利动漫 | 在线视频中文字幕一区 | 精品视频999 | 最新日本中文字幕 | 激情五月婷婷综合 | 日本一区二区三区免费看 | 国产精品久久久久免费 | 亚洲午夜久久久久 | 国产一区二区三区在线 | 四虎国产精 | 一 级 黄 色 片免费看的 | 91福利视频久久久久 | 丁香六月网 | 国产视频亚洲 | 国产高清专区 | 中文字幕一区二区三区精华液 | 欧美一级性生活片 | 国产免费观看久久黄 | 亚洲精品色 | 成人黄色小说网 | 在线看片一区 | 欧美国产亚洲精品久久久8v | 日日干综合 | 中文字幕乱在线伦视频中文字幕乱码在线 | 日韩在线观看中文 | 国产精品高清在线 | 五月激情综合婷婷 | 岛国片在线 | 免费a v视频| 日本中文字幕网 | 丁香六月天婷婷 | 婷婷色影院 | 久免费 | 最新中文字幕在线播放 | 久久综合网色—综合色88 | 欧美在线视频一区二区三区 | 中文字幕久久久精品 | 一区二区三区日韩精品 | 人人超碰人人 | 久久综合天天 | 一区二区三区在线影院 | 三上悠亚一区二区在线观看 | 99r在线播放| 国产精品aⅴ | 最新色站 | 久久爱综合 | 国产精品久久伊人 | 天天色天天 | 97在线看| 91在线亚洲 | 日韩在线免费播放 | 日韩a在线播放 | 日韩在线观看视频中文字幕 | 久久国产精品免费一区二区三区 | 成年人免费电影在线观看 | 日日干日日色 | 在线免费av观看 | 欧美一级性视频 | 日韩av在线小说 | 97色在线视频 | 国产小视频在线免费观看 | 激情中文在线 | 91完整版在线观看 | 精品国产_亚洲人成在线 | 丁香久久| 欧美午夜a | 精品理论片 | 在线91观看 | 国产在线精品区 | 成人黄色小说视频 | 在线观看色网 | 99精品视频中文字幕 | 亚洲麻豆精品 | 欧美精品做受xxx性少妇 | 国产资源精品在线观看 |