伊人久久大香线蕉综合影视_日韩精品少妇无码受不了_71pao成人国产永久免费视频_国产伦片中文免费观看_国产高清无码麻豆精品_九色综合伊人久久富二代_日韩黄色精品_日韩A∨精品日韩精品无码

每天學(xué)習(xí)一個Android中的常用框架——1.Litepal

2020-4-8    seo達人

文章目錄

1.簡介

2.特性

3.演示

3.1 集成

3.2 配置

3.3 創(chuàng)建數(shù)據(jù)庫

3.4 升級數(shù)據(jù)庫

3.5 插入數(shù)據(jù)

3.6 查詢數(shù)據(jù)

3.7 更新數(shù)據(jù)

3.8 刪除數(shù)據(jù)

4.版本異同

5.源碼地址

1.簡介

Litepal——作為帶我入行的第一本教學(xué)書籍《Android第一行代碼》的作者郭霖老師所寫出來的持久化框架,幾乎算是我接觸Android世界之后第一個遇到的框架,故將該框架列為一系列學(xué)習(xí)框架博客的首位。

根據(jù)Litepal的GitHub主頁:Litepal,可以看到該框架的一些簡介:



LitePal is an open source Android library that allows developers to use SQLite database extremely easy. You can finish most of the database operations without writing even a SQL statement, including create or upgrade tables, crud operations, aggregate functions, etc. The setup of LitePal is quite simple as well, you can integrate it into your project in less than 5 minutes.



事實上,正如這段簡介所說,集成Litepal相當(dāng)簡單,不需要超過五分鐘時間。使用Litepal,也適合對sql語言還不熟悉的開發(fā)者快速上手。



2.特性

讓我們繼續(xù)瀏覽Litepal的GitHub主頁,可以發(fā)掘Litepal的一些特性:



Using object-relational mapping (ORM) pattern.

Almost zero-configuration(only one configuration file with few properties).

Maintains all tables automatically(e.g. create, alter or drop tables).

Multi databases supported.

Encapsulated APIs for avoiding writing SQL statements.

Awesome fluent query API.

Alternative choice to use SQL still, but easier and better APIs than the originals.

More for you to explore.

用大白話來描述的話,可以列舉如下:



Litepal使用了ORM(對象關(guān)系映射)模型

Litepal幾乎是無配置的,僅需極少的配置文件

Litepal幾乎包括所有的CRUD操作,也支持多張表格的操作

Litepal可以僅調(diào)用api進行CRUD操作而避免編寫sql語句

總之,看到Litepal具有這么多良好的特性,讀者是否心動了呢。理論的話不多說,我們現(xiàn)在就開始正式地使用Litepal進行數(shù)據(jù)庫的相關(guān)操作

PS:如果有曾經(jīng)學(xué)習(xí)過Java的ORM框架——Mybatis的讀者,應(yīng)該不會對Litepal的使用太陌生,因為它們都使用了xml文件進行相應(yīng)的配置



3.演示

3.1 集成

現(xiàn)在Android框架的集成相比于IDE還為ADT的時代,要方便了許多。原因是現(xiàn)在的主流IDE是Android Studio,而AS默認使用了Gradle進行版本的配置管理,這讓集成框架變得簡單了許多。

在build.gradle下,添加以下語句,然后重新sync,即可將Litepal集成到你的項目中:



implementation 'org.litepal.android:java:3.0.0'

1

當(dāng)然,目前Android的主流開發(fā)語言,除了Java之外,還有Kotlin,Litepal同樣具有Kotlin版本的(這里的演示僅針對Java,Kotlin版本的異曲同工)依賴:



implementation 'org.litepal.android:kotlin:3.0.0'

1

可以根據(jù)個人需求進行配置。



3.2 配置

集成了Litepal之后,要想正式使用它還需要進行一些配置



在assets目錄下新建litepal.xml,作為Litepal的全局配置文件,相應(yīng)的條目信息已作出注釋,代碼如下:

<?xml version="1.0" encoding="utf-8"?>

<litepal>

    <!--  數(shù)據(jù)庫名  -->

    <dbname value="androidframelearn"/>



    <!--  數(shù)據(jù)庫版本號  -->

    <version value="1"/>



    <!--  指定映射模型  -->

    <list>

       

    </list>



    <!--  指定文件的存儲方式  -->

    <!--  <storage value="external" />-->

</litepal>



在你的應(yīng)用下配置Litepal,有兩種方式可以實現(xiàn):

修改清單文件,將你的應(yīng)用名修改為:android:name="org.litepal.LitePalApplication"

新建一個自己寫的MyOwnApplication類,然后將清單文件中的應(yīng)用名定位到該類,即:android:name="com.example.MyOwnApplication",然后再編寫MyOwnApplication類,代碼如下:

public class MyOwnApplication extends Application {



@Override

public void onCreate() {

    super.onCreate();

    LitePal.initialize(this);

}

...

}



