<div id="palb5"><fieldset id="palb5"><strike id="palb5"></strike></fieldset></div>
      <center id="palb5"></center>
        <ruby id="palb5"><menuitem id="palb5"></menuitem></ruby>

          <em id="palb5"><ol id="palb5"></ol></em>
          太阳之歌女主角,棋王梁家辉,三毛学生意,绅士品格国语版全集,西安天空出现奇异云层,幽灵公主在线观看高清完整,蜜桃成熟时2未删减版,燃烧电视剧全集30集

          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

          主站蜘蛛池模板: 国产白嫩漂亮美女在线观看| 987dy| 爱她的理由第二季免费动漫| 卖房子的女销售在线免费观看| 500星级之341电影完整版 | 维修工的绝遇2免费看| 电视剧掌门女婿| 莫妮爱我几何免费高清电影| 女子拒绝同事表白后遭辱骂| 男按摩师做乳房按摩电影在线观看| 肯兰德桑德兰满天星| 济公活佛第二部全集| 生活中的玛丽电影在线播放免费| 电影一路向西未删版| 夹震蛋玩到失禁PLAY调教| 精绝古城电影全集观看| 太阳的后裔15| 趟过男人河的女人电视连续剧| 日本动漫《花嫁高柳家》第一集| 《画皮》丁程鑫版| 琉璃在线| 酒店1-60集全集免费| 启示录在线观看免费完整版高清 | 电影《韩国财阀》完整版| 龙海市| 李茂扮太子电影在线观看| 82版杨敏思版本1-5电视剧免费观看| 犯了规短剧| 性解密大牛无删减影库| 开国少将邹衍逝世| 迷你特工队x免费全部| 新金银5—1手机版| 渤海之眼摩天轮| 澳门风云快播| 怀特安吉拉高清在线观看| 我的妻子的姐姐2免费观看电视剧| 高清正在缩小的男人未删减 | 千古绝尘| 猛鬼狐狸精字幕| 电影《逆罪》免费观看| 国风推拿院在线观看| 上阳赋电视剧全集免费观看| 电视剧军刺| 蒋玲玲版渔夫三部曲| 群星追忆张国荣2012演唱会| 西游记续集16集免费观看| 《伦理按摩2》大片 | 《美丽女儿替父亲还债》剧情电影| 裸婚电视剧| 我们的模拟恋爱| 亡者之谜泰剧在线观看泰剧 | 美国一级父女播种视频中文版| 一枝红杏入墙来| 我的表妹电影| 插曲的痛在线播放免费大全| 不雅空乘电影完整版免费观看| 夏日重现动漫| 逃狱者天海翼电影完整版| 上位2电影| 扎职粤语高清完整版| 连江县| 那小子真帅电影国语版| 活祭之夜| 千灭天际线| 老公上班的日子剧情介绍| 老同学6普通话| 斗罗大陆第4部终极斗罗| 天地英豪第三部| 《维修人员的培训》全集完整版免费| 地下婴儿乐队| 沉香如屑电视剧全集免费| 朔州市| 如懿传在线观看全集| 《爱的方程式》动漫免费观看| 无盐之月动漫免费全| 妻子6免费完整版| 绝地枪王在线观看| 迷宫的十字路口下载| 向井蓝在线观看| 疯狂的足球高清| 日本战狼6免费完整版| 火线追凶2全集| 美丽的桃子美国版5娃娃脸| 酒店激战2第5集什么时候开播| 滚滚红尘电影在线观看免费完整版 | 高清狂野时代未删减| 妹妹最近有点怪真人电影原声配音 | 猎毒者电影| 97免费在线观看| 干露露廖凡| 热辣滚烫电影免费看| 死神来了6国语完整版免费观看| 潜渊电视剧观看免费全集| 女长官的体罚1-43集介绍| 东北插班生免费观看全集| 高清万物生灵:2025圣诞特别集| 妻子6免费完整高清电视剧在线看| 点点星光免费观看完整版| 台湾土著版酋长的女儿| 铁树开花真的很难吗| 《淑女出招》电影| 女版斯巴达真人版在线观看| 今夜无人入睡免费观看第一集 | 择君记电视剧在线观看完整版免费| 《安塔芮丝》| 仙剑奇侠传第一部免费完整版| 无间道1| 奇怪的美容院2的完整演员表| 天龙八部胡军| 祈祷爱情电视剧| 公浮之手中字5年纪大| 灰姑娘的玻璃| 无人区在线观看免费版| 高压监狱2019满天星法版免费| 狂鼠列车| 东北风云黑道二十年| sao66| 澧州大鼓| 冷案第二部免费观看| 大侦探11| 罕见四胞胎排排睡| 意大利《妇产科》满天星播放| 万古神话免费观看全集完整版| 识骨寻踪第一季高清在线观看| 电影《私人航空》在线观看| 姐夫电影| 恶行之外粤语版免费观看| 电影《透视》在线观看| 多功能老婆在线观看| 辽粤大战徐杰怒吼张镇麟| 天海翼在线播放| 囤货种田:空间农女短剧全集| 年轻的母亲在线观看无删减版| 农民伯伯下乡第五部| 世上最不得安人纪录片在线播放| 放开爱mv| 18av千部电影与你分享| 银河奥特曼剧场版| 饼干警长| 盲井 完整版| 日本维修工人的艳遇| 沧元图 前传:东宁府的夏天未删减| 《塔蒂亞娜2》完整版| 插曲的痛60全集免费观看高清版校园青| 疯魔美女豆瓣| 家族恩怨:正名成功全集免费| 蛇姬恋泰国电影完整版| 一楼一凤闷骚影院首页| 李小环与苗翠花| 《部长来我家| 梦幻西游服战直播| 天浴 下载| 怒火十二小时免费观看| 秋瓷炫《生死决断》完整版| 执念如影| 菰米似故乡| 法国空姐4成人版| 变态的情人| 节的笔顺| 爱唯侦探dvd| 瑞奇宝宝中文版1一52集| 美猴王归来| 古墓丽影山寨版满天星在线观看| 高清盐沼之下| 学警雄心国语| 盛唐风流电影在线观看| 凯特的外遇日记| 谷原希美视频| 《血恋3之血河重生》 | 出差与部长同房希岛爱里在线电影| 歌曲《母鸡咯咯哒》| 《私人助理2》电影免费观看| 好男人手机在线观看免费播放| 梨泰院class电视剧在线观看| 圣特罗佩斯的姑娘们全集免费播放 | 彷徨之刃日版在线播放| 伦理片上门的修理工艳遇| 一仆二主百度影音| 大马帮电视剧免费观看| 由良千岁电影大全| 漂亮的保姆3韩国电影免费| 美人劫在线观看| 龙卷风优化| 特殊游泳教练在线| 大奉打更人电视剧在线观看免费| 二十一世纪性格爱情指南免费观看| 电视剧问心免费观看| 淬火年代电视剧免费在线观看| 美国女儿要爸爸播种电影免费观看| 老师破女学生处特级毛OOO片| 山神电影完整版免费| 需要爸爸的种子在线看| 神隐电视剧1-40集免费看| 《除却巫山》未删减版邓家佳| 售楼小姐的秘密》在线观看| 咱们结婚吧28| 如果关闭腾讯微博| 私人航空在线播放| 唐砖电视剧完整版| 星汉灿烂电视剧56集完全版| 黑鹰坠落满天星高能版 | 神枪电视剧全集下载| 爱我几何免费高清完整版在线观看 | 豪门恩怨| 美乃雀替夫还债电影全集| 青草青青视频| 惊天危机高清| 正在播放: JUQ-323 在没有丈夫陪伴的五天里,我被勒令禁欲,直到第一天晚上。不 | 黄色伦理片善良的同学欧美片 - 百度 | 欧式少女1-13集全剧情 | 无上战神| 奇热剧集| 金银悔1一5集免费观看| 月夜闪灵| 躺床上丝袜老阿姨| 入库单格式| 美丽小蜜桃4| 唐宫奇案之青雾风鸣电视剧| 寂寞护士公与媳| 秘书在办公室被躁BD在线小说| 《落魄贵族流璃川》动漫免费观看| 变相怪杰| 女超人麦乐迪下载| 古见同学有交流障碍症第二季| 长月烬明首播5集| 电影横空出世| 心花路放豆瓣| 卢克凯奇在线观看| 凡人修仙传30集完整版| 新金银悔1—5普通话免费2023| 泰坦尼特号| 猎场下载| 战狼6欧式少女全部视频努努| 都挺好全集在线观看| 扫黑风暴15集在线观看| 女护卫队电影免费播放2023年上映时间| 霍元甲全集| 嫌疑人x的献身电影| 小卖部开悬崖上| 采桑子 叶广岑| 全职高手第三季免费观看动漫| 华山论剑电视剧全集免费| 日本金银梅1-5普通话第二级 | 莫妮爱我几何免费高清电影 | 快播韩国电影| 《妻子的视频》2017| 女律师的堕落电影在线观看| 景甜久违晒自拍| 老师丝袜| 公之浮之手5中字义父| 我的机器女友| 今人不见古时玥| 姐妹牙医在线手机观看电影| 《你在等什么》西班牙电影| 蜘蛛侠2| 乘风2026| 浮之手中字免费版| 骄阳似火电视剧免费观看完整版| 我是刑警全集免费观看| 和部长一起去出差旅电影完整版| 土地公土地婆剧情介绍| 胭脂扣电视剧| 妈妈的职业2完整版结局在线看中字 | 按摩院里的黑人按摩师| 咱们结婚吧26| 斗罗大陆第153集免费观看| 美国伦理生殖按摩在线| 李算电视剧| 卧底归来第二部免费| 和讨厌的部长一起去出差旅的电影叫什么 | 《新上任的秘书》| 新一剪梅片尾曲| 曹查理 风流电影| 超时空要塞f剧场版| 做aj的电视剧大全50部| 撒旦有几个女儿| 我爱上了离婚的女人| 性的暴行北越未删减版 | 庆余年第二季全集免费观看| 想爱就爱2.5| 美国禁忌式家庭结局10| 金元大劫案| 庆余年2精彩片段| 3对1四人一次性体检什么电影 | 3对1在线观看中文字幕| 李贵富接受审查| 人民的正义 电视剧| 伦理《高压监狱2》法国版| 电影《秘密花园》免费观看| 电梯故障2| 娱乐百分百20100401| 和前男友一起出差电影免费在线观看| 不信天上掉馅饼| 杰克逊月球漫步| 电影上司的老婆双字ID| 梅西c罗拿过大力神杯吗| 禁忌4美国禁忌3完整版中文| 浪漫女家教台剧在线播放 | 哈马斯和法塔赫是什么关系啊| 双乳丰满的女学生电影| 幸福爱人电视剧全集在线观看| 三合人才市场| 保罗一家1--4美国版免费观看| 蜗居19集| 咒怨录像带| 意大利电影免费看| 克劳迪娅科尔《情陷迷途》| 《这份恋情望你察觉》| 高清《烧酒战争》电影| 美国娃娃脸4(经典版)| 李思思离职央视后迎来综艺首秀| 情逆三世缘结局| 老酒馆电视剧剧情介绍| 《售楼小姐的秘密》1| 我的团长免费完整版在线观看| 一九四二年电影完整版免费| 妈妈的职业2完整版结局在线看免费| 师傅全集| 斗破苍穹167在线观看| 你是我的命运中文版| 台湾满天星在线观看台湾电影| 昆明动物园消失1天的猫现身| 郝邵文电影全集国语| 总统夫人星克莱尔1997满天星| 类似周末同床的电影| 像小强一样活着电影| 盲井电影完整版| 五十路台湾版武松蒋玲玲田螺| 刺刀电视剧| 高清旁观者未删减| 高压监狱2法国完整版免费| 绿色椅子在线| 爱情电影网 佐山爱| 妈妈的男朋友5集理论| 电影《布兰迪之不当行为》在线观看| 电影追凶| 流浪地球2完整版在线看观看免费| 镇巴县| 黑帮大佬和我365天第二部在线 | 釜山行2正片观看| 电影车票| 夕颜夫人电影| 夫妻换房在线| 禽我无删减版在线观看| 原配夫妻| 西班牙电影《掌中之物》完整版免费 | 武林风泰山| 刀马旦电影| 圣特罗佩斯的姑娘们1982 满天星| 时间静止器 在线观看| 冒牌英雄| 韩国电影我的朋友他的妻子| 《入室暴行3被蹂躏》韩国电影在线观 | 《离婚后她带崽嫁入豪门》 | 庆余年电视剧全集资源| 世缘之舟泰剧在线观看| 清镇市| 妻子对不起丈夫| 擎天撼地| 陪部长出差的日子电影| 老炮儿未删减版| 坎贝奇拍的电影《无憾》免费观看 | 胜利事件牵扯明星| 泾阳县| 妻子妈妈双字ID电影| 世界第一初恋ova| 周迅画皮1电影免费高清在线观看| 《农场保卫战》满天星在线播放| 经侦在行动之黑金烈| 56集电视剧全部免费| 佘诗曼吹哨召唤张智霖| xl司令第八集全集在线观看| 乔家大院电视剧全集免费观看| 电视剧掌门女婿| 爱我几何在线观看完整版免费高清| 女房东的味道3中字完整版| 无声谎言短剧免费观看| 大棒打更人电视剧观看全集免费| XL司令第一季真人版全集免费完整版| 言承旭 ella| 奥罗拉公主| 美国电影《飘》免费观看中文 | 黑暗荣耀电视剧| 日本战狼6免费完整版电影| 可疑的理发店在线观看| 电视剧林师傅在首尔| 地狱公使电视剧在线观看| 1995版《泰山和珍妮丛林》免费观看在| 美国总统就职典礼直播| 那年我们一起追过的女孩| 街头篮球中锋| 电影《便利店相泽南》免费观看| 王小利回应被断绝父子关系| 暗黑第一季| 唐人街探案3免费观看完整在线| 没了丈夫和上司免费观看所有电影| 保险女王和她的商业秘密英文版| 沧元图第一季免费全集| 高庄监狱在线观看网址| 你的名字在线观看免费高清完整版| 上锁的房间电视剧免费观看完整版| 师兄撞鬼国语版免费观看| 公浮3| 昨天的月亮| 恶搞之家无删减在线观看| 妻子的秘密免费完整版电视剧| 牙医姊妹电影在线观看| 塘鹅暗杀令| 来福大酒店免费观看完整版| 爱情真善美下载| 《房屋售楼员》安姨| 她很漂亮韩剧高清在线观看| 可爱的恶女| 最美丽的第七天| 渔夫的荒淫史蒋玲玲版| 小欢喜电视剧| 潜龙道全集免费观看| 中国女游客潜水多次被教练亲吻 | 桃源社区在线观看| 动态头像吧| 三级健身房教练| 下一站是幸福在线观看全集| 妇女的觉醒| 广场舞心在跳情在烧| 《Overflower》真人版演员表| 少年莫扎特| 汤唯现身烧烤店 店主狂喜| 《保险的女销售》| 坎贝奇《品味人生》哪里能看| 神秘博士第八季| 雪中悍刀行免费观看完整版| 舞乐传奇| 四个少妇精油按摩的电影| 正播:巴黎奥运会开幕式| 少女rtys| 血战滇缅印| 木下檀檀| 央视新年新诗会| 李洛夫奇案| 袁阔成三国演义评书下载| 坠落的女律师全集免费| 危险的爱电影| 盖世帝尊动漫在线观看完整版免费| 首付电视剧全集30| 漂亮妈妈7中字开头7个字| 纯真年代电影在线完整版观看| 法政先锋第三部粤语| 体面吉他谱| 丈夫的属下中字2| 善良的的女愁书| 流星花园 泰版观看全集| 电视剧猎鹰行动| 女律师的坠落2理伦片| 棱镜恋曲| 追着彩虹的我们电视剧免费观看| 灵璧一中| 按摩院的特色待遇在线观看 | 拜托小姐国语| 日本jizz| 不良义姐真人版台湾在线观看| 建党伟业之践行者| 绝对权力在线播放全集| 《深山中的两姐妹》| 和部长| 无丁之地叙利亚战争电影| 梦幻西游五庄观副本| 莫妮卡爱我几何全集免费看| 秘密花园第三集| 十月三十三日电视剧免费播放| 爱恋205| 电影网免费观看高清完整版在线岳爸爸需要播种子 | 法国电影《特殊客房》的导演和主演| 马英九民调| 毒战1韩版免费完整观看| 高清《左撇子艾伦》电视剧| 川西剿匪记全集观看| 动真格了!渤海打响“第一枪”| 欧美伦理-西部通缉令精修成人版字幕佳作| 除恶飞车党在线观看| 巧巧电影| 千王之王 周星驰| 激情厨房3| 金三角风云| 哭泣女人的诅咒| 老爸待嫁| 女军医意大利1976| 特殊的酒店客房2| 血恋未删减版| 洛丽塔百度影音| 《麻将棒棒手》免费观看全集| BBBwww| 电影《坠落》在线观看| 我的丑娘剧情介绍| 贤妻良母电影| 满天星版《超女麦乐迪》1001满天星版| 不耻下问的故事| 河南男子与猪结婚引争议 | 壮志凌云成 2011版| 毛线袜套的织法| 海底小纵队中国之旅| 意大利电影免费看| 银屏梅电视剧免费观看| 小唐璜感情史电影完整版观看| 爱情公寓25集| 汶川县| 电影一帘幽梦| 不健全关系动漫在哪看免费| 哥哥去在线| 电影黄河绝恋| 妈妈的学生ID| 偶像活动第一季| 巧巧电影| 私人女性监狱美国版是哪个国家的| 《总统夫人》星克莱尔1997年满天星在线免费观看 | 旧三国演义全集| 法国《遗产》罗丽星克莱尔| 甄嬛高清| 古装三级片名| 迪加奥特曼动画片| 丽卡驯服2结局| 控制女上司的遥控器在线观看| 湖南省乌兰父亲| 堕落的女律师在线观看| overflew| 淫乱加班维修工电影| 霍比特人 百度影音| 《被下药强辱的妻子》| 《登山的目的》中字| 阳光并不遥远| 捆绑凌虐BD中文字幕| 飞虎出征 刘安琪| 不能让他走小品| 坏家伙们电影| 满天星电影无删减完整版| 隐藏的面孔| 雪中悍刀行在线观看免费完整版 | 暗夜深海电视剧免费播放在线观看| 哀牢山科考经历:鸟叫声像人说话 高压监狱在线看全集免费播放 | 我是特种兵之火凤凰36| 韩剧出轨的女人免费完整高清电视剧| 丰满的继牳5伦A片免费播放 | 水润女人刘志贤全集剧情介绍| 顺娘全集| 胜女的代价大结局| 《美容院的特殊待遇》| 麦乐迪在线观看完整免费| 一路向西无删减| 影子爱人电影| 马桶人73集part2| 女律师替夫还债完整版| 夫妻那些事在线| 凯蒂猫的灰姑娘| 电影《断金》| 朝鲜金雪美| 思思热思思| 电影大追捕| 韩国电影雏妓| 原沙央莉| 《迷宫》罗丽星克莱尔| 公与3个媳HD| 我家三爷超宠大结局| 高清《鬼父上卷》1| 朝鲜战争 王树增| 苍老师经典电影播放免费观看全| 电视剧潜渊免费观看全集完整版| 梦断紫禁城电视剧全集在线观看| 水浒传全集高清| xl司令动漫全集免费| 南京照相馆在线观看| 变节之潜罪犯| 花田喜事93粤语| 亲爱的热爱的全集免费版电视剧 | 满天星版《荣誉守则》在线| 战狼6免费高清| 李丽珍爱的 精灵| 《姐妹2》完整版免费观看| 激情燃烧的岁月主题曲| 校园2013韩剧| 维修工的艳遇 中字| 蔡卓妍删减42分钟电影上映| 法证先锋1粤语在线播放免费| 兔子先生高清免费全集在线观看 | 战昆仑电视剧| 少女艾莎完整版| 美国家庭式忌讳1-4古装| 黑袍纠察队 第四季 免费| 无人观看完整电视剧在线观看| 丛林逃亡| 战狼6欧式少女版资源百度云| 1995版人猿泰山hr版本百度网盘| 惊天魔盗团在线观看| 霹雳舞2| 电视剧利剑行动全集| 《维修工的艳遇》2| 校尉上将满天星| 嫁入豪门:少奶难当短剧全集| 年青的嫂子| 木法沙传奇免费观看完整版| 第一滴血2国语版| 把娇妻借给朋友泄欲4| 科目三舞蹈原版| 轩辕剑之天之痕| 粉江大白菜完整版观看| 极道之妻情炎| 周小斌个人资料| 海贼战队豪快者45| 满天星在线观看完整免费高清原声满天| 护士交换粗吟配乱大交| 勇敢的心电视剧免费观看完整版| 龙者罗拉| 电视剧金太狼的幸福生活| 女律师的坠落完整板| 《玉女心经3》高清电影在线观看 高压监狱1小时45分钟能出来吗 | 张卫健西游记国语| 被害空姐| 不良美女家政妇| 《法国空乘5》免费看| 高清《荆棘》电影完整版 | 弃少归来全集免费| 苍井空老师的全部电影| 西游记 86版续集| 盗墓笔记 谜海归巢| 少女3完整免费观看版高清在线| 死神来了:血脉诅咒| 电影《美味快递员2》演员阵容在线观| 时光恋人电影| 时光正好短剧免费完整版| 非常90后下载| 盗墓笔记之云顶天宫在线观看| 老婆6在线观看免费版电视剧| 江南1970在线观看完整版| 一路向西女演员| 电视剧 永不回头| 4法国少女| 战狼6高清免费播放观看| 侏罗纪世界3国语版免费观看| 画皮之真爱无悔大结局| 复仇之火完整免费观看| 电影麦乐迪女超人完整版免费观看 | 亲爱的仇敌全集免费观看| 与敌同行国语| flower第季无马赛真人版| 黑巨茎大战俄罗斯美女上下插视频| 电视剧繁花在线观看全集| 真命小和尚| 电视剧免费杉杉来了| 《女律师替夫还债》韩剧| 污污污双人调情按摩术免费在线播放| 《无能丈夫》日剧| 让我听懂你的语言电视剧| 如果爱第2季 综艺| 金牌销售秘密1HD中字| 美女在线观看完整版全集| 韩剧《我的女朋友》| 彷徨之刃免费观看完整版| 爱情怎么翻译?| 《炸天小姐》在线观看美国| 束缚游戏免费| 范冰冰绿夜在线观看百度网盘| 高清沧元图 前传:东宁府的夏天| 超级经纪人 电影| 青禾男高电影| 女版捉鬼敢死队法国空姐| 敌特在行动在线观看| 中共八大元老| 世上只有妈妈好电视剧全集免费| 自古美女爱英雄dj| 美国XXXX69| 羞辱上司无删减在线观看| 我的幸福密码| 电影我的错误免费观看完整版| 都市风云再起:龙帅归来短剧全集| 厨房的岳 90分钟电影| 《overflower》真人版在线 | 卧底归来第二部免费| 电视剧老公的春天全集| 战争暴行女兵HD版电影播放| 巨乳保险| 寻梦环游记中文免费版在线观看| 韩剧玻璃鞋国语版| 韩国电影丰满的少妇| 西部通缉令1986版| 后院露营第一季未增减0.0| 单亲妈妈4免费高清完整版观看| 跳水世锦赛女子十米台决赛直播 | 松岛葵超级兴奋朋友的| 洪熙官 甄子丹| 漂亮女邻居| 渔夫荒野台湾版免费观看| 镜花风月之女僵尸免费观看| 神墓动漫全集在线播放| 迪斯科舞厅| 江湖情电影| 火影忍者在线看免费观看| 与夫上司愉情的妻子在线观看| 韩剧看了又看| 长津湖战役3免费观看| 洪湖赤卫队| 阴阳镇怪谈电影在线观看完整版| 黑白配hd1080完整版在| 我的巨乳姐姐| 出师一表真名世| 无所畏惧电视剧免费| 寻秦记粤语在线观看完整版 | 台湾毛片《鱼夫的荒淫史》在线播放| 迷人的保姆 中文在线| 马志明相声下载| 《今天的她们》电视剧| 珠海市| 胜者为王iv争霸粤语| 无眠之境电视剧免费观看| 锦月如歌电视剧免费观看全集完整版| 女篮中锋坎贝奇三部曲| 王嘉尔 papillon| 夸克手机在线观看满天星荷尔蒙| 釜山行2在线观看| 电视剧神隐在线播放最新| 农民伯伯下乡2国语版百度云电影| 芒果香谢军| 李少红版红楼梦| 松药局家的儿子们| 丹麦真刀实枪满天星电影| 不惑之旅| 少年派2国语版免费观看| 《大江大河2》电视剧| 怒火重案电影免费观看完整版| 用我的手来打扰我吧| 不明身份百度影音| 后宫之妾| 被凌辱的妻子在线观看| 胜女的代价2| 草莓之夜电影版在线观看| 名侦探柯南剧场版10| 日日网| 青春冲动| 五年级女生| 开战日电影在线看免费观看| 畸零与色情| 日本混血女大学生精油按摩三位混血女大学生BDHD | 放逐粤语| 妖精的尾巴160| 刑法第三章| 《overflower》真人版演员表| 高压监狱3法国电影完整免费观看 《房奴试爱》截取了一段开头原声 | 牙医妹妹 电影在线观看| 142分钟颐和园未删除版本| 刀郎金刚经歌曲播放| 泰剧是你| 武林幸运星| 《最高の爱人沼》三上悠亚| 铜铜铜铜铜铜钢免费| 北京财经频道| 扫黑行动在线观看免费高清完整版| 黑白大搏斗燕赵刑警| 社长妻子大物社长秘书是谁演的| 《兄弟换麦子4国语中语》| 天使心在线观看| 法兰西特派| 电影跳出去| 笑傲江湖 李亚鹏| 《麦乐迪女超人》在线观看| 桃色凶器未删节| 泰国鬼片《黑煞女》在线观看免费 | 开物成务的正确解释| jizz曰本| 司藤免费观看全集完整版| 《漂亮的保姆》韩国电影下载| 《马向阳下乡记》电视剧| 快乐再出发综艺| 俄罗斯女儿国2完整版| 日本差旅电影| 别惹白鸽在线观看免费完整版| 少狼第三季13| 刀客家族的女人44集全集免费观看| 播种女儿| 除却巫山彭丹未删减版| 电击小子第三季动漫| 少女第一夜| 少女がおしっこをする| 一雪前耻电视剧免费观看| 战狼6| 金银瓶1—5普哺乳期| 热搜在线电影免费观看完整版高清| 花非花雾非雾下载mp4| 斗罗大陆208| 篮球宝贝| 外卖员的特殊待遇在线观看| 电影在线观看高清完整免费观看| 大男当婚 下载| 高清《克劳德夫人》电影| 漂亮的小瘦了3| 爸爸的播种| 五十度灰电影无删减| 善良的岳母免费观看| 战国basara石田三成| 疯狂1-40集免费观看| 贝拉1980| 司藤免费观看| 钢琴曲献给爱丽丝| 需要爸爸播下种子美剧第二季免费观看| 少女大人在线观看免费韩剧| 绝品邪医的桃花劫短剧免费观看| 狂飙免费播放| 小凤结婚| 孤独的美食家第一季| 牵牛的夏天片尾曲| 高清索命舞娘未删减| 不良义姐免费看真人版| 伪装者电视剧全集免费观看| 天使即将来临续集| 男与女电影| 奇妙的发型屋2中文版翻译| 二十八星瓢虫| 隋唐英雄传第四部| 唐人街探案3电影完整版免费| 《特殊的治疗》李采潭中字| 私人岛屿在线观看| 轧戏在线观看| 城池营垒全40集免费观看| 克里斯汀满天星三部曲| 《部长出差的日子》完整版| ova夕颜动漫在线观看| 《斗罗大陆剧场版 剑道尘心》| 屠宰森林| 花房姑娘季三季| 恋恋不忘大结局| 刘纪鹏:股市破3000点是爆发| 家常菜电视剧全集在线观看| 为逆光而行电视剧在线观看免费| 《私人助理2》电影免费观看| 特殊外卖员在线观看| 只是离婚关系电视剧| 一马离了西凉关| 我们的秘密免费观看全集| 柯南国语版全集高清| 你比星光美丽电视剧免费| 义姐不是良妈动漫全集免费观看全集 | 高清《学校风云》| 乙酰半胱氨酸泡腾片| 美容院:待遇服务,3| 星克莱尔第一夫人满天星| 加菲猫大电影2024国语版| 灵异侦缉档案2国语| 色即是空 2015| 欧式少女16集全在线观看优酷下载| 天龙八部电视剧| 小巷人家免费播放的电视剧| 电视剧明天我不是羔羊| 《我的大胸继拇》3| 法国女版顶级飞行员哪里看| 魔唇劫国语|