久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

Mybatis中Mapper映射文件使用詳解

瀏覽:190日期:2023-10-23 18:02:24

緊接上文所述,在這篇文章中我將對Mapper映射文件進行詳細的說明。

Mapper映射文件是一個xml格式文件,必須遵循相應的dtd文件規范,如ibatis-3-mapper.dtd。我們先大體上看看支持哪些配置?如下所示,從Eclipse里截了個屏:

Mybatis中Mapper映射文件使用詳解

從上圖可以看出,映射文件是以<mapper>作為根節點,在根節點中支持9個元素,分別為insert、update、delete、select(增刪改查);cache、cache-ref、resultMap、parameterMap、sql。

下文中,我們將首先對增刪改進行描述,然后對查進行詳細說明,最后對其他五個元素進行簡單說明。

(1)insert、update、delete

我們先從配置文件看起:

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE mapper PUBLIC '-//ibatis.apache.org//DTD Mapper 3.0//EN' 'http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd'> <!-- mapper 為根元素節點, 一個namespace對應一個dao --><mapper namespace='com.dy.dao.UserDao'> <insert <!-- 1. id (必須配置) id是命名空間中的唯一標識符,可被用來代表這條語句。 一個命名空間(namespace) 對應一個dao接口, 這個id也應該對應dao里面的某個方法(相當于方法的實現),因此id 應該與方法名一致 --> <!-- 2. parameterType (可選配置, 默認為mybatis自動選擇處理) 將要傳入語句的參數的完全限定類名或別名, 如果不配置,mybatis會通過ParameterHandler 根據參數類型默認選擇合適的typeHandler進行處理 parameterType 主要指定參數類型,可以是int, short, long, string等類型,也可以是復雜類型(如對象) --> parameterType='user' <!-- 3. flushCache (可選配置,默認配置為true) 將其設置為 true,任何時候只要語句被調用,都會導致本地緩存和二級緩存都會被清空,默認值:true(對應插入、更新和刪除語句) --> flushCache='true' <!-- 4. statementType (可選配置,默認配置為PREPARED) STATEMENT,PREPARED 或 CALLABLE 的一個。這會讓 MyBatis 分別使用 Statement,PreparedStatement 或 CallableStatement,默認值:PREPARED。 --> statementType='PREPARED' <!-- 5. keyProperty (可選配置, 默認為unset) (僅對 insert 和 update 有用)唯一標記一個屬性,MyBatis 會通過 getGeneratedKeys 的返回值或者通過 insert 語句的 selectKey 子元素設置它的鍵值,默認:unset。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。 --> keyProperty='' <!-- 6. keyColumn (可選配置) (僅對 insert 和 update 有用)通過生成的鍵值設置表中的列名,這個設置僅在某些數據庫(像 PostgreSQL)是必須的,當主鍵列不是表中的第一列的時候需要設置。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。 --> keyColumn='' <!-- 7. useGeneratedKeys (可選配置, 默認為false) (僅對 insert 和 update 有用)這會令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法來取出由數據庫內部生成的主鍵(比如:像 MySQL 和 SQL Server 這樣的關系數據庫管理系統的自動遞增字段),默認值:false。 --> useGeneratedKeys='false' <!-- 8. timeout (可選配置, 默認為unset, 依賴驅動) 這個設置是在拋出異常之前,驅動程序等待數據庫返回請求結果的秒數。默認值為 unset(依賴驅動)。 --> timeout='20'> <update parameterType='user' flushCache='true' statementType='PREPARED' timeout='20'> <delete parameterType='user' flushCache='true' statementType='PREPARED' timeout='20'></mapper>

上面給出了一個比較全面的配置說明,但是在實際使用過程中并不需要都進行配置,可根據自己的需要刪除部分配置項。