兩種方式亦可,Litepal的作者建議若使用第二種方式,需要盡快地調(diào)用LitePal.initialize(this);所以將其放在onCreate()方法是最好的。



3.3 創(chuàng)建數(shù)據(jù)庫

剛才在介紹的時候已經(jīng)說過,Litepal采取的是對象關(guān)系映射(ORM)的模式,那么什么是對象關(guān)系映射呢?簡單點說,我們使用的編程語言是面向?qū)ο笳Z言,而使用的數(shù)據(jù)庫則是關(guān)系型數(shù)據(jù)庫,那么將面向?qū)ο蟮恼Z言和面向關(guān)系的數(shù)據(jù)庫之間建立一種映射關(guān)系,這就是對象關(guān)系映射了。

不過你可千萬不要小看對象關(guān)系映射模式,它賦予了我們一個強大的功能,就是可以用面向?qū)ο蟮乃季S來操作數(shù)據(jù)庫,而不用再和SQL語句打交道了,不信的話我們現(xiàn)在就來體驗一下。像往常使用SQLiteOpenHelper類,為了創(chuàng)建一張Book表需要先分析表中應(yīng)該包含哪些列,然后再編寫出一條建表語句,最后在自定義的SQLiteOpenHelper中去執(zhí)行這條建表語句。但是使用LitePal,你就可以用面向?qū)ο蟮乃季S來實現(xiàn)同樣的功能了,定義一個Book類,代碼如下所示:



package com.androidframelearn.dao_litapal;



import org.litepal.crud.LitePalSupport;



public class Book extends LitePalSupport {

    private int id;

    private String author;

    private double price;

    private int pages;

    private String name;

    public int getId(){

        return id;

    }

    public void setId(int id){

        this.id = id;

    }



    public String getAuthor(){

        return author;

    }

    public void setauthor(String author){

        this.author = author;

    }



    public double getPrice(){

        return price;

    }

    public void setPrice(double price){

        this.price = price;

    }



    public int getPages(){

        return pages;

    }

    public void setPages(int pages){

        this.pages = pages;

    }



    public String getName(){

        return name;

    }

    public void setName(String name){

        this.name = name;

    }

}



這里使用標簽來聲明我們要配置的映射模型類,注意一定要使用完整的類名。不管有多少模型類需要映射,都使用同樣的方式配置在標簽下即可。

沒錯,這樣就已經(jīng)把所有工作都完成了,現(xiàn)在只要進行任意一次數(shù)據(jù)庫的操作,BookStore.db數(shù)據(jù)庫應(yīng)該就會自動創(chuàng)建出來。為了更好地演示代碼,我們將布局文件所需要的功能一次性編寫好,activity_main.xml代碼如下:



<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context=".MainActivity"

    android:orientation="vertical">



    <Button

        android:id="@+id/btn_db_create"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="創(chuàng)建數(shù)據(jù)庫"/>



    <Button

        android:id="@+id/btn_db_query"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="查詢數(shù)據(jù)"/>



    <Button

        android:id="@+id/btn_db_insert"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="插入數(shù)據(jù)"/>



    <Button

        android:id="@+id/btn_db_update"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="更新數(shù)據(jù)"/>



    <Button

        android:id="@+id/btn_db_delete"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="刪除數(shù)據(jù)"/>



</LinearLayout>





接下來,修改MainActivity,除了給按鈕注冊點擊事件,還需要編寫不同的方法代表不同的邏輯,其中,創(chuàng)建數(shù)據(jù)庫的方法代碼如下:



private void createDBbyLitePal() {

        btn_db_create.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Log.i(TAG,"創(chuàng)建數(shù)據(jù)庫成功");

                LitePal.getDatabase();

            }

        });

    }



僅僅通過點擊按鈕,調(diào)用LitePal.getDatabase();這句api,就可以創(chuàng)建出數(shù)據(jù)庫,讓我們實際進入項目中嘗試一下吧!點擊該按鈕,然后查看控制臺,如圖所示:



出現(xiàn)該句日記,說明數(shù)據(jù)庫創(chuàng)建成功,接下來我們看看這個數(shù)據(jù)庫是否按照我們所設(shè)置好的格式創(chuàng)建出來了,進入data/data/你的項目包名/databases,即可查看到該數(shù)據(jù)庫已經(jīng)放置到該目錄下,如圖所示:





3.4 升級數(shù)據(jù)庫

事實上,若想對現(xiàn)有數(shù)據(jù)庫進行升級,也是可以實現(xiàn)的。以前我們使用SQLiteOpenHelper來升級數(shù)據(jù)庫的方式,雖說功能是實現(xiàn)了,但你有沒有發(fā)現(xiàn)一個問題,,就是升級數(shù)據(jù)庫的時候我們需要先把之前的表drop掉,然后再重新創(chuàng)建才行。這其實是一個非常嚴重的問題,因為這樣會造成數(shù)據(jù)丟失,每當(dāng)升級一次數(shù)據(jù)庫,之前表中的數(shù)據(jù)就全沒了。

