<kbd id="fugzo"></kbd>
<pre id="fugzo"></pre>
    1. <fieldset id="fugzo"><style id="fugzo"></style></fieldset>
      <center id="fugzo"></center>
    2. 哑剧盖章,电视剧折腰免费观看全集,亮剑3gp下载,秘密访客,泰剧为你着迷,古城童话,食物链无删减,大鱼海棠

      Spring+MyBatis數據讀寫分離的實例詳解

      時間:2025-11-18 10:01:35 java語言

      Spring+MyBatis數據讀寫分離的實例詳解

        本文介紹了Spring Boot + MyBatis讀寫分離,有需要了解Spring+MyBatis讀寫分離的朋友可參考。想了解更多相關信息請持續關注我們應屆畢業生考試網!

        其最終實現功能:

        1.默認更新操作都使用寫數據源

        2.讀操作都使用slave數據源

        3.特殊設置:可以指定要使用的數據源類型及名稱(如果有名稱,則會根據名稱使用相應的數據源)

        其實現原理如下:

        1.通過Spring AOP對dao層接口進行攔截,并對需要指定數據源的接口在ThradLocal中設置其數據源類型及名稱

        2.通過MyBatsi的插件,對根據更新或者查詢操作在ThreadLocal中設置數據源(dao層沒有指定的情況下)

        3.繼承AbstractRoutingDataSource類。

        在此直接寫死使用HikariCP作為數據源

        其實現步驟如下:

        1.定義其數據源配置文件并進行解析為數據源

        2.定義AbstractRoutingDataSource類及其它注解

        3.定義Aop攔截

        4.定義MyBatis插件

        5.整合在一起

        1.配置及解析類

        其配置參數直接使用HikariCP的配置,其具體參數可以參考HikariCP。

        在此使用yaml格式,名稱為datasource.yaml,內容如下:

        dds:

        write:

        jdbcUrl: jdbc:mysql:/pic/order

        password: liu123

        username: root

        maxPoolSize: 10

        minIdle: 3

        poolName: master

        read:

        - jdbcUrl: jdbc:mysql:/pic/test

        password: liu123

        username: root

        maxPoolSize: 10

        minIdle: 3

        poolName: slave1

        - jdbcUrl: jdbc:mysql:/pic/test2

        password: liu123

        username: root

        maxPoolSize: 10

        minIdle: 3

        poolName: slave2

        定義該配置所對應的Bean,名稱為DBConfig,內容如下:

        @Component

        @ConfigurationProperties(locations = "classpath:datasource.yaml", prefix = "dds")

        public class DBConfig {

        private List<HikariConfig> read;

        private HikariConfig write;

        public List<HikariConfig> getRead() {

        return read;

        }

        public void setRead(List<HikariConfig> read) {

        this.read = read;

        }

        public HikariConfig getWrite() {

        return write;

        }

        public void setWrite(HikariConfig write) {

        this.write = write;

        }

        }

        把配置轉換為DataSource的工具類,名稱:DataSourceUtil,內容如下:

        import com.zaxxer.hikari.HikariConfig;

        import com.zaxxer.hikari.HikariDataSource;

        import javax.sql.DataSource;

        import java.util.ArrayList;

        import java.util.List;

        public class DataSourceUtil {

        public static DataSource getDataSource(HikariConfig config) {

        return new HikariDataSource(config);

        }

        public static List<DataSource> getDataSource(List<HikariConfig> configs) {

        List<DataSource> result = null;

        if (configs != null && configs.size() > 0) {

        result = new ArrayList<>(configs.size());

        for (HikariConfig config : configs) {

        result.add(getDataSource(config));

        }

        } else {

        result = new ArrayList<>(0);

        }

        return result;

        }

        }

        2.注解及動態數據源

        定義注解@DataSource,其用于需要對個別方法指定其要使用的數據源(如某個讀操作需要在master上執行,但另一讀方法b需要在讀數據源的具體一臺上面執行)

        @Retention(RetentionPolicy.RUNTIME)

        @Target(ElementType.METHOD)

        public @interface DataSource {

        /**

        * 類型,代表是使用讀還是寫

        * @return

        */

        DataSourceType type() default DataSourceType.WRITE;

        /**

        * 指定要使用的DataSource的名稱

        * @return

        */

        String name() default "";

        }

        定義數據源類型,分為兩種:READ,WRITE,內容如下:

        public enum DataSourceType {

        READ, WRITE;

        }

        定義保存這此共享信息的類DynamicDataSourceHolder,在其中定義了兩個ThreadLocal和一個map,holder用于保存當前線程的數據源類型(讀或者寫),pool用于保存數據源名稱(如果指定),其內容如下:

        import java.util.Map;

        import java.util.concurrent.ConcurrentHashMap;

        public class DynamicDataSourceHolder {

        private static final Map<String, DataSourceType> cache = new ConcurrentHashMap<>();

        private static final ThreadLocal<DataSourceType> holder = new ThreadLocal<>();

        private static final ThreadLocal<String> pool = new ThreadLocal<>();

        public static void putToCache(String key, DataSourceType dataSourceType) {

        cache.put(key,dataSourceType);

        }

        public static DataSourceType getFromCach(String key) {

        return cache.get(key);

        }

        public static void putDataSource(DataSourceType dataSourceType) {

        holder.set(dataSourceType);

        }

        public static DataSourceType getDataSource() {

        return holder.get();

        }

        public static void putPoolName(String name) {

        if (name != null && name.length() > 0) {

        pool.set(name);

        }

        }

        public static String getPoolName() {

        return pool.get();

        }

        public static void clearDataSource() {

        holder.remove();

        pool.remove();

        }

        }

        動態數據源類為DynamicDataSoruce,其繼承自AbstractRoutingDataSource,可以根據返回的key切換到相應的數據源,其內容如下:

        import com.zaxxer.hikari.HikariDataSource;

        import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

        import javax.sql.DataSource;

        import java.util.HashMap;

        import java.util.List;

        import java.util.Map;

        import java.util.concurrent.ConcurrentHashMap;

        import java.util.concurrent.ThreadLocalRandom;

        public class DynamicDataSource extends AbstractRoutingDataSource {

        private DataSource writeDataSource;

        private List<DataSource> readDataSource;

        private int readDataSourceSize;

        private Map<String, String> dataSourceMapping = new ConcurrentHashMap<>();

        @Override

        public void afterPropertiesSet() {

        if (this.writeDataSource == null) {

        throw new IllegalArgumentException("Property 'writeDataSource' is required");

        }

        setDefaultTargetDataSource(writeDataSource);

        Map<Object, Object> targetDataSource = new HashMap<>();

        targetDataSource.put(DataSourceType.WRITE.name(), writeDataSource);

        String poolName = ((HikariDataSource)writeDataSource).getPoolName();

        if (poolName != null && poolName.length() > 0) {

        dataSourceMapping.put(poolName,DataSourceType.WRITE.name());

        }

        if (this.readDataSource == null) {

        readDataSourceSize = 0;

        } else {

        for (int i = 0; i < readDataSource.size(); i++) {

        targetDataSource.put(DataSourceType.READ.name() + i, readDataSource.get(i));

        poolName = ((HikariDataSource)readDataSource.get(i)).getPoolName();

        if (poolName != null && poolName.length() > 0) {

        dataSourceMapping.put(poolName,DataSourceType.READ.name() + i);

        }

        }

        readDataSourceSize = readDataSource.size();

        }

        setTargetDataSources(targetDataSource);

        super.afterPropertiesSet();

        }

        @Override

        protected Object determineCurrentLookupKey() {

        DataSourceType dataSourceType = DynamicDataSourceHolder.getDataSource();

        String dataSourceName = null;

        if (dataSourceType == null ||dataSourceType == DataSourceType.WRITE || readDataSourceSize == 0) {

        dataSourceName = DataSourceType.WRITE.name();

        } else {

        String poolName = DynamicDataSourceHolder.getPoolName();

        if (poolName == null) {

        int idx = ThreadLocalRandom.current().nextInt(0, readDataSourceSize);

        dataSourceName = DataSourceType.READ.name() + idx;

        } else {

        dataSourceName = dataSourceMapping.get(poolName);

        }

        }

        DynamicDataSourceHolder.clearDataSource();

        return dataSourceName;

        }

        public void setWriteDataSource(DataSource writeDataSource) {

        this.writeDataSource = writeDataSource;

        }

        public void setReadDataSource(List<DataSource> readDataSource) {

        this.readDataSource = readDataSource;

        }

        }

        3.AOP攔截

        如果在相應的dao層做了自定義配置(指定數據源),則在些處理。解析相應方法上的@DataSource注解,如果存在,并把相應的信息保存至上面的DynamicDataSourceHolder中。在此對com.hfjy.service.order.dao包進行做攔截。內容如下:

        import com.hfjy.service.order.anno.DataSource;

        import com.hfjy.service.order.wr.DynamicDataSourceHolder;

        import org.aspectj.lang.JoinPoint;

        import org.aspectj.lang.annotation.After;

        import org.aspectj.lang.annotation.Aspect;

        import org.aspectj.lang.annotation.Before;

        import org.aspectj.lang.annotation.Pointcut;

        import org.aspectj.lang.reflect.MethodSignature;

        import org.springframework.stereotype.Component;

        import java.lang.reflect.Method;

        /**

        * 使用AOP攔截,對需要特殊方法可以指定要使用的數據源名稱(對應為連接池名稱)

        */

        @Aspect

        @Component

        public class DynamicDataSourceAspect {

        @Pointcut("execution(public * com.hfjy.service.order.dao.*.*(*))")

        public void dynamic(){}

        @Before(value = "dynamic()")

        public void beforeOpt(JoinPoint point) {

        Object target = point.getTarget();

        String methodName = point.getSignature().getName();

        Class<?>[] clazz = target.getClass().getInterfaces();

        Class<?>[] parameterType = ((MethodSignature)point.getSignature()).getMethod().getParameterTypes();

        try {

        Method method = clazz[0].getMethod(methodName,parameterType);

        if (method != null && method.isAnnotationPresent(DataSource.class)) {

        DataSource datasource = method.getAnnotation(DataSource.class);

        DynamicDataSourceHolder.putDataSource(datasource.type());

        String poolName = datasource.name();

        DynamicDataSourceHolder.putPoolName(poolName);

        DynamicDataSourceHolder.putToCache(clazz[0].getName() + "." + methodName, datasource.type());

        }

        } catch (Exception e) {

        e.printStackTrace();

        }

        }

        @After(value = "dynamic()")

        public void afterOpt(JoinPoint point) {

        DynamicDataSourceHolder.clearDataSource();

        }

        }

        4.MyBatis插件

        如果在dao層沒有指定相應的要使用的數據源,則在此進行攔截,根據是更新還是查詢設置數據源的類型,內容如下:

        import org.apache.ibatis.executor.Executor;

        import org.apache.ibatis.mapping.MappedStatement;

        import org.apache.ibatis.mapping.SqlCommandType;

        import org.apache.ibatis.plugin.*;

        import org.apache.ibatis.session.ResultHandler;

        import org.apache.ibatis.session.RowBounds;

        import java.util.Properties;

        @Intercepts({

        @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class}),

        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class,

        RowBounds.class, ResultHandler.class})

        })

        public class DynamicDataSourcePlugin implements Interceptor {

        @Override

        public Object intercept(Invocation invocation) throws Throwable {

        MappedStatement ms = (MappedStatement)invocation.getArgs()[0];

        DataSourceType dataSourceType = null;

        if ((dataSourceType = DynamicDataSourceHolder.getFromCach(ms.getId())) == null) {

        if (ms.getSqlCommandType().equals(SqlCommandType.SELECT)) {

        dataSourceType = DataSourceType.READ;

        } else {

        dataSourceType = DataSourceType.WRITE;

        }

        DynamicDataSourceHolder.putToCache(ms.getId(), dataSourceType);

        }

        DynamicDataSourceHolder.putDataSource(dataSourceType);

        return invocation.proceed();

        }

        @Override

        public Object plugin(Object target) {

        if (target instanceof Executor) {

        return Plugin.wrap(target, this);

        } else {

        return target;

        }

        }

        @Override

        public void setProperties(Properties properties) {

        }

        }

        5.整合

        在里面定義MyBatis要使用的內容及DataSource,內容如下:

        import com.hfjy.service.order.wr.DBConfig;

        import com.hfjy.service.order.wr.DataSourceUtil;

        import com.hfjy.service.order.wr.DynamicDataSource;

        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.context.annotation.Bean;

        import org.springframework.context.annotation.Configuration;

        import org.springframework.core.io.ClassPathResource;

        import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

        import org.springframework.jdbc.datasource.DataSourceTransactionManager;

        import javax.annotation.Resource;

        import javax.sql.DataSource;

        @Configuration

        @MapperScan(value = "com.hfjy.service.order.dao", sqlSessionFactoryRef = "sqlSessionFactory")

        public class DataSourceConfig {

        @Resource

        private DBConfig dbConfig;

        @Bean(name = "dataSource")

        public DynamicDataSource dataSource() {

        DynamicDataSource dataSource = new DynamicDataSource();

        dataSource.setWriteDataSource(DataSourceUtil.getDataSource(dbConfig.getWrite()));

        dataSource.setReadDataSource(DataSourceUtil.getDataSource(dbConfig.getRead()));

        return dataSource;

        }

        @Bean(name = "transactionManager")

        public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("dataSource") DataSource dataSource) {

        return new DataSourceTransactionManager(dataSource);

        }

        @Bean(name = "sqlSessionFactory")

        public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {

        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();

        sessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));

        sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()

        .getResources("classpath*:mapper/*.xml"));

        sessionFactoryBean.setDataSource(dataSource);

        return sessionFactoryBean.getObject();

        }

        }

        如果不清楚,可以查看github上源碼orderdemo


      【Spring+MyBatis數據讀寫分離的實例詳解】相關文章:

      C語言以數據塊的形式讀寫文件實例代碼01-18

      如何實現yii2 數據庫讀寫分離配置01-07

      Java內部類詳解及實例分析12-15

      php數據類型詳解12-03

      C++類中的繼承實例詳解01-25

      C++冒泡排序算法實例詳解10-13

      php多個文件及圖片上傳實例詳解01-23

      C語言循環隊列的表示與實例詳解09-24

      詳解C語言格式化讀寫文件12-12

      主站蜘蛛池模板: 狂飙手机免费看| 李妍雨短剧| 玛丽萨科满天星原版| 电视剧风筝全集观看| 《女超人-麦乐迪》| 可恶的新娘| 战狼6双人版免费观看正版影视大全| 地心引力2神秘岛| 木下檀檩子电影在线观看| 刘老根1| 死神来了6免费观看高清| 财阀家的小儿子在线观看| 战狼9欧式少女高清资源下载| 轮回的花瓣全集观看| 《你比星光美丽》谭松韵| 善良的嫂子3在线播放| 女匪传奇第二部| 法国式禁忌结局1-4| 苍井空电影大全免费播放| 荷尔蒙6在线观看免费版第三季| 太平年免费观看完整版| 李恩美电影在线观看| 天美影院在线观看| 杨思敏潘金莲完整版| 电影需要爸爸播种子电影在线观看| 最新西游记| 地心历险记2免费完整版在线播放| 韩国野花睫毛膏2| 一仆二主一共多少集| 明星大侦探第八季免费观看完整版| 惊魂游戏| 劳拉迷宫1997免费观看| 熊出没电影全集免费观看| 《国色芳华》电视剧免费观看全集| 金银悔1-5普通话第22集| 名侦探柯南国语版tv| 飞船奇遇记| 寻龙诀高清| 双人按摩调情术免费观看完整版| 天行健在线观看| 危险关系在线观看| 性感的老师在线播放| 奇奇颗颗历险记动漫 | 樱兰高校男公关真人版| 开车看美女被开罚单?P的| 《丈夫请社长来家吃饭》在线播放 | 血与沙第一季| 乱世淫侠| 肢体的绣感在线看完整版免费观看 | 维修工人的艳遇在线免费观看| 莺长的女儿满天星| 女教师被学生连续糟蹋电影| 修理工艳遇在线观看| 黄豆鸟梅子叫声| 跟我走吧| 麦乐迪马克斯满天星在线观看| 电视剧星火| 霍比特人 百度影音| 女子私人监狱法版免费| 如果声音不记得免费观看完整版| 对学生会长的忠告全集免费| 盛唐免费风流电影在线观看| 红蜘蛛2剧情| 成何体统| 假日暖洋洋电视剧在线观看免费| 般配关系短剧免费观看全集| 电影《弱杀》完整版| 三年大片大全免费国语版观看| 耶伦抵京 中美双方握手近20秒| 单月大减4万亿存款都流向哪儿了?| 克隆人的进攻| 一步之遥字幕下载| 《和讨厌的部长出差旅》日本电影观| 美国版5娃娃脸| 局内人2在线观看| 酒徒电影| 血洛大陆| 贝蕾魔法| 和讨厌的部长出差日本电影 | 熊出没冒险之旅| 电影种马猎人完整版免费观看| 明月照我心电视剧免费观看| 阿尔梅洛| 公浮之5| 济南政府采购网| 被社长玩弄的秘书妻子| 白晶晶电影在线观看| 二手4500| 克里斯汀满天星三部曲| 春闺梦里人在线观看完整版| 女女电影免费观看完整版大结局 | 《帝国的毁灭》免费观看完整版| 鬼吹灯有声小说在线收听| 分娩按摩2HD| 中国警花| 平凡之路多少集| 《公的浮之手中字》免费在线观看| 诱惑小妈| 密宗威龙国语完整版| 一个妈妈的9中字头强华驿人物关系 | 韩国年轻的母年轻线在6| 花与蛇5之蛇蝎美人| 异灵灵异 2002国语| 布莱泽奥特曼在线观看| 3对1,初次体检2| 乌蒙小燕| 白峰《妻子心酸》免费观看| 钟丽缇晚娘| 水饺皇后未删减| 泰国蛇姬恋电影完整版| 《战·争》| 龙珠 阿沙隆| 欧式少女第16集全集高清版观看视频| 五十度灰第二季| 原来的神马电影在线观看免费| 克罗斯凯登电影作品| 都挺好电视剧全集免费| 沂蒙小调光头王老五| 妈妈的职业2完整版结局在线看免费视频网站| 黄花女儿的意思| 双子星公主第3部| 收脱者入室强奸在线观看| 西游降魔篇粤语高清| 高清这就是我未删减| 韩国三级之母亲| 二次大战启示录| 最后的99天下载| 萨迪1980满天星在线看| 表妹在线播放| 小大夫电视剧| 不义姐| 梦断乐缘堂| 潜罪犯粤语| 私人助理2完整版| 张蔷的全部歌曲| 双面娇娃| 漂亮的妈妈中字开头7个字| 斗罗大陆219| 张悦楷免费粤语讲古大全| 野花韩国中文版免费观看| 丐世红颜短剧免费观看全集| 大阅兵2019直播| 亲爱的妈妈4免费观看韩剧| 小麻薯贴纸怎样买便宜| 渔民家姑娘2| 岁月的童话影评| 你好,爱美丽| 电影《牙医姊妹》免费播放在线观看 | 电影潘金莲4集在线观看新| 一代枭雄全集bt下载| 爱我几何未删减完整版| 苏东坡 电视剧| 红高粱下载| 房奴试爱电视剧第一集开头| 一世好命| 给女儿开了花包| 父女乱之小芳的快乐生活| 吾守尔大爷的冰| 全职法师特别篇神秘委托在线观看| 女人如花电视剧全集 | 花与罪电影在线观看免费高清完整版| 美乃雀电影在线| 斗破苍穹100集免费观看| 养殖满圈:致富日常全集免费| 《棘手狂情》电影台湾版| 妖怪名单第二季| 追击者电视剧| 女子学院姑娘们1983第一季| 韩剧哦亲爱的| 金银梅5普通话版拍摄地点| 反贪风暴4粤语| 给我豹豹迷羊| 利辛县| 育婴室 电影| 海外行动电视剧免费观看| 新婚夜全集免费观看电视剧| 白峰美羽伦理片| 回复术士的重启人生在线| 暖暖的国语版全集观看| 公之浮之中字5hd年纪大| 云南迷人湖| 酒醉的探戈动力火车| 重蓬:丈夫的下属是初恋前辈| 初音未来h小游戏| 迪迦奥特曼国语全集高清| 希望爸爸播种| 新古惑仔| 唐探1900免费观看电影完整版| 痛欲 电影| 奔跑吧有情人| 《农场保卫战》满天星在线播放| 以爱为囚| 七夜雪电视剧在线观看完整版免费| 激情丛林意大利| 四十九日祭| 深喉2在线欧美| 缉魂电影无删减完整版| 《旁观者》| 不能说的秘密| 我的大叔韩剧免费观看| 未知| 魔神英雄传第三季| 埃博拉前线电视剧免费观看| 《家政老师2》完整版在线观看| 多家快递公司回应新规| 桔子在线观看免费高清电视剧| 美国版荷尔蒙9| 新版红楼梦在线高清免费观看| 武林女大生| 私人航空在线观看| 小满生活38集免费观看西瓜影视| 齐天大剩| 步步倾心电视剧免费观看完整版| 4名少妇精油按摩1| 一品大天师短剧免费观看| 庆余年手机在线观看| 满天星电影无删减完整版| 三打白骨精电影| 3d蒲团肉完整版高清| 五通神魔大战三只狐妖| 高清《梅根2.0》电影| 致命对决 电影| 兰州市| 半身死灵2| 金瓶梅原著电视剧1| 律师大人巴布印度电视剧在线观看| 战狼6免费播9999| 犯罪心理第十季| 与王一夜| 中文字Dl幕岳 和女胥在线播放| 傅佩荣详解易经64卦| 韩剧命中注定我爱你| 姐妹牙医在线| 孤舟电视剧36集全免费播放| 灯草和尚聊斋| 英雄祭1—40集| 女保险公司推销员4| 燃罪 电视剧| 益达广告完整版白百合| 魔力宝贝监狱未减版| 西夏狼王| 仙逆219集免费观看| 成何体统动漫第二季| 沙海电视剧免费观看| 淫的方程式动漫| 环太平洋一| 你给老子不上班| 《渔夫的老婆》| 异次元杀阵下载| 吞噬星空动漫免费| 《特殊快递员》| 金瓶梅3d国语完整版| 白石茉莉| 电影女机器人| 《需要爸爸播种子》免费观看在线播放_HD/未删减_1080P高清电影完整版 - 天堂 | 《魔法蓝精灵》| 冰雪奇缘1普通话版| 日本伦理片女律师的堕落| 布兰迪和他的怪物| 仙逆第98集完整版播放| 一起愁愁免费观看在线播放 | 美乃雀 在线观看播放| 小凤新婚台湾版哪里能免费看 | 禁忌1980满天星帕克| 终结者在线观看| 二泉映月歌曲| 嗯好深啊用力哦嗯啊秘书视频| 伦理片《需要爸爸播种子》1号线HD中字-未删减完整版手机免费在线观看-91神马 | 鬼灭之刃第三季锻刀村篇在线播放| 高压监狱法版1小时46分预告片| 我的遗憾和你有关| 男与女完整版电视剧免费高清| 美容院特殊待遇在线观看| 司藤结局什么意思| 那小子不可爱电视剧在线观看| 《爱我几何》法国完整版| 姐姐真漂亮5韩剧免费观看全集 | 爱上自己的义子| 马达加斯加3| 野兽刑警| 火口的两个人| 聊斋2之天宫美人| 变形金刚起源普通话| 晚春楼在线电影| 哇嘎| 辽宁卫视在线直播高清版| 回龙观星美影城影讯| 秦雪梅哭灵| 老鹰都开始抓鲨鱼了| 战狼9999| 东京爱情故事国语版| 政宗君的复仇动画| 罗马尼亚电影复仇| 向东是大海百度影音| 日本在线最色| 迈瑞 待遇| 苹果树下| 义子侵犯电影看| 狼毒人电视剧全集在线观看免费高清| 小小少女| 僧侣走肾1-12未删减| 韩剧安娜在线观看| 六指琴魔| 天生一对印度| 入室暴行3被蹂躏| 剧组的故事| 风云小棋王之五行杀阵| 深圳合租记| 姑娘国语高清在线观看| 当阳市| 电视剧赏金猎人| 满江红免费观看| 《需要爸爸播种子2》演员全名| 情圣囧瑟夫| 《天降之物》阿部夏树| 我们一起来看流星雨| 和部长出差的日子| 孤男寡女免费观看电视剧战狼4| 渔夫荒淫史电影| 李采潭演热情的邻居免费观看| 灵契动漫无删减第一季| 埃及皇后2003| 暮光之城4下| 私人航空电影在线观看| 《金花瓶》完整版西门庆| 盛夏晚晴天有多少集| 已婚少妇的下午| 非诚勿扰聂倩| 公之浮手在线观看完整版| 甜蜜家园3第三季电视剧在线观看| 东陵大盗电影全集| 坎贝奇三部曲b站无憾完整版 | 亡羊补牢课文| 是真爱还是希望泰剧在线观看| 古墓丽影法国版女版在线观看| 杯水情歌吉他谱| 单身男女韩剧免费观看 | 斯巴达克斯第四季| 金瓶梅在线播放| 插曲的痛30集全免费观看大结局| 放弃吧亚当君| 杜琪峰复仇| 行尸走肉第三季11| 私人女性監獄| 花满楼与陆小凤| 李采潭电影全集在线观看| 局外人电影| 加勒比女海盗1免费版| 妈妈不哭| 囡囡电影完整版百度影音| 塔日酒店电影免费观看高清版| 我们的歌第五季| 穿越火线下载 迅雷| 皇后驾到短剧| 站着再来一次48集分集剧情介绍| 《我和我们在一起》电视剧| 裙子里面有神兽| 小沈阳唱的歌| 6680电视剧免费观看| 舞帝利哥个人资料| 步步惊心电视剧| 坎贝奇的《无憾》电影| 恶老板2| 如懿传在线观看全集| 新还珠格格发布会| 金银梅5普通话国语版免费播放| 《乡村恋人》| 大江大河第三部免费播放| 喜剧电影爆笑| 男女愁愁愁高清全集| 台湾骂人的话| 中方突然宣布出兵| 我要变坏3| 簧瑟片| 男艺妓回忆录| 做aj的视频大全电视剧内地 | 痞子英雄2电影| 国产兽皇在线观看| 千金赤子板栗完整版在线观看| 漂亮的保姆韩国电影观看免费版 | 美国式禁忌3高潮喷涌| 这就是生活电视剧| 我学生的爸爸中字ID| 善良的人妻被部长侵犯| 清洁工第一季| 美国电影《需要爸爸播种2》在线观看 | 金银悔5一1手机版最新版本更新内容 | 石敢当之雄峙天东演员表| 《雪豹》免费观看| 凯帕克电影作品在线观看| 爱有多远电视剧| 大内密探之零零| 女版战狼10普通话版免费播放下载| 《维修师傅的艳遇HD》日本| 终结者 2| 牙医姐妹电影完整版观看 | 电影叶问4| 为什么我| 销售的销售秘密6HD中字国| 情事 2002 电影| 致命弯道3完整| 熊出没之过年爱奇艺| 超狠插曲痛30集全集| 国外真人版csgo| 《修女的忏悔室》动漫免费看| 年轻的母亲9| 村妓2HD高清国语| 张杰抄袭| 万里江山入我怀全集| 两公升的浮手中字| 探吃的猫女完整版| 亲爱的热爱的全集观看| 承欢记在线观看完整版电视剧全集| 急诊护士电影在线观看完整版| 向着胜利前进电视剧全集在线观看 | 贝克汉姆任意球集锦| 人猿泰山电影1995版在线播放| 相棒第十三季| 青梅竹马是消防员免费观看| 《爱上儿子同学》| 爱你 蓄谋已久短剧| 生死兄弟情剧情介绍| 《偿还4》电影| 坎贝奇《无憾》完整版电影在线观看| 儿子的妻子8免费观看电视剧| 巴基斯坦地图中文版| 刀郎演唱会| 《高级特工满天星》| 深圳军事直播间| 女皇之刃| 不惑之旅电视剧全部免费| 瓜达卢佩的玫瑰HD版在哪里可以看| 师傅日徒弟的场景| 《修理工的艳遇》电影| 两个母亲3| 骑士的战争下载| 灿烂的前行| 花容月貌电影免费| 色戒完整未删减版高清版| 天天想你在线观看完整版电影视频| 乡村首富短剧全集| 最美的青春电视剧免费播放| 四十分钟插曲视频在线观看| 朴诗妍《爱的释放》电视免费观看| 《勇敢的心》完整版免费观看| 复旦大学:黄亦玫严选 欢迎报考| 《束缚游戏》免费观看视剧人| 播放喜羊羊与灰太狼| 好儿子妈好爽快插我嫩草视频| 巨神战击队第一季免费观看| 满天星法版免费壮志凌云| 西游记香港版| 与敌同行国语下载| 龙骑假面骑士电影| 八戒8电影在线播放免费观看| 这公司有我喜欢的人动漫完整版| 拯救大兵瑞恩| 《相亲对象是问题学生》| 变形金刚4高清完整版| 灵与肉1992| 彭水| 髙压监狱法版免费| 山村大爷| 尖刀班的五天五夜| 荆门市| 美国娃娃脸经典版下载| 不能没有娘| 年轻的母亲2在线观看木瓜网| 特战荣耀 电视剧| 《灭火行动》| 漂亮的小婕子4| 警察锅哥40全集免费| 《我的祖国》儿童版| overflower在线免费观看 | 凯特的外遇日记| 河南民生频道直播| 《美容院:特殊待遇5| 我们手机在线观看免费| 古惑仔免费观看| 堕落人鱼| 麦乐迪马克斯女超人满天星播放| 乔布斯 吸毒| 太空部队第二季| 自动取精| 电影轮换2免费版| 扫毒风暴高清完整版免费观看电影| 唱k小鱼仙粤语| 妈妈职业5| 拆弹专家2免费观看完整版国语| 乔迪-加森| 心奇爆龙战车第1季| 上司的强迫HD中字在线观看| 芸汐传电视剧在线看免费观看| 魔童降世| 秦可卿原型大揭秘| 法国空少电影| 骑士动漫| 巨人族的新娘樱花动漫| 傻瓜猫全集| 《特殊游泳集体》免费观看下拉式| 两个妻子国语版全集| 《功夫熊猫2》| 恐龙战队第四季| 飞机上的性服务K8电影免费观看| 人民的名义免费完整版在线观看| 坐火车旅行电影| 在暴风雨时分| 十九岁免费完整版高清国语| 西城男孩最好听的歌| 似火流年电视剧| 养父 电视剧| 不当军事行为2017完整版| 电影我的兄弟姐妹| 《漂白》| 嫂嫂宝库免费观看电视剧全部| 法国特殊理发店| 修理工的艳遇在线观看完整版| 我的家庭女教师| 电视剧正阳门下全集| 江源县| 人猿泰山无删减版1995主演| 我是你婶娘免费观看高清韩剧| 情谜睡美人之欲望的姐妹| 那年我们的夏天| r片| 破苞流血疼叫视频视频| 高清《我的娜塔莎》电视剧| 《医生特殊的治疗》免费看| 法国空姐4(多塞尔航空)完整版免费中文 | 芈月传电视剧免费观看全集| 自治县| 男人和女人一起愁愁愁电视剧免费韩| 即使是圣洁的修女也无法净化 | 傅艺伟版封神榜| 黑寡妇 电影| 黑寡妇的电影| 《美容院:特殊待遇》完整版| 浮世风云绘无删减版免费观看| 喜洋洋之灰太狼飞马奇遇记| 军妓慰安妇| 胖东来卫生巾区域人满为患| 销售的销售秘密3HD中字| 斯巴达300勇士在线观看| 黑豹特警队| 动感之星小玲256集免费观看| 克莱尔的迷宫电影在线| 百万新娘之爱无悔61| 穿越之医妃难囚全集免费 | 韩国毛片同学韩妈妈屮文字惹| 二婶电视剧全集| 幸存者1937电影免费播放| 杀死比尔| 壮志凌云女版美国满天星| 六姊妹在线观看全集电视剧 | 古惑仔5龙争虎斗国语字幕| 安姨在线| 高清《韩国财阀1》免费观看中文版| 赤子威龙| 惊天激战高清在线观看| 做aj的电视剧大全| 谎言美人| 我的漂亮女房东完整版BD| 电热毯应该铺在哪一层| 总统夫人。主演,罗丽星克莱尔| 公交车上的那些事免费看中文 | 电视剧大秦赋| 《美容院:特殊待遇》在线| 丰臣兄弟!电视剧| 非亲兄弟电影| 忆青春飘逝免费观看高清在线| 情趣酒店激战1至5集 | 叶问四免费观看高清国语版| 新僵尸先生国语高清| 无憾坎贝奇无删减版在线看| 《金花瓶》完整版西门庆| 枭雄电影| 世界第一的初恋第一季| 星克莱尔总统夫人1997电影| 叙利亚地图中文版| 蓝宇 电影| 悠悠球白水| 中字HD丈夫的下属中字| 天海翼怪盗在线观看| 雾里歌曲原唱| 超决战!贝利亚银河帝国| 光战队覆面人国语版| 战狼9免费高清版双人| 彼女豆浆| 美妙旋律第3季动漫| 情人电影完整版免费播放| 空调维修工的艳遇在线观看 | 斗罗大陆电视剧免费版| 长歌行电视剧免费观看| 鬼吹灯 黄皮子坟| 《花子vs倔强驱魔师》的| 特警使命之全城危机| 来了在线观看| 大风杀电影免费观看| 17·3电影高清在线观看 | 五哈第三季| overflow第一季全集免费| 八仙全传之八仙过海全集| 婚词离曲电视剧| 恶夜活死鸡| 新有菜在线| 日本H在线观看| 高清《爱情人偶》| 江南锄奸剧情| 冰湖重生全集观看| 爸爸的种子高清免费| 藏珠电视剧在线观看| 成吉思汗电视剧音乐| 意志的胜利| 需要爸爸播种电影| 女员工免费观看中文字幕| 爱上特种兵免费看| 铁血尖刀| 侯玉洁2017年讲道视频| 再来一次在线观看完整视频| 光环电影完整版在线看高清| 国色芳华电视剧免费播放策驰影视| 赛仑意大利版渔夫的老婆| 夺冠在线观看免费完整版| 超新星闪电武士| 王牌保镖电影| 彩票| 和讨厌前任一起出差| 高清《你的婚礼》免费观看| 闵度允韩剧中文在线观看| 大都市小爱情 电视剧| 白峰系列电影高清观看| 3d蒲团肉完整版电影| 梦魇绝镇第二季| 墨西哥剧瓜达卢佩的玫瑰免费观看| 薛平贵与王宝钏电视剧全集55| 高清《掩耳盗邻 第二季》电视剧| 酒店1至5集免费| 猛士极品FREEDOM| 火拼全集观看| 修女也疯狂电影| 做aj的免费视频大全电视剧| 韩国仙女屋| 电波女与青春男第一季免费观看| 播放女流氓完整版电影| 纳粹女人集中营惊天秘密| 《定风波》电视剧| 义子乱的电影在线观看| 英雄虎胆电视剧全集| 最新韩国电视剧| 欧美成人版电影荣誉守则在线免费观看| 封神榜电视剧免费观看完整版| 脸庞全集观看| 小蜜桃5观看免费高清版电视剧| 春风物语6| 《二十一世纪爱情指南》免费观看全 | 侯门嫡女:谋略乾坤短剧全集| 咒电影完整版高清免费观看| 电影郝蕾版《颐明园》有没有播出| 西西里岛的美丽传说| 《需要爸爸播种子》演员全名单| 电影我的表妹| 新闻女王免费观看全集完整版| 疯狂小女生| 安徽地方戏庐剧| 开端 在线| 人袁泰山1995出版意大利免费观看 | 高海拔之恋2粤语| 韩国 av| 性解蜜| 新白娘子传奇50集免费看高清 | 日本电影《律师坠落》的剧情简介魔| 杀戮霸刀| 名侦探柯南真人版全集| 《厨房激战2》中文版| 50岁寡妇下面水多好紧| 侏罗纪世界混沌理论| 圣特罗佩女孩| 星汉灿烂电视剧结局| 上帝之城| 公之浮手完整版免费看| 波多野结衣女教师办公室| 长津湖2021在线观看| 买房子的女销售2| 胡歌版鹿鼎记| 酒店激战1-5免费观看| 江南媳妇| 侠客行不通免费观看| 多人轮换电影中字| 皮囊之下电影完整高清在线播放| 武藤兰合集| 很讨厌的部长去差旅| 不扣纽扣的女孩| 侠探杰克2迅雷下载| 夫人的侄子意大利| 豹在线观看| 变形计勇敢的心| 游泳湿润无删减版在线观看| 美丽姑娘免费高清电影大全| 第九章不等式与不等式组 | 九九电视剧全集免费| 由良千岁电影大全| 飞哥与小佛全集免费观看| 天际浩劫国语| 京香| 电影《迷犴》全集免费观看| 阿修罗之怒音乐| 黑话律师一共多少集| 《高压监狱 伦理》电影高清在线观看 - 如如影视 | 希望爸爸播种| sp发刷 红肿 双丘旧巷笙歌| 歧路兄弟全集免费观看完整版| 千金女贼 电视剧| 无法满足1980电影完整版| 三文鱼价格为何“跳水”| 电影《汤唯》在线观看| 被爸爸播种种子在线观看| 单口相声刘宝瑞| 来不及了在车CH| 战狼6免费完整高清版在线观看高清 | 高清《天注定》电影| 斗罗大陆148集| 我的父亲母亲的婚姻电视剧| tobo4| 芙人少女大人十四岁姑娘正片电影| 薄冰电视剧在线观看免费完整版| 电视剧我是传奇在线观看 | 手铐钥匙| 张警官三部曲 免费观看| 日韩三级片白峰美羽在线观看| 情满雪阳花电视剧免费观看全集| 善良的嫂子同居的日子| 风月俏佳人qvod| 铿铿铿锵锵锵锵免费看电视剧| 蜜桃熟了的夏日| 忍者龙剑传1| 我的漂亮朋友瘦子4演员表| 唐人街影院| 骑骑上司妻在线观看| 初恋时间1-6| 蜜桃成熟33d 下载| 新凯旋门| 高中生被C到爽哭视频免费 | 德国空乘4正片| 大峡谷遗宝| 大熔炉电视剧全集| 美国女超人满天星免费观看完整版 | 僵尸先生国语高清| 女版捉鬼敢死队满天星| 地铁逃生五子棋| 爱情斑马线| 插曲的痛第60集全集在线播放免费观看 | 空调维修工的艳遇(2) | 莱拉满天星三部曲免费观看 | 鬼水怪谈| 二阶堂在线视频| 隔壁的女孩韩剧| 娱乐百分百20120122| 一起愁愁免费观看视频播放| 魔鬼情人| 杨光的夏天| 天海翼《被犯女教师》| 逗鸟外传萌宝满天飞| 普法栏目剧日出| 金银悔1一5集免费观看在线 | 人世间电视剧在线观看免费完整版| 好大灬好硬灬好爽灬无码日本| 汉江怪物国语| 铁拳2012| 花鼓戏韩湘子化斋| 学生的妈妈5字| 法国妓院里的回忆| 海贼王722| 男女在一起愁愁愁视频电视剧 | 《干柴烈火》| 《北越暴行》2在线观看| 放弃我抓紧我| 夫人夜在线观看| 人生遥控器影评| 爸爸我想要你的种子| 眼线液的画法| 武庚纪 动漫| 《电影《千金与佣人》》 | 帝王之妾韩剧在线观看免费全集| 新奥特曼列传| 四少妇按摩 韩国在线| 长安三万里免费观看完整| 《冢本战争》免费观看中文版| 欲孽之屋| 幸福一家人电视剧| 菠萝菠萝蜜免费播放| 张艺谋新剧《雪迷宫》免费观看| 天上掉下猪八戒| 美国版荷尔蒙6免费观看 | 科学化学症候群| 吴健版农民伯伯国语免费看| 沉香如屑全集在线观看| 吞噬星空202集完整版| 丰满的临时工HD| 姐妹牙医HD未删减版| 白马少年| 我的青梅竹马是消防员未删减| 韩剧新《无主之花》免费观看| 《加勒比海盗1》(女版) | 人猿泰山1995意大利哪里能看| 纯真年代电影在线完整版观看| 赤坂丽电影未删版在线| 侏儒人被黑人蹂躏mp4| 望谟县| 《美容院:特殊待遇5| 三国塔防 魏传| 人的价值中文版全集| 小伙子爱上隔壁女邻居电视剧| 天堂计划| 《女销售的销售秘密》2| 《房奴试爱》| 雪中悍刀行2大牛影视| 海员记录在杜苏芮影响下航行遭遇 | 鬼灭之刃锻刀村篇| 以爱为营1-30集免费观看| 电影《替夫还债3》| 那些花儿王菲| 引诱的阿中文字幕| 兰花草电影高清在线观看方法| xl司令动漫第一季全集| 冲锋21| 古惑仔之少年激斗| 韩剧高清在线播放免费| 和讨厌的前任一起去差旅| 爱我几何无删减在线观看完整版意大利 | o娘的故事电影免费观看策驰影院| 韩剧《我的游泳女教练》免费观看 | 长津湖电影免费观看| 公之浮之手中有字9| 爱我几合完整版免费观看| 天注定 字幕| 神奇女侠vs怪兽们| 女武神驱动免费观看| 天海翼伦理秘密搜查官| 法国高压监狱3完整版| 帝王攻略动漫| 大道新火电视剧全集免费观看| 香香公主| 《被丈夫的下属推来推去的妻子》HD中字-完整版全集在线观看-电影[1]-4m影院 | 妈妈的职业免费完整版在线观看| 大鱼海棠湫| 女飞行员(法国)满天星女版在线观看| 囧妈怎么看| 黑寡妇 电影| 憨豆先生全集| 啄木鸟:女版《壮志凌云》夸克| 蛋蛋走乡村|