伊人久久大香线蕉综合影视_日韩精品少妇无码受不了_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://m.cqzjtgb.com

存檔

12—13女人毛片做爰片一| 老司机午夜福利在线观看视频 | 天天影视国产精品| 国产精品亚洲一级av第二区| 国产精品久久久久成人av| 久久青草综合色| 精品国内亚洲2022精品成人 | 自拍欧美九色日韩亚洲蝌蚪91| 大码成人一级视频| 一级片'在线观看视频| 一级片'在线观看视频| 亚洲avbb在线观看| 国产精品一区二区免费欧美| 亚洲欧美激情在线| 天堂动漫精品| 如日韩欧美国产精品一区二区三区| 国产人伦9x9x在线观看| 国产日韩欧美视频二区| 亚洲久久久国产精品| 久久中文字幕一级| 久久久国产成人免费| 欧美大码av| 黄色成人免费大全| 在线永久观看黄色视频| 亚洲av国产av综合av卡| 人妻久久中文字幕网| 在线观看舔阴道视频| 男人舔女人的私密视频| 亚洲成av片中文字幕在线观看| 日韩大码丰满熟妇| 国产高清国产精品国产三级| 国产日韩欧美视频二区| 国产精品国产av在线观看| 亚洲黑人精品在线| 欧美日韩亚洲国产一区二区在线观看 | 夫妻午夜视频| 777久久人妻少妇嫩草av网站| 国产日韩欧美在线精品| 久久精品国产亚洲av高清一级| 国产精品亚洲av一区麻豆| 久久精品国产综合久久久| 嫩草影视91久久| 亚洲精品国产精品久久久不卡| 亚洲熟女精品中文字幕| 黄片播放在线免费| 丰满饥渴人妻一区二区三| 1024香蕉在线观看| 两性夫妻黄色片| 黄片播放在线免费| 亚洲国产欧美日韩在线播放| 老汉色av国产亚洲站长工具| 国内毛片毛片毛片毛片毛片| 久久av网站| 国产精品久久久人人做人人爽| 亚洲,欧美精品.| 80岁老熟妇乱子伦牲交| 天天影视国产精品| 亚洲欧美色中文字幕在线| 国产精品香港三级国产av潘金莲| 成人国产一区最新在线观看| 国产高清视频在线播放一区| 日韩制服丝袜自拍偷拍| 十八禁高潮呻吟视频| 国产日韩欧美亚洲二区| 天天影视国产精品| 久久毛片免费看一区二区三区| 欧美黑人欧美精品刺激| 俄罗斯特黄特色一大片| 亚洲人成电影免费在线| 亚洲 欧美一区二区三区| 亚洲全国av大片| 大香蕉久久网| 日韩一卡2卡3卡4卡2021年| 在线观看舔阴道视频| 色在线成人网| 欧美精品一区二区大全| 91老司机精品| 亚洲全国av大片| 亚洲av电影在线进入| 桃花免费在线播放| 97人妻天天添夜夜摸| 久久亚洲精品不卡| 久久九九热精品免费| 高潮久久久久久久久久久不卡| 免费在线观看影片大全网站| 久久中文字幕人妻熟女| 国产精品亚洲av一区麻豆| 免费日韩欧美在线观看| 宅男免费午夜| 69精品国产乱码久久久| 国产亚洲精品一区二区www | 91av网站免费观看| 色尼玛亚洲综合影院| 在线观看免费视频日本深夜| 日本黄色日本黄色录像| 精品国产一区二区久久| 下体分泌物呈黄色| 一本一本久久a久久精品综合妖精| 中文欧美无线码| 免费在线观看日本一区| 十八禁高潮呻吟视频| 亚洲av第一区精品v没综合| 人妻久久中文字幕网| e午夜精品久久久久久久| kizo精华| 亚洲精品美女久久av网站| 国内毛片毛片毛片毛片毛片| 男女边摸边吃奶| 国产熟女午夜一区二区三区| 两人在一起打扑克的视频| 亚洲avbb在线观看| 日本av手机在线免费观看| 久久国产亚洲av麻豆专区| 国产精品一区二区精品视频观看| 动漫黄色视频在线观看| 国产野战对白在线观看| 日本黄色日本黄色录像| 日本vs欧美在线观看视频| 在线十欧美十亚洲十日本专区| 亚洲精品久久成人aⅴ小说| 又大又爽又粗| 91精品国产国语对白视频| videos熟女内射| 男女下面插进去视频免费观看| 伦理电影免费视频| 成人国产一区最新在线观看| 亚洲精品中文字幕一二三四区 | 美女高潮喷水抽搐中文字幕| 亚洲人成电影免费在线| 在线 av 中文字幕| 中文字幕另类日韩欧美亚洲嫩草| 国产高清国产精品国产三级| 成人国产一区最新在线观看| 色精品久久人妻99蜜桃| 高潮久久久久久久久久久不卡| 日韩欧美国产一区二区入口| av超薄肉色丝袜交足视频| 久久影院123| 亚洲全国av大片| 黄频高清免费视频| 国产高清国产精品国产三级| 亚洲伊人色综图| 少妇裸体淫交视频免费看高清 | 又大又爽又粗| 色播在线永久视频| 日韩 欧美 亚洲 中文字幕| 丝袜人妻中文字幕| 脱女人内裤的视频| 天天影视国产精品| 69精品国产乱码久久久| 女性被躁到高潮视频| 两个人免费观看高清视频| 欧美乱妇无乱码| 免费一级毛片在线播放高清视频 | av天堂久久9| 狠狠精品人妻久久久久久综合| 一个人免费在线观看的高清视频| 欧美人与性动交α欧美精品济南到| 人人妻人人澡人人看| 婷婷丁香在线五月| 国产一区二区 视频在线| 亚洲专区字幕在线| 欧美成人午夜精品| 日韩成人在线观看一区二区三区| 国产精品.久久久| 自拍欧美九色日韩亚洲蝌蚪91| 一区二区三区激情视频| 国产精品九九99| 18禁裸乳无遮挡动漫免费视频| 精品福利观看| 国产精品二区激情视频| 人妻久久中文字幕网| 在线观看www视频免费| 精品久久久久久久毛片微露脸| 亚洲精品国产一区二区精华液| 久久久精品区二区三区| 男女下面插进去视频免费观看| 黄片播放在线免费| av在线播放免费不卡| 香蕉国产在线看| 久久精品国产综合久久久| 久久久精品免费免费高清| 一区在线观看完整版| 久久精品亚洲精品国产色婷小说| www.999成人在线观看| 久久久久久亚洲精品国产蜜桃av| 日本黄色视频三级网站网址 | 国产精品秋霞免费鲁丝片| 老司机在亚洲福利影院| 人人妻人人澡人人爽人人夜夜| 2018国产大陆天天弄谢| 老汉色∧v一级毛片| 欧美激情高清一区二区三区| 亚洲欧美日韩高清在线视频 | 91大片在线观看| 99国产极品粉嫩在线观看| 欧美精品人与动牲交sv欧美| 亚洲中文日韩欧美视频| 日韩欧美三级三区| www.精华液| 大型黄色视频在线免费观看| 欧美精品人与动牲交sv欧美| 国产免费视频播放在线视频| 1024香蕉在线观看| 久久久久视频综合| 少妇粗大呻吟视频| 18在线观看网站| 色综合婷婷激情| 在线永久观看黄色视频| 亚洲第一欧美日韩一区二区三区 | av超薄肉色丝袜交足视频| 真人做人爱边吃奶动态| 80岁老熟妇乱子伦牲交| 18禁裸乳无遮挡动漫免费视频| 久久久精品区二区三区| 交换朋友夫妻互换小说| 天天躁日日躁夜夜躁夜夜| 一进一出好大好爽视频| 少妇的丰满在线观看| 欧美亚洲日本最大视频资源| 高清黄色对白视频在线免费看| 亚洲精品久久午夜乱码| av在线播放免费不卡| 国产欧美日韩综合在线一区二区| 国产精品电影一区二区三区 | 欧美激情高清一区二区三区| 丝袜人妻中文字幕| 亚洲精品国产一区二区精华液| 国产精品熟女久久久久浪| av线在线观看网站| 黑丝袜美女国产一区| 国产单亲对白刺激| 在线十欧美十亚洲十日本专区| 18禁观看日本| 宅男免费午夜| 国产精品成人在线| 亚洲精品久久午夜乱码| 亚洲av成人不卡在线观看播放网| 黄网站色视频无遮挡免费观看| 成年版毛片免费区| 美女午夜性视频免费| 超色免费av| 制服人妻中文乱码| 飞空精品影院首页| 午夜福利免费观看在线| 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲国产欧美网| 飞空精品影院首页| 亚洲精品美女久久av网站| 99久久国产精品久久久| 免费在线观看视频国产中文字幕亚洲| 国产一卡二卡三卡精品| 国产精品秋霞免费鲁丝片| a级毛片黄视频| 在线天堂中文资源库| 一本色道久久久久久精品综合| 国产精品亚洲一级av第二区| 国产精品一区二区在线观看99| 欧美黄色淫秽网站| 超碰成人久久| 高清视频免费观看一区二区| 国产一区二区在线观看av| 老司机深夜福利视频在线观看| 亚洲视频免费观看视频| 欧美乱妇无乱码| 成人精品一区二区免费| 黄色片一级片一级黄色片| 午夜福利影视在线免费观看| 国产av一区二区精品久久| 一区在线观看完整版| 99九九在线精品视频| 国产高清激情床上av| 国产av又大| 色综合婷婷激情| 美女午夜性视频免费| 超色免费av| 脱女人内裤的视频| 亚洲美女黄片视频| 亚洲黑人精品在线| 国产精品久久电影中文字幕 | 精品少妇久久久久久888优播| 十八禁高潮呻吟视频| 亚洲av国产av综合av卡| 丁香六月欧美| 精品人妻1区二区| cao死你这个sao货| 亚洲人成伊人成综合网2020| 精品卡一卡二卡四卡免费| 国产野战对白在线观看| 日韩视频一区二区在线观看| 久久这里只有精品19| 欧美 亚洲 国产 日韩一| 国产真人三级小视频在线观看| 满18在线观看网站| 久久国产精品人妻蜜桃| www.自偷自拍.com| 久久99一区二区三区| 国产精品欧美亚洲77777| 超碰97精品在线观看| 精品久久久久久久毛片微露脸| 人妻久久中文字幕网| 热re99久久精品国产66热6| 精品乱码久久久久久99久播| 成人手机av| 真人做人爱边吃奶动态| 三上悠亚av全集在线观看| 成在线人永久免费视频| av又黄又爽大尺度在线免费看| 999精品在线视频| 在线看a的网站| av国产精品久久久久影院| 新久久久久国产一级毛片| 91av网站免费观看| 国产单亲对白刺激| 女人爽到高潮嗷嗷叫在线视频| 免费看a级黄色片| 国产男女超爽视频在线观看| 91麻豆av在线| 久久国产精品影院| 天堂动漫精品| 人人妻人人澡人人看| 国产1区2区3区精品| 波多野结衣av一区二区av| 高清毛片免费观看视频网站 | 少妇 在线观看| 少妇被粗大的猛进出69影院| 亚洲av欧美aⅴ国产| 午夜成年电影在线免费观看| 国产精品国产高清国产av | 国产日韩欧美亚洲二区| 国产男女超爽视频在线观看| 国产麻豆69| 99久久99久久久精品蜜桃| 成人特级黄色片久久久久久久 | 国内毛片毛片毛片毛片毛片| 精品熟女少妇八av免费久了| svipshipincom国产片| av不卡在线播放| 亚洲精品在线观看二区| 国产午夜精品久久久久久| bbb黄色大片| 丝袜美足系列| 日韩 欧美 亚洲 中文字幕| 欧美成狂野欧美在线观看| 精品久久久精品久久久| 精品亚洲成国产av| 啪啪无遮挡十八禁网站| 国产精品久久电影中文字幕 | 色综合欧美亚洲国产小说| 黄色成人免费大全| 天堂动漫精品| 午夜老司机福利片| 757午夜福利合集在线观看| 欧美黄色片欧美黄色片| 亚洲成a人片在线一区二区| 在线 av 中文字幕| 国产不卡一卡二| 久久亚洲真实| 制服人妻中文乱码| 999精品在线视频| 国产免费现黄频在线看| 精品久久久久久电影网| 亚洲专区字幕在线| 丝袜喷水一区| 国产成人精品无人区| 色综合欧美亚洲国产小说| 亚洲一区中文字幕在线| 涩涩av久久男人的天堂| 在线看a的网站| 日本vs欧美在线观看视频| 50天的宝宝边吃奶边哭怎么回事| 国产成人欧美| 午夜福利免费观看在线| 视频区图区小说| netflix在线观看网站| 午夜免费成人在线视频| 国产亚洲精品久久久久5区| 免费久久久久久久精品成人欧美视频| www日本在线高清视频| 免费黄频网站在线观看国产| 人成视频在线观看免费观看| 欧美久久黑人一区二区| 免费在线观看影片大全网站| 一个人免费在线观看的高清视频| 久久久久视频综合| 久久精品亚洲熟妇少妇任你| 色在线成人网| 亚洲精品中文字幕一二三四区 | 欧美亚洲日本最大视频资源| 99re6热这里在线精品视频| 欧美日韩视频精品一区| 脱女人内裤的视频| 999久久久国产精品视频| 90打野战视频偷拍视频| 免费不卡黄色视频| 久久精品国产综合久久久| 国产日韩欧美亚洲二区| 18禁美女被吸乳视频| 国产精品久久久久成人av| 十八禁高潮呻吟视频| 精品国产一区二区三区久久久樱花| 女人精品久久久久毛片| av不卡在线播放| 日韩 欧美 亚洲 中文字幕| 母亲3免费完整高清在线观看| 男女高潮啪啪啪动态图| 激情在线观看视频在线高清 | 老熟女久久久| 久久人妻福利社区极品人妻图片| 91麻豆av在线| 亚洲精品成人av观看孕妇| 在线永久观看黄色视频| 麻豆av在线久日| 亚洲情色 制服丝袜| 午夜免费成人在线视频| 最近最新免费中文字幕在线| 亚洲精品av麻豆狂野| 国产野战对白在线观看| 久久久久国内视频| 热re99久久国产66热| 精品人妻在线不人妻| 日韩一卡2卡3卡4卡2021年| 欧美精品啪啪一区二区三区| 久久亚洲精品不卡| 青草久久国产| 国产1区2区3区精品| 精品国产一区二区三区四区第35| 亚洲七黄色美女视频| 久久这里只有精品19| 亚洲专区字幕在线| 精品少妇一区二区三区视频日本电影| 一区二区日韩欧美中文字幕| 成人黄色视频免费在线看| 精品国产国语对白av| 精品视频人人做人人爽| 午夜精品久久久久久毛片777| 国产成人精品久久二区二区免费| 亚洲精品国产区一区二| 国产三级黄色录像| 午夜久久久在线观看| 黄色 视频免费看| 亚洲一码二码三码区别大吗| 两个人看的免费小视频| 欧美亚洲日本最大视频资源| 国产在线免费精品| 两人在一起打扑克的视频| 在线十欧美十亚洲十日本专区| 亚洲成人国产一区在线观看| 国产成人欧美在线观看 | 日韩免费高清中文字幕av| 午夜福利欧美成人| 欧美日韩福利视频一区二区| 女人爽到高潮嗷嗷叫在线视频| 久久久国产一区二区| 国产1区2区3区精品| 啦啦啦免费观看视频1| 国产成人影院久久av| 丁香六月欧美| 欧美在线黄色| 久久午夜亚洲精品久久| 91九色精品人成在线观看| 午夜福利乱码中文字幕| 久久久国产成人免费| 欧美 亚洲 国产 日韩一| 亚洲,欧美精品.| 国产成人免费观看mmmm| 侵犯人妻中文字幕一二三四区| 女性生殖器流出的白浆| 熟女少妇亚洲综合色aaa.| 悠悠久久av| 在线看a的网站| 看免费av毛片| 国产精品麻豆人妻色哟哟久久| 桃红色精品国产亚洲av| 99九九在线精品视频| 久久久久精品人妻al黑| svipshipincom国产片| 男人舔女人的私密视频| 麻豆av在线久日| 免费日韩欧美在线观看| 久久久水蜜桃国产精品网| 国产亚洲午夜精品一区二区久久| 亚洲av成人不卡在线观看播放网| 99riav亚洲国产免费| 国产精品熟女久久久久浪| 国产三级黄色录像| 国产在线精品亚洲第一网站| h视频一区二区三区| 桃花免费在线播放| 亚洲专区中文字幕在线| 久久免费观看电影| 香蕉久久夜色| 日韩熟女老妇一区二区性免费视频| 欧美国产精品一级二级三级| 免费黄频网站在线观看国产| 美女主播在线视频| 久久国产精品影院| 亚洲av第一区精品v没综合| 丁香六月欧美| 高清视频免费观看一区二区| 高清av免费在线| www.自偷自拍.com| 丝袜人妻中文字幕| 亚洲va日本ⅴa欧美va伊人久久| 啦啦啦 在线观看视频| 青青草视频在线视频观看| 精品一品国产午夜福利视频| 日本一区二区免费在线视频| av免费在线观看网站| 性色av乱码一区二区三区2| 午夜日韩欧美国产| 深夜精品福利| 午夜成年电影在线免费观看| 欧美av亚洲av综合av国产av| 免费在线观看黄色视频的| 成人特级黄色片久久久久久久 | 国产黄频视频在线观看| 亚洲va日本ⅴa欧美va伊人久久| 国产亚洲欧美在线一区二区| 久久人人爽av亚洲精品天堂| 久久国产精品男人的天堂亚洲| 精品国产一区二区久久| 国产成人欧美| 嫁个100分男人电影在线观看| 午夜激情av网站| 99国产综合亚洲精品| 日本av手机在线免费观看| 欧美黑人精品巨大| 18禁裸乳无遮挡动漫免费视频| 久久久久久免费高清国产稀缺| 欧美在线一区亚洲| 女人爽到高潮嗷嗷叫在线视频| 日韩三级视频一区二区三区| 黑人猛操日本美女一级片| 色在线成人网| 视频区图区小说| 天堂俺去俺来也www色官网| 国产成人精品无人区| 露出奶头的视频| 亚洲情色 制服丝袜| 精品人妻在线不人妻| 久久精品国产99精品国产亚洲性色 | 精品国产一区二区三区久久久樱花| 高潮久久久久久久久久久不卡| 欧美变态另类bdsm刘玥| 大码成人一级视频| 新久久久久国产一级毛片| 国产极品粉嫩免费观看在线| 激情视频va一区二区三区| 久久免费观看电影| 在线十欧美十亚洲十日本专区| 国产av精品麻豆| 亚洲精品av麻豆狂野| 一本一本久久a久久精品综合妖精| 午夜成年电影在线免费观看| 在线观看一区二区三区激情| 人人妻人人澡人人看| 每晚都被弄得嗷嗷叫到高潮| 嫁个100分男人电影在线观看| 欧美日韩av久久| 最近最新中文字幕大全免费视频| 女人爽到高潮嗷嗷叫在线视频| 国产精品av久久久久免费| 欧美乱码精品一区二区三区| 午夜福利免费观看在线| 啦啦啦在线免费观看视频4| 亚洲熟妇熟女久久| 99精品在免费线老司机午夜| 精品人妻熟女毛片av久久网站| 黄片播放在线免费| 99国产精品免费福利视频| 我的亚洲天堂| 美女高潮喷水抽搐中文字幕| 两个人看的免费小视频| 日韩欧美三级三区| 久久久久久久久免费视频了| 欧美黑人欧美精品刺激| 国产99久久九九免费精品| 久久精品人人爽人人爽视色| xxxhd国产人妻xxx| kizo精华| 国产精品一区二区免费欧美| 国产精品二区激情视频| 高潮久久久久久久久久久不卡| 亚洲精品美女久久久久99蜜臀| 久久99热这里只频精品6学生| 日本黄色日本黄色录像| 国产av国产精品国产| av有码第一页| 亚洲精品av麻豆狂野| 国产欧美亚洲国产| 免费一级毛片在线播放高清视频 | 91麻豆精品激情在线观看国产 | a级片在线免费高清观看视频| 久久久精品94久久精品| 亚洲视频免费观看视频| 精品少妇久久久久久888优播| 免费在线观看完整版高清| 99精品在免费线老司机午夜| 国产在线视频一区二区| 亚洲色图综合在线观看| 成人亚洲精品一区在线观看| 丝袜美足系列| 少妇裸体淫交视频免费看高清 | av网站在线播放免费| 欧美精品高潮呻吟av久久| 成人三级做爰电影| 亚洲精品久久成人aⅴ小说| 国产精品欧美亚洲77777| 国产一卡二卡三卡精品| 淫妇啪啪啪对白视频| 99在线人妻在线中文字幕 | 欧美大码av| 天堂动漫精品| 午夜福利视频精品|