而使用Litepal,就可以很好地避免這個問題。假設(shè)我們現(xiàn)在有一張新的表Category要加進去,同樣編寫它的實體類,代碼如下:



package com.androidframelearn.dao_litapal;



public class Category {

    private int id;

    private String categoryName;

    private int categoryCode;

    public int getId(){

        return id;

    }

    public void setId(int id){

        this.id = id;

    }



    public String getCategoryName(){

        return categoryName;

    }

    public void setCategoryName(String categoryName){

        this.categoryName = categoryName;

    }



    public int getCategoryCode(){

        return categoryCode;

    }

    public void setCategoryCode(int categoryCode){

        this.categoryCode = categoryCode;

    }

}



改完了所有我們想改的東西,只需要記得在litepal.xml將版本號加1就行了。當(dāng)然由于這里還添加了一個新的模型類,因此也需要將它添加到映射模型列表中。修改litepal.xml中的代碼,如下所示:



<?xml version="1.0" encoding="utf-8"?>

<litepal>

    <!--  數(shù)據(jù)庫名  -->

    <dbname value="androidframelearn"/>



    <!--  數(shù)據(jù)庫版本號  -->

    <version value="2"/>



    <!--  指定映射模型  -->

    <list>

        <mapping class="com.androidframelearn.dao_litapal.Book"/>

        <mapping class="com.androidframelearn.dao_litapal.Category"/>

    </list>



    <!--  指定文件的存儲方式  -->

    <!--  <storage value="external" />-->

</litepal>



重新運行一下程序,再次創(chuàng)建數(shù)據(jù)庫,就可以完美地完成數(shù)據(jù)庫的升級了。這里的調(diào)試可以使用sqlite工具,這里不再贅述。



3.5 插入數(shù)據(jù)

在講述本節(jié)時,首先回顧一下之前添加數(shù)據(jù)的方法,我們需要創(chuàng)建出一個Contentvalues對象,然后將所有要添加的數(shù)據(jù)put到這個Contentvalues對象當(dāng)中,最后再調(diào)用SQLiteDatabase的insert() 方法將數(shù)據(jù)添加到數(shù)據(jù)庫表當(dāng)中,步驟相當(dāng)繁瑣。

而使用LitePal來添加數(shù)據(jù),這些操作可以簡單到讓你驚嘆!我們只需要創(chuàng)建出模型類的實例,再將所有要存儲的數(shù)據(jù)設(shè)置好,最后調(diào)用一下save()方法就可以了。

同樣地,修改MainActivity,增加插入數(shù)據(jù)的事件方法,代碼如下:



private void insertDatabyLitePal() {

        btn_db_insert.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Book book = new Book();

                book.setName("The Da Vinci Code");

                book.setauthor("Dan Brown");

                book.setPages(454);

                book.setPrice(16.96);

                book.save();

                Log.i(TAG,"插入數(shù)據(jù)成功");

            }

        });

    }



同樣運行程序,查看控制臺,如圖所示:



當(dāng)點擊查詢數(shù)據(jù)(下一節(jié)將介紹該邏輯)時,控制臺打印剛剛插入的數(shù)據(jù),如圖所示:





3.6 查詢數(shù)據(jù)

使用Litepal同樣可以很輕易地查詢數(shù)據(jù),當(dāng)然了,由于篇幅限制,這里僅僅貼出最簡單的查詢方式,至于關(guān)聯(lián)查詢等稍復(fù)雜的查詢方式,可以去GItHub上參考Litepal的官方文檔進行相關(guān)調(diào)用即可。

同樣地,修改MainActivity,增加查看數(shù)據(jù)的事件方法,代碼如下:



private void queryDatabyLitePal() {

        btn_db_query.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                List<Book> books = LitePal.findAll(Book.class);

                for (Book book : books){

                    Log.i(TAG,"查詢數(shù)據(jù)成功");

                    Log.d("MainActivity","書名是"+book.getName());

                    Log.d("MainActivity","書的作者是"+book.getAuthor());

                    Log.d("MainActivity","書的頁數(shù)是"+book.getPages());

                    Log.d("MainActivity","書的價格是"+book.getPrice());

                }

            }

        });

    }



相關(guān)的運行結(jié)果上一小節(jié)以貼出,這里不再重復(fù)。



3.7 更新數(shù)據(jù)

更新數(shù)據(jù)要比添加數(shù)據(jù)稍微復(fù)雜一點,因為它的API接口比較多,這里我們只介紹最常用的幾種更新方式。

首先,最簡單的一種更新方式就是對已存儲的對象重新設(shè)值,然后重新調(diào)用save()方法即可。那么這里我們就要了解一個概念,什么是已存儲的對象?

對于LitePal來說,對象是否已存儲就是根據(jù)調(diào)用model.isSaved()方法的結(jié)果來判斷的, 返回true就表示已存儲,返回false就表示未存儲。那么接下來的問題就是,什么情況下會返回true,什么情況下會返回false呢?

