黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

Fluent Mybatis實現環境隔離和租戶隔離

瀏覽:2日期:2023-10-18 11:08:59
目錄什么是環境隔離和多租戶隔離環境隔離和多租戶隔離需要做的事情環境隔離和租戶隔離工具類隔離前準備工作增刪改查環境和租戶隔離演示新增數據查詢數據更新數據總結什么是環境隔離和多租戶隔離

我們在實際的業務開發中,經常會碰到環境邏輯隔離和租戶數據邏輯隔離的問題。

環境隔離

我們的開發系統過程中,經常會涉及到日常開發環境,測試環境,預發環境和線上環境,如何區隔這些環境,有些方案是采用獨立的數據庫,有些是采用同一套數據庫(比如線下多個測試環境使用同一個數據庫,預發環境和線上環境使用同一個數據庫),然后對數據進行打標的辦法,來區分不同環境的數據。

多租戶管理

在復雜的業務系統中,比如SaaS應用中,在多用戶環境下共用相同的系統或程序組件,如何確保各用戶間數據的隔離性。簡單講:在一臺服務器上運行單個應用實例,它為多個租戶(客戶)提供服務。從定義中我們可以理解:多租戶是一種架構,是為了讓多用戶環境下使用同一套程序,但要保證用戶間數據隔離。那如何進行多租戶的重點就是同一套程序下實現多用戶數據的隔離,做法其實和環境隔離是同一個道理。這里采用多環境多租戶共用數據表的場景,來探討下FluentMybatis是如何支持多環境和多租戶管理的。

環境隔離和多租戶隔離需要做的事情

比如我們有下面表

create table student( id bigint(21) unsigned auto_increment comment ’主鍵id’primary key, age int null comment ’年齡’, grade int null comment ’年級’, user_name varchar(45) null comment ’名字’, gender_man tinyint(2) default 0 null comment ’性別, 0:女; 1:男’, birthdaydatetime null comment ’生日’, phone varchar(20) null comment ’電話’, bonus_points bigint(21) default 0 null comment ’積分’, status varchar(32) null comment ’狀態(字典)’, home_county_id bigint(21) null comment ’家庭所在區縣’, home_address_id bigint(21) null comment ’home_address外鍵’, address varchar(200) null comment ’家庭詳細住址’, version varchar(200) null comment ’版本號’, env varchar(10) NULL comment ’數據隔離環境’, tenant bigint NOT NULL default 0 comment ’租戶標識’, gmt_created datetime null comment ’創建時間’, gmt_modified datetime null comment ’更新時間’, is_deleted tinyint(2) default 0 null comment ’是否邏輯刪除’) ENGINE = InnoDB DEFAULT CHARSET = utf8 COMMENT ’學生信息表’;

注意其中的2個字段

env, 表示應用部署的環境, 環境的區隔一般是采用應用部署的機器環境變量。 tenant, 表示數據所屬租戶,租戶的隔離一般是通過登錄用戶信息獲取的。

對環境和租戶的隔離,主要是CRUD過程中,需要帶上環境變量和租戶信息。如果沒有框架的支持,就需要在構造SQL的過程中,手動設置env和tenant。這就存在一個嚴重的弊端: 在編碼過程中,需要時刻注意sql語句中不要漏了這2個條件,否則就會產生邏輯錯誤和信息泄露。

為了減少錯誤,我們都會將邏輯進行收攏,下面我們演示fluent mybatis如何統一處理。

環境隔離和租戶隔離工具類

為了進行環境隔離和租戶隔離,我們一般會統一定義獲取環境變量和租戶信息的工具類。

環境隔離工具類