在這里,我列舉出我自己的配置文件,精簡之后是這樣的:

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE mapper PUBLIC '-//ibatis.apache.org//DTD Mapper 3.0//EN' 'http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd'><mapper namespace='com.majing.learning.mybatis.dao.UserDao'><insert parameterType='user' useGeneratedKeys='true' keyProperty='id'>insert into user(name,password,age) values(#{name},#{password},#{age})</insert><delete parameterType='int'>delete from user where id = #{id}</delete><update parameterType='user' >update user set name = #{name}, password = #{password}, age = #{age} where id = #{id}</update> </mapper>

這里的parameterType設置成user是因為如果不設置的情況下,會自動將類名首字母小寫后的名稱,原來的類名為User。不過,建議大家還是使用typeAlias進行配置吧。唯一需要說明的就是<insert>元素里面的useGeneratedKeys和keyProperties屬性,這兩個屬性是用來獲取數據庫中的主鍵的。

在數據庫里面經常性的會給數據庫表設置一個自增長的列作為主鍵,如果我們操作數據庫后希望能夠獲取這個主鍵該怎么弄呢?正如上面所述,如果是支持自增長的數據庫,如mysql數據庫,那么只需要設置useGeneratedKeys和keyProperties屬性便可以了,但是對于不支持自增長的數據庫(如oracle)該怎么辦呢?

mybatis里面在<insert>元素下面提供了<selectKey>子元素用于幫助解決這個問題。來看下配置:

<selectKey <!-- selectKey 語句結果應該被設置的目標屬性。如果希望得到多個生成的列,也可以是逗號分隔的屬性名稱列表。 --> keyProperty='id' <!-- 結果的類型。MyBatis 通常可以推算出來,但是為了更加確定寫上也不會有什么問題。MyBatis 允許任何簡單類型用作主鍵的類型,包括字符串。如果希望作用于多個生成的列,則可以使用一個包含期望屬性的 Object 或一個 Map。 --> resultType='int' <!-- 這可以被設置為 BEFORE 或 AFTER。如果設置為 BEFORE,那么它會首先選擇主鍵,設置 keyProperty 然后執行插入語句。如果設置為 AFTER,那么先執行插入語句,然后是 selectKey 元素 - 這和像 Oracle 的數據庫相似,在插入語句內部可能有嵌入索引調用。 --> order='BEFORE' <!-- 與前面相同,MyBatis 支持 STATEMENT,PREPARED 和 CALLABLE 語句的映射類型,分別代表 PreparedStatement 和 CallableStatement 類型。 --> statementType='PREPARED'></selectKey>

針對不能使用自增長特性的數據庫,可以使用下面的配置來實現相同的功能:

<insert parameterType='com.dy.entity.User'> <!-- oracle等不支持id自增長的,可根據其id生成策略,先獲取id --> <selectKey resultType='int' order='BEFORE' keyProperty='id'> select seq_user_id.nextval as id from dual </selectKey> insert into user(id, name, password, age, deleteFlag) values(#{id}, #{name}, #{password}, #{age}, #{deleteFlag}) </insert>

講完了insert、update、delete,接下來我們看看用的比較多的select。

(2)select、resultType、resultMap

我們先來看看select元素都有哪些配置可以設置:

<select <!-- 1. id (必須配置) id是命名空間中的唯一標識符,可被用來代表這條語句。 一個命名空間(namespace) 對應一個dao接口, 這個id也應該對應dao里面的某個方法(相當于方法的實現),因此id 應該與方法名一致 --> <!-- 2. parameterType (可選配置, 默認為mybatis自動選擇處理) 將要傳入語句的參數的完全限定類名或別名, 如果不配置,mybatis會通過ParameterHandler 根據參數類型默認選擇合適的typeHandler進行處理 parameterType 主要指定參數類型,可以是int, short, long, string等類型,也可以是復雜類型(如對象) --> parameterType='int' <!-- 3. resultType (resultType 與 resultMap 二選一配置) resultType用以指定返回類型,指定的類型可以是基本類型,可以是java容器,也可以是javabean --> resultType='User' <!-- 4. resultMap (resultType 與 resultMap 二選一配置) resultMap用于引用我們通過 resultMap標簽定義的映射類型,這也是mybatis組件高級復雜映射的關鍵 --> resultMap='userResultMap' <!-- 5. flushCache (可選配置) 將其設置為 true,任何時候只要語句被調用,都會導致本地緩存和二級緩存都會被清空,默認值:false --> flushCache='false' <!-- 6. useCache (可選配置) 將其設置為 true,將會導致本條語句的結果被二級緩存,默認值:對 select 元素為 true --> useCache='true' <!-- 7. timeout (可選配置) 這個設置是在拋出異常之前,驅動程序等待數據庫返回請求結果的秒數。默認值為 unset(依賴驅動)--> timeout='10000' <!-- 8. fetchSize (可選配置) 這是嘗試影響驅動程序每次批量返回的結果行數和這個設置值相等。默認值為 unset(依賴驅動)--> fetchSize='256' <!-- 9. statementType (可選配置) STATEMENT,PREPARED 或 CALLABLE 的一個。這會讓 MyBatis 分別使用 Statement,PreparedStatement 或 CallableStatement,默認值:PREPARED--> statementType='PREPARED' <!-- 10. resultSetType (可選配置) FORWARD_ONLY,SCROLL_SENSITIVE 或 SCROLL_INSENSITIVE 中的一個,默認值為 unset (依賴驅動)--> resultSetType='FORWARD_ONLY'>

我們還是從具體的示例來看看,

<select resultType='User'>select * from user where id = #{id}</select>

這里我們根據用戶id去查詢這個用戶的信息,resultType=User是一個別名,如果我們接觸到的是這種一對一的問題,那么可以簡單的定義一個實體,這個實體代表數據庫表中的一條記錄即可。但是如果我們遇到一對多的問題呢,就拿這里的查詢用戶信息來說,如果每個用戶有各種興趣,需要維護每個用戶的興趣信息,那么我們可能就存在下面的數據表結構:

CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `age` int(3) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8; CREATE TABLE `userinterests` ( `userid` int(11) DEFAULT NULL, `interestid` int(11) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `interests` ( `interestid` int(11) NOT NULL, `interestname` varchar(255) DEFAULT NULL, PRIMARY KEY (`interestid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

其中user表用于記錄用戶信息,interests表用于維護所有的興趣標簽,而userinterests用于維護每個用戶的興趣情況。

這時候,如果我們需要根據用戶id去查詢用戶的信息和興趣信息該怎么做呢?這時候我們就要用到<select>中的另一個重要屬性了,那就是resultMap。

在配置查詢的返回結果時,resultType和resultMap是二選一的操作。對于比較復雜的查詢結果,一般都會設置成resultMap。

resultMap該怎么配置呢?又支持哪些配置呢?我們看看下面:

<resultMap type='' id=''> <!-- id, 唯一性,注意啦,這個id用于標示這個javabean對象的唯一性, 不一定會是數據庫的主鍵(不要把它理解為數據庫對應表的主鍵) property屬性對應javabean的屬性名,column對應數據庫表的列名 (這樣,當javabean的屬性與數據庫對應表的列名不一致的時候,就能通過指定這個保持正常映射了) --> <id property='' column=''/><!-- result與id相比, 對應普通屬性 --> <result property='' column=''/><!-- constructor對應javabean中的構造方法 --> <constructor> <!-- idArg 對應構造方法中的id參數 --> <idArg column=''/> <!-- arg 對應構造方法中的普通參數 --> <arg column=''/> </constructor><!-- collection,對應javabean中容器類型, 是實現一對多的關鍵 property 為javabean中容器對應字段名 column 為體現在數據庫中列名 ofType 就是指定javabean中容器指定的類型 --> <collection property='' column='' ofType=''></collection><!-- association 為關聯關系,是實現N對一的關鍵。 property 為javabean中容器對應字段名 column 為體現在數據庫中列名 javaType 指定關聯的類型 --> <association property='' column='' javaType=''></association></resultMap>

根據上面的說明,我們來看看之前的問題怎么解決?

先截圖給出三個表的數據情況:

Mybatis中Mapper映射文件使用詳解

Mybatis中Mapper映射文件使用詳解

Mybatis中Mapper映射文件使用詳解

接著,我們來定義興趣類,并改寫之前的用戶實體類

package com.majing.learning.mybatis.entity;public class Interests {private int id;private String name;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return 'Interests [id=' + id + ', name=' + name + ']';}}

package com.majing.learning.mybatis.entity; import java.util.List; public class User2 {private int id;private String name;private String password;private int age;private List<Interests> interests;private String author;public List<Interests> getInterests() {return interests;}public void setInterests(List<Interests> interests) {this.interests = interests;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return 'User2 [id=' + id + ', name=' + name + ', password=' + password + ', age=' + age + ', interests=' + interests + ', author=' + author + ']';}}

緊接著,我們改寫Dao接口:

package com.majing.learning.mybatis.dao; import com.majing.learning.mybatis.entity.User2; public interface UserDao2 {/** * 查詢 * @param userId * @return */User2 findUserById (int userId);}

然后,我們給相關實體類創建一下別名:

<typeAliases><typeAlias alias='UserWithInterests' type='com.majing.learning.mybatis.entity.User2'/><typeAlias alias='Interests' type='com.majing.learning.mybatis.entity.Interests'/></typeAliases>

然后再創建一個對應跟UserDao2對應的Mapper映射文件:

<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE mapper PUBLIC '-//ibatis.apache.org//DTD Mapper 3.0//EN' 'http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd'><mapper namespace='com.majing.learning.mybatis.dao.UserDao2'> <resultMap type='UserWithInterests' id='UserWithInterestsMap'><id property='id' column='id'/><result property='name' column='name'/><result property='password' column='password'/><result property='age' column='age'/><collection property='interests' column='interestname' ofType='Interests'><id property='id' column='interestid'/><result property='name' column='interestname'/></collection></resultMap> <select resultMap='UserWithInterestsMap'>select a.*,c.* from user as a right join userinterests as b on a.id = b.userid right join interests as c on b.interestid = c.interestid where id = #{id}</select> </mapper>

最后將這個映射文件添加到<mappers>元素配置下:

<mappers><mapper resource='commajinglearningmybatisdaoUserDaoMapper.xml' /><mapper resource='commajinglearningmybatisdaoUserDao2Mapper.xml' /></mappers>

下面我們來寫個測試代碼來測試一下是否可以正常運行:

public class UserDaoTest3 {@Testpublic void testFindUserById(){SqlSession sqlSession = getSessionFactory().openSession(true); UserDao2 userMapper = sqlSession.getMapper(UserDao2.class); User2 user = userMapper.findUserById(10); System.out.println('記錄為:'+user); } // Mybatis 通過SqlSessionFactory獲取SqlSession, 然后才能通過SqlSession與數據庫進行交互private static SqlSessionFactory getSessionFactory() {SqlSessionFactory sessionFactory = null;String resource = 'configuration.xml';try {sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));} catch (IOException e) {e.printStackTrace();}return sessionFactory;}}

運行代碼后,我們可以看到成功啦!

Mybatis中Mapper映射文件使用詳解

(3)sql

sql元素的意義,在于我們可以定義一串SQL語句,其他的語句可以通過引用它而達到復用它的目的。因為平時用到的也不多,這里就不多介紹了,感興趣的朋友可以自行查閱資料了解一下。

(4)cache、cache-ref

關于緩存的這塊邏輯還沒有研究過,后面專門寫篇文章針對緩存進行針對性的說明,敬請關注。

到此這篇關于Mybatis中Mapper映射文件使用詳解的文章就介紹到這了,更多相關Mybatis Mapper映射文件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: a久久久久久 | 精品超碰 | 91在线视频免费观看 | 国产精品人人做人人爽人人添 | 精品国产欧美一区二区 | 夜夜草视频 | 日韩毛片一级 | 黄色免费一级 | 欧美久久视频 | 欧美视频在线播放 | av基地网| 国产精品极品美女在线观看免费 | 中文字幕在线精品 | 可以在线观看的av网站 | 欧美日韩干 | 91视频国产一区 | 一级久久久 | 欧美精品在线一区 | 涩涩综合 | 高清av网站| 中文字幕在线免费 | 亚洲国产精品99久久久久久久久 | 欧美日韩精品久久久 | 久久久久久久国产 | 亚洲欧美精品久久 | 人人爽视频 | 国产一区二区免费 | 日本免费黄色 | www.久久精品 | 精品三级在线观看 | 午夜影院在线观看视频 | 日韩第一区 | 久久久久久久久久一区二区 | 国产一区二区三区在线 | 天天操天天插天天干 | 国产精品毛片在线 | 欧美性猛交一区二区三区精品 | 成人一级片在线观看 | 亚洲免费在线观看 | 蜜月久综合久久综合国产 | 国产日产精品一区二区三区四区 | 在线观看成人高清 | 国产免费久久 | 亚洲欧洲精品一区二区三区 | 欧美一区二区三区免费电影 | 一区自拍| 久久伊人成人网 | 麻豆专区一区二区三区四区五区 | 嫩草91| 欧美成年黄网站色视频 | 欧美怡红院视频一区二区三区 | 国产精品1区2区 | 精品一区二区视频 | 欧美激情一区二区三区蜜桃视频 | 欧美一区二区三区四区五区 | 日本精品免费观看 | 免费观看一级毛片 | av一区在线 | 天堂视频在线 | 久久99一区 | 91大神免费在线观看 | 亚洲精品久久久久午夜 | 亚洲精品美女久久久 | 99视频在线播放 | 中文字幕亚洲一区二区三区 | 一区二区三区免费在线观看 | 久久精品一 | 最近免费中文字幕大全免费版视频 | 日韩欧美国产一区二区三区 | 欧美二区在线观看 | 欧美日韩一区在线 | 精品久久久久一区二区国产 | 亚洲综合首页 | 国产精品看片 | 在线观看国产视频 | 岛国a视频 | 精品在线一区二区三区 | 国产成人一区二区三区 | 午夜夜 | 伊人亚洲 | 伊人青青久久 | 最近韩国日本免费观看mv免费版 | 成人在线观看免费视频 | 欧美不卡视频一区发布 | 亚洲一区| 97在线播放| 日韩综合| 青青久视频 | 夜夜超碰| 中文字幕第31页 | 久久一视频 | 午夜看片在线观看 | 密室大逃脱第六季大神版在线观看 | 国产高清在线精品一区 | 色橹橹欧美在线观看视频高清 | 久久久亚洲一区 | 日韩成人一区 | 欧美日韩在线观看一区二区 | 国产精品久久久久久久久 | 免费视频爱爱太爽了 | 亚洲 精品 综合 精品 自拍 | 91社区在线高清 | 午夜三级在线 | 99re国产| 午夜激情视频 | 国产欧美日韩综合精品一 | 国产日韩欧美一二三区 | www精品 | 亚洲国产一区视频 | 久久色视频 | 欧美视频免费在线 | 欧美一区二区三区免费 | 亚洲人成人一区二区在线观看 | 亚洲成人一 | 中文字幕免费视频观看 | 97超碰站| 国产一区在线看 | 欧美极品欧美精品欧美视频 | 男人天堂亚洲 | 国产免费av在线 | 国产99久久精品一区二区永久免费 | 久久国产精品视频 | 狠狠入ady亚洲精品经典电影 | 日本久久精品一区二区 | 久久精品一二三四 | 天天干狠狠干 | 久久999视频 | 国产黄色大全 | 狠狠ri| 成人免费共享视频 | 国产美女自拍视频 | 亚洲精选一区二区 | 日韩av免费在线观看 | 中国黄色在线视频 | 色婷婷一区二区三区四区 | 精品国产乱码久久久久久丨区2区 | av黄色在线观看 | 99国产精品 | 亚洲成人免费网站 | 精品久久久久一区二区国产 | 日日夜夜狠狠 | 91免费看电影 | 色一色视频 | 中文字幕免费在线观看视频 | 日本精品一区二 | 搜一级毛片 | 欧美日韩在线一 | 成人在线一区二区三区 | 91在线精品一区二区三区 | 中文字幕av亚洲精品一部二部 | 亚洲欧美日韩国产综合 | 精品www| 国产精品视频一区二区免费不卡 | 性生活毛片 | 日韩美一级 | 亚洲国产精品久久久 | wwwsihu| 狠狠干狠狠干 | 国产精品一区二区在线 | 中文字幕精品一区二区三区精品 | 亚洲综合网站 | 久久不卡日韩美女 | 国产精品一区二区三区四区 | 国产精品久久久久国产a级 日韩在线二区 | 国产成人午夜视频 | 欧日韩不卡在线视频 | 国产美女精品视频免费观看 | 欧美国产在线观看 | 天天草综合 | 日本一本在线 | 久久不卡 | 一区二区三区视频在线播放 | 国产高清一区二区三区 | 久久久激情视频 | 91免费在线看 | 国产精品色综合 | 特级毛片在线 | 91精品久久久久久久久中文字幕 | 国产成人一区 | 欧美成年人视频 | 一级毛片免费高清 | 99久久久成人国产精品 | 日韩电影三级 | 日韩欧美一级 | 日韩视频精品在线 | 久久国产区 | 在线激情av | 99国产精品久久久 | 一区二区在线视频 | a毛片毛片av永久免费 | 国产目拍亚洲精品99久久精品 | 免费亚洲网站 | 国产色婷婷| 看片久久 | 完全免费av | 日本网站在线免费观看 | 亚洲成人网一区 | 午夜影院免费观看 | 久操视频在线 | 国产精品久久久爽爽爽麻豆色哟哟 | 国产又粗又长又硬又猛电影 | 国产一区二区三区免费看 | 亚洲精品毛片一区二区 | 麻豆资源| 色无欲天天天影视综合网 | 国产精品福利网站 | 亚洲色图综合 | 久久99深爱久久99精品 | 国产日韩欧美一区 | 黑人精品xxx一区一二区 | 美国黄色毛片女人性生活片 | 亚洲黄色a级| 国产精品1区2区 | 欧美国产一区二区 | 在线观看毛片网站 | 国产免费黄色大片 | 国产高清在线精品一区二区三区 | 国产精品成人国产乱一区 | 91精品国产日韩91久久久久久 | 九色av | 91社区影院 | 国产真实乱全部视频 | 欧美三级在线视频 | 国产综合精品 | 四虎影音 | 欧美日韩毛片 | 中文无码久久精品 | 一区二区视频网站 | 97免费在线视频 | 亚洲成人在线视频播放 | 亚洲精品免费视频 | 青青久久| 国产成人福利在线 | 日批免费视频 | 欧美久久久久久久久久久久 | 日本一区二区不卡 | 久久久精品久久久久 | 成人av免费观看 | 亚洲精品一区二区网址 | 动漫羞免费网站中文字幕 | 天堂免费在线观看视频 | 亚洲视频中文字幕 | 国产视频精品视频 | 精品无码久久久久国产 | 二区三区在线 | 国内精品视频一区国产 | 午夜www| 国产性色 | 国产毛片网站 | 国产亚洲综合一区二区 | 夜夜草av| 国产精品视屏 | 天堂一区二区三区在线 | 日韩在线视频网站 | a√免费视频 | 高清久久| 成人一区视频 | 老司机福利在线视频 | 日韩成人久久 | 欧洲亚洲精品久久久久 | 国产精品久久久久久久久久久久久久 | 亚洲精品国产剧情久久9191 | 久久久久久亚洲 | 亚洲在线视频 | 日韩精品中文字幕在线播放 | 亚洲综合在线播放 | 亚洲日本乱码在线观看 | 欧美日韩成人在线视频 | 色婷婷国产精品久久包臀 | 日韩在线观看视频一区二区 | 国产成人jvid在线播放 | 日韩精品免费 | 亚洲欧美高清 | 欧美在线网站 | 久久国产香蕉视频 | 黄色国产大片 | 欧美视频网站 | 欧美一区二区三区免费观看视频 | 国产欧美一区二区视频 | 91中文字幕 | 99re视频在线播放 | 欧美天天 | 97精品超碰一区二区三区 | 国外成人在线视频网站 | 热re99久久精品国99热线看 | 免费一级片 | 日韩欧美手机在线 | 国产精品毛片一区二区三区 | 在线看国产 | 中文字幕高清av | 日韩中文字幕在线看 | 成人免费在线视频播放 | 精品国产乱码久久久久久1区2区 | 久久精品欧美一区二区三区麻豆 | 国产一区二区三区免费观看 | 黄色免费av | 国产精品一区在线观看 | 日本精品一区 | 亚洲高清视频一区二区三区 | 亚洲一区二区三区 | 色播99| 国产精品成人国产乱一区 | 国产丝袜一区二区三区免费视频 | 91久久精品一区二区三区 | 日韩视频在线观看 | 操操操日日日 | 久久精品亚洲一区二区 | 国产精品久久久久一区二区三区 | 精品免费视频 | 成人伊人| 国产精品免费在线 | 97久久香蕉国产线看观看 | 国产精品久久婷婷六月丁香 | 狠狠天天 | 北条麻妃99精品青青久久 | 午夜激情视频在线观看 | 亚洲精品久久久久久一区二区 | 欧美精品免费在线观看 | 成人免费看黄色 | 久久久亚洲综合 | 伊人干| 毛片久久久 | 国产美女高潮一区二区三区 | 91最新| 在线精品日韩 | 久久久国产一区二区三区 | 精品一区二区三区在线视频 | 91色电影 | 亚洲欧美激情视频 | 国产成人视屏 | 国产999精品久久久久久麻豆 | 中文字幕在线看第二 | www..99re| 中文成人在线 | 国产精品美女久久久久久久久久久 | 免费在线一区二区三区 | 中文字幕亚洲综合久久久软件 | av在线大全 | 香蕉av在线 | 成人av播放 | 久久免费精品 | 成人日批视频 | 欧美日本韩国一区二区 | 日韩乱码中文字幕 | 99在线视频精品 | 久久久久久久成人 | 九九热在线免费视频 | 久久狠狠| 日韩在线国产精品 | 精品福利av导航 | 成人在线一区二区 | 日本亚洲精品成人欧美一区 | 国产精品美女久久久久久免费 | 在线91| 九九热精| 久久精品久久精品国产大片 | 一级特黄aaa大片在线观看 | 欧美在线视频一区 | 久久tv在线观看 | 亚洲欧美一级 | 一区二区亚洲 | 国产精品久久久久婷婷二区次 | 国产91看片| 午夜av成人 | 欧洲亚洲视频 | 在线播放中文字幕 | 欧美国产一区二区 | 一级性大片| 日韩在线中文字幕 | 一级毛片免费完整视频 | 欧美激情精品久久久久久 | 亚洲综合一区二区 | 久久精品国产99国产 | 91麻豆精品国产91久久久久久久久 | 黄色片免费看 | 国产成人久久 | 老司机狠狠爱 | 久久久免费电影 | 成人在线网 | 久久人人网 | 操人网址 | 亚洲免费视频在线观看 | 中文字幕av一区二区 | 日韩在线观看 | 欧美国产日韩一区 | 一级黄色片看看 | 午夜免费小视频 | 天天操操 | 日韩欧美视频一区二区三区 | 九九九色| 国产精品久久久久久久久免费桃花 | 国产激情午夜 | 亚洲成人精品在线观看 | 久久久久国产精品一区二区三区 | 99精品国产高清在线观看 | 欧美视频免费在线 | 亚洲一区精品在线 | 毛片网站在线 | 亚洲91 | 中文字幕亚洲区 | 九九亚洲| 99国产精品久久久久久久 | 99福利视频 | 99久久婷婷国产综合精品 | www.成人久久| 欧美一区在线视频 | 久久综合成人精品亚洲另类欧美 | 99国产精品久久久久久久久久 | 久久久久av| 特级毛片在线 | 欧美日韩视频 | 久久亚洲一区二区三 | 久久久久久午夜 | 日韩成人黄色 | 亚洲女人天堂成人av在线 | 久草青青 | 久久国产一区 | 国产精品久久久久久久久久久久久久 | 国产精品香蕉 | 在线观看国产wwwa级羞羞视频 | 日本一区二区三区四区不卡视频 | 久久白虎| 国产精品污www在线观看 | 五月婷婷导航 | 亚洲久久久 | 欧美一区二区激情三区 | 国产精品久久久久久久久免费桃花 | 久久免费看 | 亚洲一区二区中文字幕 | 久久精品视频网站 | 国产精品3区 | 大陆一级毛片免费视频观看 | 日韩大片免费播放 | 天天操网 | 欧美日韩午夜精品 | 91精品久久久久久久久中文字幕 | 国产亚洲一区二区三区 | 中文字幕av在线 | 在线免费观看成年人视频 | 国产精品一区二区三区免费 | 黄色网在线 | 视频一区二区中文字幕 | 欧美日韩大陆 | 狠狠久| 欧美78videosex性欧美 | 欧美一区二区三区在线观看视频 | 精品乱子伦一区二区三区 | 日韩成人国产 | 亚洲久久久 | 欧美精品一区在线 | 成人免费一区二区三区视频网站 | 国产午夜精品久久久久免费视高清 | 国产99久久久精品视频 | 91一区二区 | 日韩精品在线播放 | 欧美精品国产精品 | 午夜视频在线 | 欧州一区二区 | 中文字幕在线亚洲 | 久草青青 | 一区二区免费看 | 国产成人精品久久二区二区 | 中文字幕一区二区在线观看 | 欧美二区在线观看 | 日韩成年人视频 | 色玖玖 | 国产成人精品一区二区三区在线 | 欧美一区二区视频 | 午夜精品一区二区三区免费视频 | 国产综合在线视频 | 国产精品国色综合久久 | 91久久精品日日躁夜夜躁国产 | 国产一级影片 | 国产精品久久久久久无遮挡 | 天天操夜夜操 | 欧美日一区 | 亚洲精品久久久久久下一站 | av看片网 | 欧美日韩在线视频一区二区 | 精品久久久久久久久久久久 | 91爱爱网| 中文字幕日韩久久 | 91人人看| 日韩高清国产一区在线 | 九九热热九九 | 簧片免费网站 | 亚洲精品乱码久久久久久蜜桃不卡 | 久草视频在线播放 | 男人天堂999| 99热欧美 | 国产女人和拘做受在线视频 | 91精品久久久久久久久久 | 欧美极品一区二区 | 日韩在线欧美 | 国产精品永久免费视频 | 亚洲欧美高清 | 一区二区三区在线观看国产 | 日韩一区二区在线观看 | 91亚洲国产 | www.日本三级| 日本成人久久 | 日韩不卡av | hsck成人网| 欧美一区不卡 | 午夜天堂精品久久久久 | 久久av资源 | 中文字幕国产一区 | 欧美日韩国产一区二区在线观看 | 精品日韩欧美一区二区三区在线播放 | 日韩在线观看精品 | 超碰在线人 | 青草福利 | 国产欧美精品一区二区三区 | 国产激情毛片 | 精品久久久成人 | 精品日韩一区 | 欧美激情在线狂野欧美精品 | 久久99久久99精品免观看粉嫩 | 超级乱淫片国语对白免费视频 | 性色浪潮| 亚洲福利一区 | 亚洲国产一区二区三区四区 | 懂色中文一区二区在线播放 | 欧美乱淫| 狠狠艹 | 黄网站色大毛片 | 成人欧美日韩一区二区三区 | 久久夜视频 | 蜜桃av人人夜夜澡人人爽 | 国内外成人在线视频 | 色视频免费在线观看 | 九九资源站 | 天堂国产| 欧美激情一区二区三区蜜桃视频 | av免费看在线 | av免费在线观看网站 | 久久无码精品一区二区三区 | 91久久夜色精品国产九色 | h视频在线免费观看 | 国产精品久久久久久久久久久久 | 日韩在线免费 | 黄视频网站免费看 | 韩日一区 | 久久国产亚洲精品 | 日韩另类| 国产农村妇女精品 | 一级特黄色大片 | 成人一区二区电影 | 日韩免费在线观看视频 | 精品96久久久久久中文字幕无 | 国产精品国产精品国产专区不片 | 特级丰满少妇一级aaaa爱毛片 | 一级a毛片免费 | 欧美一区二区三区免费 | 欧美久久视频 | 中文字幕免费在线 | 三级精品 | 欧美国产免费 | 欧美五月 | 久草电影网 | 成人午夜在线视频 | 午夜看片 | 国产亚洲成av人片在线观看桃 | 国产精品96久久久久久久 | 97狠狠 | 色爱综合网 | 国产综合久久久久久鬼色 | 国产精品亚洲一区二区三区 | 四虎中文字幕 | 亚洲网站在线免费观看 | www.国产精品.com| 国产在线观看91一区二区三区 | 一级片观看| 亚洲国产成人av好男人在线观看 | 国产精品毛片无码 | 亚洲精品美女在线观看 | 日韩伦理一区二区 | 91在线一区二区 | 久久国产精品久久久久久 | 亚洲欧美一区二区三区久久 | 1000部精品久久久久久久久 | 欧美精品一区二区三区四区五区 | 日韩电影在线一区 | 亚洲一区二区中文字幕 | 国产精品中文字幕在线 | 欧美国产在线视频 | 欧美天堂在线观看 | segui88久久综合9999 | 久久综合伊人 | 国产成人精品一区二区三区在线 | 欧美亚洲激情 | 日日做| 在线播放一区二区三区 | 天天干天天插 | 日韩国产高清在线 | 国产欧美精品一区二区三区 | 日韩不卡一区二区 | 国产一区二区三区在线免费观看 | 国产精品日日夜夜 | 国产精品一二三区 | 亚洲欧美综合精品久久成人 | 狠狠躁夜夜躁人人爽天天高潮 | 日韩精品小视频 | 中文字幕 在线观看 | 国产欧美在线视频 | 国变精品美女久久久久av爽 | 成人精品视频99在线观看免费 | 精品中文字幕一区二区三区 | 亚洲日本乱码一区两区在线观看 | 羞羞视频免费观 | 六月婷操 | 性色av一二三杏吧传媒 | 亚洲精品午夜aaa久久久 | 最新免费av网站 | 中文字幕在线永久 |