實際上只有在兩種情況下model.isSave()方法才會返回true, 一種情況是已經(jīng)調(diào)用過model. save()方法去添加數(shù)據(jù)了,此時model會被認為是已存儲的對象。另一種情況是model對象是通過LitePal提供的查詢API查岀來的,由于是從數(shù)據(jù)庫中查到的對象,因此也會被認為是已存儲的對象。

由于查詢API相對復(fù)雜,因此只能先通過第一種情況來進行驗證。修改MainActivity中的代碼,如下所示:



private void updateDatabyLitePal() {

        btn_db_update.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Book book = new Book();

                book.setName("The Lost Symbol");

                book.setauthor("Dan Brown");

                book.setPages(510);

                book.setPrice(19.95); // 第一次設(shè)置商品價格

                book.save();

                book.setPrice(10.99); // 第二次設(shè)置商品價格

                book.save();

                Log.i(TAG,"更新數(shù)據(jù)成功");

            }

        });

    }



可以看到,我們做了跟插入數(shù)據(jù)類似的事情,但是我們對數(shù)據(jù)的價格進行了設(shè)置,運行程序,如圖所示:



可以看到,除了剛剛插入的數(shù)據(jù),還有第二條剛剛更新過后的數(shù)據(jù)。然而這種更新方式只能對已存儲的對象進行操作,限制性比較大,接下來我們學(xué)習(xí)另外一種更加靈巧的更新方式,可以調(diào)用以下api:



book.updateAll("name = ? and author = ?","The Lost Symbol","Dan Brown");

1

這里僅貼出其中一條api,其他的可以參考官方文檔,這里不再贅述。



3.8 刪除數(shù)據(jù)

使用Litepal刪除數(shù)據(jù)的方式主要有兩種,第一種比較簡單,就是直接調(diào)用已存儲對象的delete()方法就可以了,對于已存儲對象的概念,我們在之前已經(jīng)學(xué)習(xí)過了。也就是說,調(diào)用過save()方法的對象,或者是通過LitePal提供的查詢API查出來的對象,都是可以直接使用delete()方法來刪除數(shù)據(jù)的。這種方式比較簡單,我們就不進行代碼演示了,下面直接來看另外一種刪除數(shù)據(jù)的方式。

代碼如下:



private void deleteDatabyLitePal() {

        btn_db_delete.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                LitePal.deleteAll(Book.class,"price < ?","15");

                Log.i(TAG,"刪除成功");

            }

        });

    }



運行程序,刪除過后,按照代碼邏輯,已經(jīng)刪除掉了所有price小于15的條目,如圖所示:





4.版本異同

之前閱讀了郭霖老師所著《Android第一行代碼 第二版》時,所記載的Litepal版本為:



compile 'org.litepal.android:core:1.4.1'

1

而的Litepal版本(Java版本,另有Kotlin版本,導(dǎo)入的依賴稍有不同)為:



implementation 'org.litepal.android:java:3.0.0'

1

新舊版本的主要區(qū)別是一些類名的劃分,例如老板本的DataSupport變成了LitePalSupport,除此之外,一些api的名稱也稍有變動,讀者在使用時最好可以參考GitHub上的官方文檔,及時更新代碼,做到與時俱進。



5.源碼地址

AFL——Android框架學(xué)習(xí)


日歷

鏈接

個人資料

藍藍設(shè)計的小編 http://www.cqzjtgb.com

存檔