/** * 應用部署環境工具類 */public class EnvUtils { public static String currEnv() {// 應用啟動時, 讀取的機器部署環境變量, 這里簡化為返回固定值演示return 'test1'; }}

租戶隔離工具類

/** * 獲取用戶所屬租戶信息工具類 */public class TenantUtils { /** * 租戶A */ static final long A_TENANT = 111111L; /** * 租戶B */ static final long B_TENANT = 222222L; /** * 租戶信息一般根據登錄用戶身份來判斷, 這里簡化為偶數用戶屬于租戶A, 奇數用戶屬于租戶B * * @return */ public static long findUserTenant() {long userId = loginUserId();if (userId % 2 == 0) { return A_TENANT;} else { return B_TENANT;} } /** * 當前登錄的用戶id, 一般從Session中獲取 * * @return */ public static long loginUserId() {return 1L; }}隔離前準備工作

Entity隔離屬性基類

為了方便對所有需要隔離的Entity進行統一的環境和租戶信息的設置和讀取,我們把Entity的環境和租戶的屬性的getter和setter方法定義到一個接口上。

/** * Entity類隔離屬性基類 */public interface IsolateEntity { /** * 返回entity env屬性值 * * @return */ String getEnv(); /** * 設置entity env屬性值 * * @param env * @return */ IsolateEntity setEnv(String env); /** * 返回entity 租戶信息 * * @return */ Long getTenant(); /** * 設置entity 租戶信息 * * @param tenant * @return */ IsolateEntity setTenant(Long tenant);}

這樣所有需要隔離的Entity只要繼承這個接口就可以在需要隔離操作的地方把具體的entity當作IsolateEntity對象來操作。

隔離屬性和默認條件設置

有了統一的接口,我們還需要一個默認進行設置的操作,fluent mybatis提供了一個IDefaultSetter 接口,可以對Entity,Query和Update進行攔截操作。

/** * 增刪改查中,環境和租戶隔離設置 */public interface IsolateSetter extends IDefaultSetter { /** * 插入的entity,如果沒有顯式設置環境和租戶,根據工具類進行默認設置 * * @param entity */ @Override default void setInsertDefault(IEntity entity) {IsolateEntity isolateEntity = (IsolateEntity) entity;if (isolateEntity.getEnv() == null) { isolateEntity.setEnv(EnvUtils.currEnv());}if (isolateEntity.getTenant() == null) { isolateEntity.setTenant(TenantUtils.findUserTenant());} } /** * 查詢條件追加環境隔離和租戶隔離 * * @param query */ @Override default void setQueryDefault(IQuery query) {query.where() .apply('env', SqlOp.EQ, EnvUtils.currEnv()) .apply('tenant', SqlOp.EQ, TenantUtils.findUserTenant()); } /** * 更新條件追加環境隔離和租戶隔離 * * @param updater */ @Override default void setUpdateDefault(IUpdate updater) {updater.where() .apply('env', SqlOp.EQ, EnvUtils.currEnv()) .apply('tenant', SqlOp.EQ, TenantUtils.findUserTenant()); }}

為了避免使用不當導致線程安全問題(變量共享), fluent mybatis只允許在應用中定義接口(比如這里的IsolateSetter)繼承IDefaultSetter, 不允許定義成類。

代碼生成設置

怎么讓fluent mybatis識別到哪些Entity可以繼承IsolateEntity,哪些Entity操作需要進行IsolateSetter統一攔截呢?在@FluentMybatis上有個屬性defaults(), 我們把defaults值設置為 IsolateSetter.class就可以了。

public @interface FluentMybatis { /** * entity, query, updater默認值設置實現 * * @return */ Class<? extends IDefaultSetter> defaults() default IDefaultSetter.class;}

當然,我們并不需要手動去修改Entity類,只需要在代碼生成上設置。

public class FluentGenerateMain { static final String url = 'jdbc:mysql://localhost:3306/fluent_mybatis?useSSL=false&useUnicode=true&characterEncoding=utf-8'; /** * 生成代碼的package路徑 */ static final String basePackage = 'cn.org.fluent.mybatis.many2many.demo'; public static void main(String[] args) {FileGenerator.build(Noting.class); } @Tables(/** 數據庫連接信息 **/url = url, username = 'root', password = 'password',/** Entity類parent package路徑 **/basePack = basePackage,/** Entity代碼源目錄 **/srcDir = 'example/many2many_demo/src/main/java',/** 如果表定義記錄創建,記錄修改,邏輯刪除字段 **/gmtCreated = 'gmt_created', gmtModified = 'gmt_modified', logicDeleted = 'is_deleted',/** 需要生成文件的表 ( 表名稱:對應的Entity名稱 ) **/tables = @Table(value = {'student'}, entity = IsolateEntity.class, defaults = IsolateSetter.class) ) static class Noting { }}

注意,對比之前的代碼生成,@Table上多了2個屬性設置

// 標識對應的Entity類需要繼承的接口entity = IsolateEntity.class

// 標識對應的Entity類CRUD過程中需要進行的默認設置操作defaults = IsolateSetter.class

執行代碼生成,Entity代碼如下:

@FluentMybatis( table = 'student', defaults = IsolateSetter.class)public class StudentEntity extends RichEntity implements IsolateEntity { // ... 省略}

我們看到@FluentMybatis設置了defaults屬性,Entity類繼承了IsolateEntity接口。接下來,我們進行具體的增刪改查演示。

增刪改查環境和租戶隔離演示新增數據

@RunWith(SpringRunner.class)@SpringBootTest(classes = AppMain.class)public class InsertWithEnvDemo { @Autowired private StudentMapper mapper; @Test public void insertEntity() {mapper.delete(new StudentQuery());mapper.insert(new StudentEntity() .setAddress('宇宙深處') .setUserName('FluentMybatis'));StudentEntity student = mapper.findOne(StudentQuery.query() .where.userName().eq('FluentMybatis').end() .limit(1));System.out.println(student.getUserName() + ', env:' + student.getEnv() + ', tenant:' + student.getTenant()); }}

查看控制臺輸出log

DEBUG - ==> Preparing: INSERT INTO student(gmt_created, gmt_modified, is_deleted, address, env, tenant, user_name) VALUES (now(), now(), 0, ?, ?, ?, ?) DEBUG - ==> Parameters: 宇宙深處(String), test1(String), 222222(Long), FluentMybatis(String) DEBUG - <== Updates: 1 DEBUG - ==> Preparing: SELECT id, gmt_created, gmt_modified, is_deleted, address, age, birthday, bonus_points, env, gender_man, grade, home_address_id, home_county_id, phone, status, tenant, user_name, version FROM student WHERE user_name = ? LIMIT ?, ? DEBUG - ==> Parameters: FluentMybatis(String), 0(Integer), 1(Integer) DEBUG - <== Total: 1 FluentMybatis, env:test1, tenant:222222

在演示例子中,我們雖然只顯式設置了userName和address2個屬性,但插入數據中設置了7個屬性,其中包括env和tenant。注意,這里的查詢條件并沒有帶上環境變量

查詢數據

fluent mybatis提供了2種構造查詢器的方式

XyzQuery.query(): 全新的不帶任何條件的查詢。 XyzQuery.defaultQuery(): 按照@FluentMybatis defaults屬性指定的接口,設置好默認查詢條件。

上面默認插入的例子已經演示了不帶條件的query()查詢,我們現在演示下設置了默認條件的查詢。

@RunWith(SpringRunner.class)@SpringBootTest(classes = AppMain.class)public class QueryWithEnvDemo { @Autowired private StudentMapper mapper; @Test public void testQueryWithEnv(){mapper.delete(new StudentQuery());mapper.insert(new StudentEntity() .setAddress('宇宙深處') .setUserName('FluentMybatis'));StudentEntity student = mapper.findOne(mapper.defaultQuery() .where.userName().eq('FluentMybatis').end() .limit(1));System.out.println(student.getUserName() + ', env:' + student.getEnv() + ', tenant:' + student.getTenant()); }}

查看控制log輸出

DEBUG - ==> Preparing: SELECT id, gmt_created, ... , tenant, user_name, version FROM student WHERE env = ? AND tenant = ? AND user_name = ? LIMIT ?, ? DEBUG - ==> Parameters: test1(String), 222222(Long), FluentMybatis(String), 0(Integer), 1(Integer) DEBUG - <== Total: 1 FluentMybatis, env:test1, tenant:222222

我們看到,查詢條件中除了有我們設置好的user_name,還包括在IsolateSetter接口中設置好的env和tenant字段。

更新數據

和Query一樣,Updater同樣提供了2個方法來構造Updater

XyzUpdate.updater() : 不帶任何條件的更新。 XyzUpdate.defaultUpdater(): 根據IsolateSetter#setUpdateDefault方法設置好更新條件。

演示例子

@RunWith(SpringRunner.class)@SpringBootTest(classes = AppMain.class)public class UpdateWithEnvDemo { @Autowired private StudentMapper mapper; @Test public void testQueryWithEnv() {mapper.delete(new StudentQuery());mapper.insert(new StudentEntity() .setAddress('宇宙深處') .setUserName('FluentMybatis'));mapper.updateBy(StudentUpdate.defaultUpdater() .update.address().is('回到地球').end() .where.userName().eq('FluentMybatis').end()); }}

查看控制臺log輸出

DEBUG - ==> Preparing: UPDATE student SET gmt_modified = now(), address = ? WHERE env = ? AND tenant = ? AND user_name = ? DEBUG - ==> Parameters: 回到地球(String), test1(String), 222222(Long), FluentMybatis(String) DEBUG - <== Updates: 1

更新條件中自動帶上了設置好的默認條件 env 和 tenant。

總結

Fluent Mybatis通過自定義接口繼承IDefaultSetter,賦予了你進行數據隔離操作的強大功能。默認值的賦值是通過編譯生成的XyzDefaults類來進行的,大家可以具體查看編譯生成的代碼。文中示例代碼

到此這篇關于Fluent Mybatis實現環境隔離和租戶隔離的文章就介紹到這了,更多相關Fluent Mybatis環境隔離和租戶隔離內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 国产无套护士在线观看 | 性开放按摩bbwbbw视频 | 国产精品久久久久桃色tv | 中文字幕一区二区三区久久蜜桃 | 欧美大尺度做爰啪啪床戏明星 | 久久久久久久福利 | 人妻系列av无码专区 | 国产好爽…又高潮了毛片 | 国产香港明星裸体xxxx视频 | 国产伦理五月av一区二区 | 性欧美18 | 中文字幕一区二区av | 少妇又紧又色又爽又刺激的视频 | 日韩色图在线观看 | 天美传媒一区二区 | 最新精品国偷自产在线下载 | 久久亚洲一区二区三区明星换脸 | 国产精品66 | 99久久精品国产一区二区成人 | 精品无码一区二区三区电影 | 天天综合天天做天天综合 | 拔萝卜视频在线观看高清版 | 麻豆成人在线视频 | 娜娜麻豆国产电影 | 男女爽爽| 黄色性大片 | 国产国拍亚洲精品av | 免费看捆绑女人毛片 | 国产精品久久久久aaaa九色 | 丝袜一区在线观看 | 一级片的网站 | 私人成片免费观看 | 韩国主播青草55部完整 | 欧洲精品欧美精品 | 真人作爱免费视频 | 激情综合色综合啪啪五月丁香 | 无码专区一ⅴa亚洲v天堂 | 永久免费看片在线播放 | 少妇裸体淫交免费视频网站 | 亚洲色无码一区二区三区 | 激情婷婷网| 国产有码aaaae毛片视频 | 另类天堂网 | 欧美日韩在线精品 | 黄色网战在线观看 | 日韩中文字幕一区二区 | 明日花绮罗高潮无打码 | 丰满人妻熟妇乱又伦精品 | 日本阿v视频在线观看 | 亚洲人成电影网站在线观看 | 91蝌蚪91porny国语 | 91精产国品一二三产区区 | 性生交大片免费全片 | 草啪啪 | 国产不卡精品 | 无码国产伦一区二区三区视频 | 日本草草视频 | 亚洲精品国产一区二区 | 少妇高潮尖叫黑人激情在线 | 青青草dvd | 3d成人精品动漫视频在线观看 | 91成人海角社区 | 成人高清视频免费观看 | 红桃视频国产精品 | 亚洲国产精品久久久久秋霞蜜臀 | 特黄aaaaaa私密按摩 | 娇小发育未年成性色xxx8 | a片免费视频在线观看 | 久热国产精品视频一区二区三区 | 国模精品一区二区三区 | jazzjazz国产精品久久 | 国产偷国产偷亚洲清高app | 国产69精品久久99卡顿的解决方法 | 精品国产va久久久久久久冰 | 一级做a爰片久久毛片潮喷 一级做a爰片欧美激情床 | 黄色片视频免费看 | 处破痛哭a√18成年片免费 | 国产精品无码免费专区午夜 | 欧美性免费| 免费av高清| 经典三级伦理另类基地 | 九色在线视频 | 久久夜色精品国产www红杏 | 女教师高潮黄又色视频 | 五月天综合色 | 久久精品夜夜夜夜夜久久 | 在线观看黄色国产 | 欧产日产国产蜜网站 | 在线中文av| 999精欧美一区二区三区黑人 | 人妻聚色窝窝人体www一区 | 国产人妖视频一区二区 | 中出在线观看 | 含羞草www国产在线视频 | 国产精品久久呻吟 | 国产女人18毛片水18精 | 91gao| 国产成人精品一区二区三区福利 | 久久免费福利视频 | 国产亚洲xxxx在线播放 | 韩日午夜在线资源一区二区 | 欧美日韩综合在线观看 | 任我爽精品视频在线观看 | 国内精品久久久久伊人av | 99热在线观看 | 东京无码熟妇人妻av在线网址 | 96福利视频 | 男人天堂a | 久久久www成人免费毛片女 | 久久97精品 | 亚洲无人区一线二线三线 | 国产女人精品视频 | 性猛交xxxx乱大交孕妇2十 | 国产成人久久久 | 最新国产精品自拍 | 特黄1级潘金莲 | 国产高清一区二区三区视频 | 日韩无码专区 | 国产精品视频分类 | 国产精品免费久久久久软件 | 久久av在线| 成人免费久久 | 人人爽人人爽人人片av | 久久久久无码精品国产不卡 | 国产一区二区三区av网站 | 国产农村妇女露脸对白视频 | 婷婷99| 91玉足脚交白嫩脚丫 | 葵司免费一区二区三区四区五区 | 亚洲专区路线一路线二高质量 | 又色又爽又高潮免费视频观看 | 国产成人久久精品亚洲 | 日本欧美大码aⅴ在线播放 中文人妻无码一区二区三区在线 | 国产黄色片av | 亚洲精品国偷拍自产在线观看蜜臀 | 超碰在线观看99 | 国产黄色大片在线观看 | 亚洲欧美一区二区精品久久久 | 337p日本欧洲亚洲大胆色噜噜 | 樱花草在线播放免费中文 | 九色porny自拍视频在线播放 | 本道久久 | 超碰97国产精品人人cao | 玩弄放荡人妻少妇系列视频 | 暖暖视频日本在线观看 | 这里只有精品在线播放 | 免费又黄又爽又猛的毛片 | 色欲欲www成人网站 婷婷成人综合激情在线视频播放 | 亚洲一区二区三区中文字幕 | 一本之道ay免费 | 中文字幕在线观看第一页 | 成人情趣片在线观看免费 | 亚洲综合一区国产精品 | 亚洲国产精品美女久久久久 | 又粗又猛又黄又爽无遮挡 | 欧美色图激情小说 | 999国产精品999久久久久久 | 熟女精品视频一区二区三区 | 久热综合 | 欧美一区二区在线播放 | 午夜寂寞剧场 | 少妇浪荡h肉辣文大全69 | 人妻熟妇乱又伦精品视频app | 日韩一区二区三区av | 国产又黄又大又粗的视频 | 亚洲二区在线播放视频 | 亚洲一区二区三区 无码 | 国产精品毛片一区视频播 | 91精品国产综合久久久蜜臀九色 | 亚洲成人影音 | 亚洲毛片在线 | 亚洲成年轻人电影网站www | 久久久久久久影院 | 日本极度另类 | 羞羞视频网站在线观看 | аⅴ资源天堂资源库在线 | 精品久久国产字幕高潮 | 亚洲精品国产精品乱码不66 | 69精品人人人人 | 国偷自产av一区二区三区麻豆 | 亚洲乱码一区av春药高潮 | 亚洲免费中文字幕 | 久草视频精品 | 男女视频一区二区三区 | 久久黄色av| 娇喘顶撞深初h1v1 | 国产精品成人一区二区网站软件 | 噼里啪啦动漫在线观看 | 成人亚洲网站 | 国产午夜精品av一区二区麻豆 | 奇米综合四色77777久久 | 色吊丝av中文字幕 | 久久九九99 | 天天看片天天射 | 牛牛在线免费视频 | 麻豆超碰 | 国产呻吟久久久久久久92 | 国产露脸对白刺激2022 | 欧美日韩精品综合 | 91精品国产日韩一区二区三区 | 国产成人一区二区三区在线观看 | 人妻互换一二三区激情视频 | 脱岳裙子从后面挺进去在线观看 | 1000部啪啪未满十八勿入 | 国产欧美一区二区三区视频 | 9色视频在线 | 国外亚洲成av人片在线观看 | 日本伊人精品一区二区三区 | 婷婷伊人综合中文字幕 | 欧美精品日韩 | 亚洲精品久久久久久下一站 | 国产igao为爱做激情国外 | 久久久久久免费毛片精品 | 视频区图片区小说区 | 在线午夜| 99精品国产免费久久 | 懂色在线| 国产精品久久久久久久久免费软件 | 国产福利精品在线观看 | 国产妇女馒头高清泬20p多 | 日本一区二区在线播放 | 性做爰过程免费视频美女按店 | 精品久久久无码中文字幕边打电话 | 国产亚洲91| 成人玩具h视频 | 极品少妇在线 | 午夜黄色在线观看 | 麻豆视频在线观看免费网站黄 | 在线观看免费黄色av | 欧美日韩不卡一区二区 | 大地资源中文第三页 | 日韩av在线免费观看 | 欧洲国产伦久久久久久久 | 色窝| 女厕厕露p撒尿八个少妇 | 污污的网站在线观看 | 国产精品香蕉在线的人 | 豆花av在线| 一级一级特黄女人精品毛片 | 欧美性高潮视频 | 久久在线免费视频 | 女女女女bbbb日韩毛片 | 伊人激情av一区二区三区 | www午夜av| 黄色一级大片在线观看 | 国产精品一级视频 | 亚洲综合欧美在线一区在线播放 | 亚洲网站视频 | 欧美深夜福利视频 | 日韩av综合网 | 欧美成人a交片免费看 | 夜夜躁狠狠躁日日躁aab苏桃 | 欧美午夜精品久久久久久人妖 | 伊人久久婷婷五月综合97色 | 一本大道久久久久精品嫩草 | 国产成人午夜精品5599 | 麻豆文化传媒精品一区 | 动漫女女吸乳舌吻羞羞 | 中文字幕免费在线播放 | 久久综合久久美利坚合众国 | 日韩和的一区二区 | 日韩一区二区三区视频在线观看 | 欧美精品与人动性物交免费看 | porny丨精品自拍视频 | 日本少妇做爰大尺裸体视频 | 人妻少妇偷人精品视频 | 久久久综合 | 日韩精品伦理 | 成人做爰高潮片免费视频美国 | 55夜色66夜色国产精品视频 | h中文字幕| 韩日一区二区三区 | 欧美日韩国产亚洲沙发 | 成人免费黄| 偷拍夫妻性生活 | 欧美色成人综合影院 | 小嫩女直喷白浆 | 免费在线精品视频 | 丁香五月欧美成人 | 公么大龟弄得我好舒服秀婷视频 | 9lporm自拍视频区论坛 | 日韩区一区二 | 中文字幕福利视频 | 国产传媒一区二区三区 | 久久国产午夜精品理论片推荐 | 交换配乱吟粗大农村大坑性事视频 | 豆国产97在线 | 亚洲 | 日本免费中文字幕 | 毛片av在线观看 | 日韩男人天堂 | 色就是色欧美色图 | 四季av综合网站 | 精品国产福利一区二区 | 一区二区三区国产精品 | 亚洲精久久 | 成人三及片 | 中国产一级a毛片四川女 | 91精品国产高清一区二区三区蜜臀 | 成人啪啪色婷婷久 | 亚洲h网站| 亚洲精品18在线观看 | 日韩欧美xxx | 久久久精品视频网站 | 免费播放av | 国产免费视频 | 人妻无码视频一区二区三区 | 免费的黄色av | 日韩av手机在线观看 | 亚洲国产欧美日韩精品一区二区三区 | 久久久精品免费看 | 日韩成人黄色片 | 69午夜| 黄色成人免费视频 | 国产一国产二国产三 | 97久久精品人人澡人人爽缅北 | 精品欧美h无遮挡在线看中文 | 亚婷婷洲av久久蜜臀小说 | 日韩高清片 | 欧美特级一级片 | 青青草精品 | 伊人色综合久久天天五月婷 | 青草福利视频 | 国产午夜亚洲精品理论片色戒 | 日本精品一二区 | 亚洲成av人影院 | 亚洲va在线va天堂xxxx中文 | 午夜精品久久久久久久久久久久 | 欧美精品 日韩 | 国产乱码一区二区三区在线观看 | 日本真人做爰免费视频120秒 | 国产精品1区2区3区4区 | 91超薄肉色丝袜交足高跟凉鞋 | 欧美做受喷浆在线观看 | 国产经典久久 | 亚洲国产成人精品无码区在线观看 | 亚洲视频免费播放 | 亚洲天堂视频在线观看免费 | 久久久999 | 欧美色图亚洲色 | 91成熟丰满女人少妇 | 国产毛片18 | 国产视频观看 | 天堂av国产夫妇精品自在线 | 国产下药迷倒白嫩丰满美女j8 | 国产成人精品亚洲午夜麻豆 | 欧美日韩1区2区3区 欧美日韩3p | 女人浣肠av大片 | 辟里啪啦国语版免费观看 | 国产欧美一区二区三区在线看 | 国产亚洲欧美日韩高清 | 久久久久久久国产精品影院 | 污污的网站在线观看 | 久久99国产精品久久99果冻传媒 | 少妇无套内谢免费视频 | 国产成人av一区二区三区在线观看 | 男人影院在线 | 美欧一级片 | 后入内射国产一区二区 | 黄色无毒网站 | 国内精品久久久久影视老司机 | 日本99视频 | 国产精品99久久久久久人 | 亚洲无马砖区2021 | 老熟女高潮一区二区三区 | 一级黄色片网址 | 三级一区二区 | 久久97精品国产96久久小草 | 亚洲一区二区三区偷拍女厕 | 高清精品国内视频 | 亚洲二三区 | 乐播av一区二区三区 | 日韩一区二区三区不卡 | 亚洲日韩中文字幕一区 | 欧美www视频 | 国产高潮流白浆喷水视频 | (无码视频)在线观看 | 人妻av一区二区三区精品 | 99久久精品国产免费看 | 久久精品高清 | 日本免费精品一区二区三区 | 五月婷婷视频 | 四川农村妇女野外毛片bd | 日韩成人在线播放 | 国模精品一区二区三区 | 色综合视频一区二区三区 | 一区二区乱子伦在线播放 | 国产在线精品一区二区三区不卡 | 天堂中文字幕免费一区 | 美女内射视频www网站午夜 | 人人爱夜夜爽日日做蜜桃 | 婷婷中文在线 | 国产伦孑沙发午休精品 | 99久久视频 | 国产精品午夜福利视频234区 | 午夜国产福利在线 | 亚洲狠狠干 | 欧美一二在线 | 国产精品水嫩水嫩 | av一本久道久久综合久久鬼色 | 殴美一级片 | 国产97在线视频 | 国产精品久久久久久亚洲影视 | 午夜免费激情视频 | 欧美a级大片 | 欧美成人伊人 | 四虎影视成人永久免费观看亚洲欧美 | 爱情岛成人www永久地址 | 激情图片区 | 九九精品在线视频 | 午夜精品久久久久久久99热浪潮 | 亚洲国产成人久久精品软件 | 少妇做爰免费视频播放 | 国产成人福利av综合导航 | 欧美在线91| 美女毛片一区二区三区四区 | 人妻aⅴ无码一区二区三区 日本一卡2卡3卡四卡精品网站 | 韩国美女主播娇喘乳奶摇 | 国产性生交xxxxx免费 | 人人看超碰 | 黄色三级三级 | 大尺度做爰床戏呻吟色戒韩国 | 狠狠操五月天 | 一区二区三区四区中文字幕 | 精品一区二区三区在线播放视频 | 国产69久久精品成人看动漫 | 66av欧美 | 欧美一区二区鲁丝袜片 | av自拍一区 | 欧美色吊丝 | 性做久久久久久免费观看 | 青青草视频国产 | 人妻体体内射精一区二区 | 少妇又色又紧又爽又刺激视频 | 在线观看国产一区二区 | 韩国毛片网站 | 中文久久乱码一区二区 | 国产黄a三级三级看三级 | 日韩综合av | 亚洲天堂影院 | 17c国产精品一区二区 | 精品一卡二卡 | 亚洲女人久久久 | 亚洲二区av| 国产麻豆91精品三级站 | av在线专区 | 国产激情在线 | 不卡av免费| av在线一区二区三区四区 | 色婷婷成人网 | 国产自国产自愉自愉免费24区 | 99久久99久久免费精品蜜桃 | 中文综合网| 久久精彩免费视频 | 欧美日韩不卡在线视频 | 久久9999久久免费精品国产 | 日韩中文字幕在线观看 | 男人添女人高潮免费网站打开网站 | 国产色视频在线 | 亚洲成人av一区 | 天海翼一区二区三区 | 色精品 | 成人国产一区二区三区精品 | 51av在线视频 | 五月激情六月婷婷 | 午夜精品久久久久久久99热蜜臀 | 久久精品专区 | 深爱激情综合网 | 白洁乱淫76集 | 男操女视频网站 | 国产精品av一区二区三区网站 | 欧美寡妇性猛交ⅹxxx | 夜夜躁天天躁很很躁 | 中国浓毛少妇毛茸茸 | 看全色黄大色黄大片大学生图片 | 亚洲产国偷v产偷v自拍色戒 | 精品粉嫩aⅴ一区二区三区四区 | 免费在线观看日韩 | 国产黄a三级 | 日本中文字幕高清 | 国产欧美又粗又猛又爽 | 白嫩少妇激情无码 | 两个人看的vvv在线高清 | 国产亚洲欧美一区 | 操人视频免费看 | www.av在线视频 | 国产乱码精品一区二区三区中文 | 亚洲国产精品久久久久久无码 | 青草视频免费在线观看 | 亚洲黄色网址大全 | 亚洲国产精品无码一区二区三区 | 合欢视频在线观看 | 美日韩在线观看 | 天天插天天摸 | 亚洲风情第一页 | 久久国产精品首页 | 色婷婷一区 | 成人开心网 | 欧美aa一级片| 色爽视频 | 天堂av一区二区三区 | 日本人麻豆 | 日韩毛片免费无码无毒视频观看 | 蜜乳av一区二区三区 | 成人片黄网站色大片免费观看 | 国产在线视频卡一卡二 | 台湾佬中文娱乐22vvvv | 亚洲爆乳无码一区二区三区 | 亚洲精品成a人在线观看 | 激情黄色一级片 | 欧美中文字幕无线码视频 | 日韩毛片在线视频x | 日韩一二三区在线观看 | 欧洲美熟女乱又伦av | 成年女人色毛片 | 99精品在线看 | 国产伦精品视频一区二区三区 | 18禁真人抽搐一进一出动态图 | 欧美五月 | 精品国产不卡一区二区三区 | 国产精品资源一区二区 | 人人草网站 | 国产一大二大不卡专区 | 变态美女紧缚一区二区三区 | 大度亲吻原声视频在线观看 | av不卡国产在线观看 | 一本—道久久a久久精品蜜桃 | 国产日韩欧美综合 | 91国偷自产一区二区三区 | 国产精品―色哟哟 | 亚洲一二三精品 | 大地资源中文在线观看官网第二页 | 精品欧洲av无码一区二区14 | 亚洲第一视频在线观看 | 国产二区自拍 | 国产99精品视频 | 欧美成人秋霞久久aa片 | 国产精品蜜臀av免费观看四虎 | 在线不卡日本 | 欧美性www| 欧美老熟妇videos极品另类 | 疯狂的欧美乱大交 | 日韩欧美中文字幕一区二区三区 | 久久综合热 | 国产电影一区二区三区 | 国产一极毛片 | av片在线观看免费 | 92看片淫黄大片欧美看国产片 | 99久久久成人国产精品 | 日本草逼视频 | 波多野结衣办公室33分钟 | 老女人丨91丨九色 | 成人深夜在线 | 国产免费不卡视频 | 亚洲不卡av不卡一区二区 | 激情射精爽到偷偷c视频无码 | 99久久久国产精品无码免费 | 精品人妻码一区二区三区 | 免费看片亚洲 | 中国国产黄色片 | 国产精品美女久久久久av爽 | 双性调教总裁失禁尿出来 | 国产在线精品国自产拍影院同性 | 日本xx片 | 又色又爽又黄的视频网站 | 午夜精品一区二区三区在线 | 日本一级大片 | 一级做a爱片久久毛片a高清 | 亚洲第一成人网站 | 成在线人视频免费视频 | 亚洲天堂最新 | 乱肉放荡艳妇视频6399 | 我的邻居在线观看 | 国产福利在线播放 | 日本一区二区在线免费 | 欧美美女一区二区三区 | 九九国产精品入口麻豆 | 精品久久久久久久人人人人传媒 | 污污污污污污www网站免费 | 无码成人1000部免费视频 | 久久亚洲精品中文字幕 | 精品国产一区二区三区色欲 | 91av视频在线播放 | 欧美性xxxx极品hd大豆行情 | av大片在线无码免费 | 国产无遮挡又黄又爽对白视频 | 日本少妇做爰全过程二区 | 国产福利视频一区二区 | 成人精品视频99在线观看免费 | 免费观看黄色一级视频 | 国产精品成人一区无码 | 全肉乱妇杂乱视频在线观看 | 免费国产a| 狠狠色噜噜狠狠狠狠97俺也去 | 中日韩精品视频 | 极品少妇xxxx精品少妇偷拍 | 成人福利视频导航 | 欧美综合在线观看 | 97久人人做人人妻人人玩精品 | 91亚色在线观看 | 日韩av在线一区二区三区 | 97国产精品久久 | 中文字幕韩日 | 性日本xxx | 国产精品久久久久久久久潘金莲 | 丰满少妇奶水一区二区三区 | 污网站免费在线观看 | 国产一区二区精品免费 | 亚洲国产综合av | 4438五月天 | 久久久久69| 天天摸夜夜添狠狠添婷婷 | 男女啪啪无遮挡免费网站 | 国产日韩在线看 | www.亚洲高清 | 成人国内精品久久久久影院成人国产9 |