av电影中文网址| 亚洲精品一区蜜桃| 99热6这里只有精品| 久久午夜福利片| 精品一区在线观看国产| 一级a做视频免费观看| xxx大片免费视频| 免费播放大片免费观看视频在线观看| 国产精品偷伦视频观看了| 汤姆久久久久久久影院中文字幕| 人成视频在线观看免费观看| 男女免费视频国产| 国产av码专区亚洲av| 91精品三级在线观看| 亚洲精品美女久久av网站| 久久久a久久爽久久v久久| 日本-黄色视频高清免费观看| 天美传媒精品一区二区| 国产黄色视频一区二区在线观看| 国模一区二区三区四区视频| 午夜影院在线不卡| 亚洲精品中文字幕在线视频| 一区二区三区乱码不卡18| 美女cb高潮喷水在线观看| 久久国内精品自在自线图片| 国产精品熟女久久久久浪| 婷婷色综合www| 五月天丁香电影| 下体分泌物呈黄色| 51国产日韩欧美| 在线免费观看不下载黄p国产| 久久精品夜色国产| 九色亚洲精品在线播放| 美女国产高潮福利片在线看| 一级黄片播放器| 成人二区视频| 欧美亚洲日本最大视频资源| 在线亚洲精品国产二区图片欧美 | 男女无遮挡免费网站观看| 久久国产精品男人的天堂亚洲| 国产在线观看jvid| 亚洲精品久久成人aⅴ小说| 两个人免费观看高清视频| 欧美黑人欧美精品刺激| 啦啦啦 在线观看视频| 90打野战视频偷拍视频| 天天添夜夜摸| 亚洲七黄色美女视频| 这个男人来自地球电影免费观看| 一边摸一边抽搐一进一小说 | 亚洲av国产av综合av卡| 一区在线观看完整版| 亚洲国产av影院在线观看| av片东京热男人的天堂| 欧美一级毛片孕妇| 国产成人精品无人区| 肉色欧美久久久久久久蜜桃| 99在线人妻在线中文字幕 | 天堂俺去俺来也www色官网| 我要看黄色一级片免费的| 女同久久另类99精品国产91| 国产成人欧美| 国产高清视频在线播放一区| 午夜视频精品福利| 嫩草影视91久久| 亚洲成人免费av在线播放| 丁香六月天网| 一区福利在线观看| 精品视频人人做人人爽| 午夜福利乱码中文字幕| 精品乱码久久久久久99久播| 欧美老熟妇乱子伦牲交| 啦啦啦 在线观看视频| 91av网站免费观看| 亚洲黑人精品在线| 色精品久久人妻99蜜桃| 一边摸一边抽搐一进一小说 | 亚洲一码二码三码区别大吗| 黑丝袜美女国产一区| 99国产精品一区二区蜜桃av | av福利片在线| 18禁黄网站禁片午夜丰满| 99热网站在线观看| 国产亚洲欧美精品永久| 久久国产精品人妻蜜桃| 国产免费视频播放在线视频| 日韩免费高清中文字幕av| 亚洲精品一卡2卡三卡4卡5卡| 久久久精品区二区三区| 嫩草影视91久久| 日韩视频在线欧美| 免费在线观看完整版高清| 岛国毛片在线播放| 亚洲精品中文字幕一二三四区 | 搡老熟女国产l中国老女人| 亚洲午夜理论影院| 国产精品国产高清国产av | 欧美 日韩 精品 国产| 国产亚洲精品第一综合不卡| 亚洲欧美色中文字幕在线| 少妇被粗大的猛进出69影院| 高清视频免费观看一区二区| 亚洲精品粉嫩美女一区| 国产av精品麻豆| 中亚洲国语对白在线视频| 99精品久久久久人妻精品| 婷婷丁香在线五月| 国产片内射在线| 最近最新中文字幕大全电影3 | a级片在线免费高清观看视频| 人妻一区二区av| 一个人免费在线观看的高清视频| 国产亚洲精品久久久久5区| 亚洲一区二区三区欧美精品| 最黄视频免费看| 久久久久久亚洲精品国产蜜桃av| 国产精品免费大片| 午夜免费鲁丝| 亚洲自偷自拍图片 自拍| 国产日韩欧美视频二区| 久久久久久久国产电影| 亚洲成人免费av在线播放| 少妇被粗大的猛进出69影院| 女性生殖器流出的白浆| 国产伦人伦偷精品视频| 国产精品偷伦视频观看了| 成人国语在线视频| 法律面前人人平等表现在哪些方面| 亚洲欧美日韩高清在线视频 | 久久国产精品大桥未久av| 狠狠狠狠99中文字幕| 欧美日韩成人在线一区二区| 国产区一区二久久| 国产一区二区 视频在线| 啦啦啦中文免费视频观看日本| 啦啦啦视频在线资源免费观看| 欧美日韩精品网址| 午夜精品国产一区二区电影| 午夜福利欧美成人| 亚洲精品粉嫩美女一区| 免费观看人在逋| 高清毛片免费观看视频网站 | 中文字幕av电影在线播放| www日本在线高清视频| 精品国产亚洲在线| 免费看a级黄色片| 久久中文看片网| 91成年电影在线观看| 国产精品 国内视频| 老司机午夜十八禁免费视频| 欧美大码av| 亚洲成人手机| 亚洲午夜精品一区,二区,三区| 韩国精品一区二区三区| 一区福利在线观看| 久久久国产精品麻豆| 夜夜爽天天搞| bbb黄色大片| av一本久久久久| 高清欧美精品videossex| 中文亚洲av片在线观看爽 | 在线观看一区二区三区激情| 日本精品一区二区三区蜜桃| 亚洲七黄色美女视频| 一进一出抽搐动态| 国产男女内射视频| 脱女人内裤的视频| 老熟妇乱子伦视频在线观看| 大型黄色视频在线免费观看| 亚洲视频免费观看视频| 亚洲人成77777在线视频| 亚洲一区二区三区欧美精品| 久久这里只有精品19| av天堂久久9| 久久久久网色| 纯流量卡能插随身wifi吗| av欧美777| 国产av精品麻豆| 亚洲一卡2卡3卡4卡5卡精品中文| 久久久精品94久久精品| 成人永久免费在线观看视频 | 中亚洲国语对白在线视频| 国产区一区二久久| 精品国产乱子伦一区二区三区| 国产精品久久久久久精品电影小说| 中文字幕制服av| 午夜福利一区二区在线看| 成人亚洲精品一区在线观看| 丝袜人妻中文字幕| 操美女的视频在线观看| 色尼玛亚洲综合影院| 啦啦啦中文免费视频观看日本| 激情在线观看视频在线高清 | 久久人人97超碰香蕉20202| 欧美黑人精品巨大| 天天添夜夜摸| 亚洲一卡2卡3卡4卡5卡精品中文| 正在播放国产对白刺激| 两性午夜刺激爽爽歪歪视频在线观看 | 热99re8久久精品国产| 看免费av毛片| 9热在线视频观看99| 国产在线一区二区三区精| 老汉色av国产亚洲站长工具| 久久久久久久久久久久大奶| 精品欧美一区二区三区在线| 天天躁日日躁夜夜躁夜夜| 久久久久久人人人人人| 另类亚洲欧美激情| 国产伦人伦偷精品视频| 日韩一卡2卡3卡4卡2021年| 最近最新中文字幕大全电影3 | 久久精品国产亚洲av高清一级| 亚洲人成伊人成综合网2020| 国产精品久久电影中文字幕 | 国产区一区二久久| 精品少妇内射三级| 日本黄色视频三级网站网址 | 1024香蕉在线观看| 男女免费视频国产| 精品一区二区三区四区五区乱码| 国产日韩一区二区三区精品不卡| 国产亚洲精品一区二区www | 蜜桃国产av成人99| 日韩精品免费视频一区二区三区| 丝袜美腿诱惑在线| av福利片在线| 久久人人爽av亚洲精品天堂| 下体分泌物呈黄色| tube8黄色片| 大陆偷拍与自拍| 亚洲人成电影免费在线| 中文字幕最新亚洲高清| a级毛片黄视频| 色在线成人网| 久久中文字幕人妻熟女| a在线观看视频网站| 桃花免费在线播放| 最新美女视频免费是黄的| 欧美激情久久久久久爽电影 | 免费黄频网站在线观看国产| 十八禁网站网址无遮挡| 免费人妻精品一区二区三区视频| 2018国产大陆天天弄谢| 欧美人与性动交α欧美软件| 乱人伦中国视频| 十八禁网站免费在线| 久久免费观看电影| 精品午夜福利视频在线观看一区 | 老司机靠b影院| 久久毛片免费看一区二区三区| 国产亚洲精品久久久久5区| 在线观看免费午夜福利视频| 亚洲成a人片在线一区二区| e午夜精品久久久久久久| 亚洲精品av麻豆狂野| 国产成人欧美| 99国产极品粉嫩在线观看| 日韩 欧美 亚洲 中文字幕| 十八禁网站网址无遮挡| 国产av精品麻豆| 操出白浆在线播放| 黄片播放在线免费| www日本在线高清视频| 亚洲 国产 在线| 亚洲精品美女久久av网站| 日韩大码丰满熟妇| 黑人猛操日本美女一级片| 国产精品99久久99久久久不卡| 丁香欧美五月| 国内毛片毛片毛片毛片毛片| 亚洲国产av新网站| av国产精品久久久久影院| 老司机靠b影院| 亚洲精品美女久久久久99蜜臀| 免费看十八禁软件| 国产成人啪精品午夜网站| 亚洲自偷自拍图片 自拍| 91成人精品电影| 久久国产精品大桥未久av| 亚洲人成伊人成综合网2020| 色播在线永久视频| 超碰97精品在线观看| 欧美黄色片欧美黄色片| 中国美女看黄片| 制服人妻中文乱码| 亚洲精品成人av观看孕妇| 男女无遮挡免费网站观看| 欧美精品一区二区大全| 亚洲欧洲日产国产| 97人妻天天添夜夜摸| 精品国产一区二区三区四区第35| 极品教师在线免费播放| 菩萨蛮人人尽说江南好唐韦庄| 99久久99久久久精品蜜桃| 黑人巨大精品欧美一区二区蜜桃| 十八禁网站网址无遮挡| 在线观看免费午夜福利视频| 亚洲 欧美一区二区三区| 中文字幕制服av| 91成年电影在线观看| 操美女的视频在线观看| 国产精品熟女久久久久浪| 天天影视国产精品| 纵有疾风起免费观看全集完整版| 色尼玛亚洲综合影院| 欧美成人午夜精品| kizo精华| 中文字幕人妻熟女乱码| 国产成人精品久久二区二区免费| 乱人伦中国视频| 国产伦人伦偷精品视频| 婷婷丁香在线五月| 热99国产精品久久久久久7| 亚洲欧美色中文字幕在线| 99国产精品一区二区蜜桃av | 桃红色精品国产亚洲av| 最近最新中文字幕大全电影3 | 精品福利永久在线观看| 国产成人欧美在线观看 | 五月天丁香电影| 午夜福利一区二区在线看| 中亚洲国语对白在线视频| 99久久精品国产亚洲精品| 成人永久免费在线观看视频 | 日本vs欧美在线观看视频| 无限看片的www在线观看| 国产在线观看jvid| 最近最新免费中文字幕在线| 最近最新中文字幕大全电影3 | 久久久久久久久久久久大奶| 亚洲欧洲日产国产| 麻豆成人av在线观看| 少妇被粗大的猛进出69影院| 嫁个100分男人电影在线观看| 久久人妻av系列| 三上悠亚av全集在线观看| 精品国产一区二区三区久久久樱花| 狂野欧美激情性xxxx| 成年人午夜在线观看视频| 在线永久观看黄色视频| 欧美乱妇无乱码| 亚洲av片天天在线观看| tube8黄色片| 日韩人妻精品一区2区三区| 最近最新中文字幕大全电影3 | 纵有疾风起免费观看全集完整版| 国产亚洲欧美精品永久| 日韩免费高清中文字幕av| 日韩 欧美 亚洲 中文字幕| 久久亚洲真实| av一本久久久久| 欧美 日韩 精品 国产| 国产一区二区三区在线臀色熟女 | 男女午夜视频在线观看| 99国产综合亚洲精品| 多毛熟女@视频| 黄网站色视频无遮挡免费观看| 成年人免费黄色播放视频| 最新在线观看一区二区三区| 变态另类成人亚洲欧美熟女 | 日本黄色日本黄色录像| 久久精品成人免费网站| 大码成人一级视频| 蜜桃国产av成人99| 国产有黄有色有爽视频| 无遮挡黄片免费观看| 视频区欧美日本亚洲| 女人精品久久久久毛片| 欧美人与性动交α欧美软件| 日韩欧美一区视频在线观看| 亚洲天堂av无毛| 在线观看舔阴道视频| 啦啦啦免费观看视频1| 超色免费av| 日日摸夜夜添夜夜添小说| 天天影视国产精品| 18在线观看网站| 搡老熟女国产l中国老女人| 一区福利在线观看| 欧美精品一区二区免费开放| 亚洲专区字幕在线| 少妇被粗大的猛进出69影院| 成人黄色视频免费在线看| 美国免费a级毛片| 国产免费av片在线观看野外av| 人人妻人人澡人人看| 久久久久网色| 亚洲av美国av| 日本撒尿小便嘘嘘汇集6| 曰老女人黄片| 国产欧美亚洲国产| 精品欧美一区二区三区在线| 亚洲精品在线美女| 国产一区二区三区在线臀色熟女 | 久久久精品免费免费高清| 如日韩欧美国产精品一区二区三区| 一区二区三区乱码不卡18| 国产主播在线观看一区二区| 99久久国产精品久久久| 手机成人av网站| 欧美激情极品国产一区二区三区| 精品久久蜜臀av无| 蜜桃国产av成人99| 91av网站免费观看| 国产aⅴ精品一区二区三区波| 久久人人97超碰香蕉20202| cao死你这个sao货| 啦啦啦中文免费视频观看日本| 国产成人系列免费观看| 欧美精品一区二区免费开放| 欧美日韩国产mv在线观看视频| 国产精品国产av在线观看| 极品人妻少妇av视频| 老司机在亚洲福利影院| 十八禁网站免费在线| 欧美另类亚洲清纯唯美| 飞空精品影院首页| 国产成人精品无人区| 黄色毛片三级朝国网站| av欧美777| 操美女的视频在线观看| 日韩中文字幕欧美一区二区| 亚洲性夜色夜夜综合| 淫妇啪啪啪对白视频| 丁香欧美五月| 午夜精品久久久久久毛片777| 757午夜福利合集在线观看| 亚洲精品一二三| 亚洲成a人片在线一区二区| 国产亚洲一区二区精品| 中文字幕人妻丝袜制服| 黄色丝袜av网址大全| 国产精品影院久久| 桃红色精品国产亚洲av| av不卡在线播放| 天堂动漫精品| 熟女少妇亚洲综合色aaa.| 999精品在线视频| 国产成人精品久久二区二区91| 啦啦啦视频在线资源免费观看| 少妇被粗大的猛进出69影院| aaaaa片日本免费| 久久婷婷成人综合色麻豆| 亚洲一码二码三码区别大吗| 亚洲中文日韩欧美视频| a级片在线免费高清观看视频| 久久久久国产一级毛片高清牌| 999久久久精品免费观看国产| 亚洲一码二码三码区别大吗| 女性被躁到高潮视频| 一级a爱视频在线免费观看| 香蕉丝袜av| 日日夜夜操网爽| av视频免费观看在线观看| 一本—道久久a久久精品蜜桃钙片| 亚洲国产成人一精品久久久| 久久精品91无色码中文字幕| 免费在线观看视频国产中文字幕亚洲| 大香蕉久久网| 正在播放国产对白刺激| 在线观看一区二区三区激情| 亚洲一卡2卡3卡4卡5卡精品中文| 变态另类成人亚洲欧美熟女 | 国产av又大| av免费在线观看网站| 亚洲中文av在线| 人人澡人人妻人| 精品一区二区三卡| bbb黄色大片| 精品国产亚洲在线| av网站免费在线观看视频| 黑人操中国人逼视频| 岛国毛片在线播放| 黄片播放在线免费| 国产亚洲精品第一综合不卡| 香蕉国产在线看| 国产精品久久久久久精品电影小说| 免费高清在线观看日韩| 50天的宝宝边吃奶边哭怎么回事| 99re在线观看精品视频| 日本wwww免费看| 欧美日韩黄片免| 欧美亚洲 丝袜 人妻 在线| www日本在线高清视频| 久久中文字幕人妻熟女| 国精品久久久久久国模美| 人妻一区二区av| 黄色丝袜av网址大全| 99re在线观看精品视频| 最新在线观看一区二区三区| 亚洲 国产 在线| 99精品久久久久人妻精品| 午夜两性在线视频| 久久久久久久久久久久大奶| 亚洲专区字幕在线| 国产亚洲欧美在线一区二区| 精品少妇久久久久久888优播| 亚洲成人国产一区在线观看| 国产单亲对白刺激| 一二三四在线观看免费中文在| 国产有黄有色有爽视频| 美国免费a级毛片| 俄罗斯特黄特色一大片| 一区二区三区国产精品乱码| 麻豆乱淫一区二区| 91av网站免费观看| 精品久久久精品久久久| 亚洲性夜色夜夜综合| 国产成人精品久久二区二区免费| 欧美激情极品国产一区二区三区| 夫妻午夜视频| 国产一区有黄有色的免费视频| 日本撒尿小便嘘嘘汇集6| 男女午夜视频在线观看| 极品人妻少妇av视频| 纯流量卡能插随身wifi吗| 人人妻人人澡人人看| 日韩欧美国产一区二区入口| 黄色片一级片一级黄色片| 18禁观看日本| 视频区图区小说| 12—13女人毛片做爰片一| 黄片大片在线免费观看| 一边摸一边做爽爽视频免费| 一级,二级,三级黄色视频| 黄色视频在线播放观看不卡| 最近最新中文字幕大全免费视频| 国产亚洲精品一区二区www | kizo精华| 国产单亲对白刺激| 成人特级黄色片久久久久久久 | 中文字幕人妻丝袜一区二区| 亚洲av国产av综合av卡| 法律面前人人平等表现在哪些方面| 国产精品久久久久成人av| 国产深夜福利视频在线观看| 99国产综合亚洲精品| 国产成人av激情在线播放| 国产免费av片在线观看野外av| svipshipincom国产片| 精品视频人人做人人爽| 国产精品久久电影中文字幕 | 国产精品久久久久久精品古装| 两性夫妻黄色片| 久久婷婷成人综合色麻豆| 中文字幕人妻熟女乱码| 久久久久久久国产电影| 三级毛片av免费| 韩国精品一区二区三区| 精品一区二区三区四区五区乱码| 亚洲av成人不卡在线观看播放网| 在线观看免费午夜福利视频| 男人舔女人的私密视频| 欧美日韩福利视频一区二区| 老熟妇仑乱视频hdxx| 无人区码免费观看不卡 | 免费在线观看黄色视频的| 亚洲 国产 在线| 十分钟在线观看高清视频www| 国产日韩欧美在线精品| 午夜久久久在线观看| 一进一出好大好爽视频| 久久热在线av| 亚洲精品美女久久av网站| 国产成人免费无遮挡视频| 久久精品人人爽人人爽视色| 精品国产国语对白av| 久久中文字幕人妻熟女| 99国产精品一区二区三区| 大型av网站在线播放| 亚洲精品一卡2卡三卡4卡5卡| 亚洲精品自拍成人| 热re99久久精品国产66热6| 在线观看免费日韩欧美大片| 久久婷婷成人综合色麻豆| 人人妻人人澡人人看| 国产亚洲精品第一综合不卡| 亚洲综合色网址| 国产精品国产av在线观看| 人人妻人人添人人爽欧美一区卜| 国产在线免费精品| 亚洲国产欧美网| 亚洲av第一区精品v没综合| 亚洲午夜精品一区,二区,三区| 1024视频免费在线观看| 日本黄色视频三级网站网址 | 黄色片一级片一级黄色片| 91成人精品电影| 老司机福利观看| 欧美午夜高清在线| 亚洲 欧美一区二区三区| 国产精品一区二区在线观看99| 搡老熟女国产l中国老女人| 男女下面插进去视频免费观看| 久热爱精品视频在线9| 久久午夜亚洲精品久久| 黑人巨大精品欧美一区二区蜜桃| 两人在一起打扑克的视频| 精品一区二区三卡| 国产精品一区二区在线不卡| 99在线人妻在线中文字幕 | 国产成+人综合+亚洲专区| cao死你这个sao货| 激情视频va一区二区三区| bbb黄色大片| 国产又爽黄色视频| 欧美精品av麻豆av| 亚洲熟妇熟女久久| 女人爽到高潮嗷嗷叫在线视频| 久久久久久久精品吃奶| 丰满饥渴人妻一区二区三| 操出白浆在线播放| 午夜福利视频在线观看免费| www.精华液|