黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術(shù)文章
文章詳情頁

Mybatis 自動(dòng)映射(使用需謹(jǐn)慎)

瀏覽:7日期:2023-10-21 19:16:20

什么是自動(dòng)映射?

介紹自動(dòng)映射之前先看一下手動(dòng)映射,如下:

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel'> <id column='id' property='id'/> <result column='userId' property='userId' /> <result column='createTime' property='createTime' /> <result column='upTime' property='upTime' /></resultMap> <select resultMap='orderModelMap1'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = #{value} ]]></select>

注意上面的resultMap元素中有4行配置,如下:

<id column='id' property='id'/><result column='userId' property='userId' /><result column='createTime' property='createTime' /><result column='upTime' property='upTime' />

這4行代碼用于配置sql結(jié)果的列和OrderModel對(duì)象中字段的映射關(guān)系。

大家有沒有注意到,映射規(guī)則中column和property元素的值都是一樣,mybatis中支持自動(dòng)映射配置,當(dāng)開啟自動(dòng)映射之后,當(dāng)sql的列名和Model中的字段名稱是一樣的時(shí)候(不區(qū)分大小寫),mybatis內(nèi)部會(huì)進(jìn)行自動(dòng)映射,不需要我們手動(dòng)去寫上面的4行映射規(guī)則。

下面我們將上面的示例改成自動(dòng)映射的方式,如下:

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel' autoMapping='true'></resultMap><select resultMap='orderModelMap2'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = #{value} ]]></select>

注意上面的resultMap中的autoMapping屬性,是否開啟自動(dòng)映射,我們?cè)O(shè)置為true,這樣mybatis會(huì)自動(dòng)按照列名和Model中同名的字段進(jìn)行映射賦值。

上面兩個(gè)配置最后查詢結(jié)果是一樣的,都會(huì)將查詢結(jié)果對(duì)應(yīng)的4個(gè)字段的值自動(dòng)賦值給OrderModel中同名的屬性。

自動(dòng)映射開關(guān)

mybatis中自動(dòng)映射主要有2種配置,一種是全局的配置,對(duì)應(yīng)用中所有的resultMap起效,這個(gè)是在mybatis配置文件中進(jìn)行設(shè)置的;另外一種是通過resultMap的autoMapping屬性進(jìn)行配置。

mybatis判斷某個(gè)resultMap是否開啟自動(dòng)映射配置的時(shí)候,會(huì)先查找自身的autoMapping屬性,如果這個(gè)屬性設(shè)置值了,就直接用這個(gè)屬性的值,如果resultMap元素的autoMapping屬性沒有配置,則走全局配置的自動(dòng)映射規(guī)則。

下面我們來詳解介紹一下這款的內(nèi)容。

mybatis自動(dòng)映射全局配置

在mybatis全局配置文件中加入下面配置:

<settings> <setting name='autoMappingBehavior' value='自動(dòng)映射規(guī)則'/></settings>

autoMappingBehavior值來源于枚舉:org.apache.ibatis.session.AutoMappingBehavior,源碼:

public enum AutoMappingBehavior { /** * Disables auto-mapping. */ NONE, /** * Will only auto-map results with no nested result mappings defined inside. */ PARTIAL, /** * Will auto-map result mappings of any complexity (containing nested or otherwise). */ FULL} NONE:關(guān)閉全局映射開關(guān) PARTIAL:對(duì)除在內(nèi)部定義了嵌套結(jié)果映射(也就是連接的屬性)以外的屬性進(jìn)行映射,這個(gè)也是默認(rèn)值。 FULL:自動(dòng)映射所有屬性。

小提示:settings元素中有很多配置,這些配置最后都會(huì)被解析成org.apache.ibatis.session.Configuration的屬性,源碼位于org.apache.ibatis.builder.xml.XMLConfigBuilder#settingsElement方法中。

下面我們來演示一下autoMappingBehavior每種配置的效果。

NONE

mybatis-config.xml加入配置

<settings> <!-- 關(guān)閉自動(dòng)映射開關(guān) --> <setting name='autoMappingBehavior' value='NONE'/></settings>

OrderMapper.xml

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel'></resultMap><select resultMap='orderModelMap4'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = #{value} ]]></select>

OrderMapper.java加入

OrderModel getById4(int id);

測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById4@Testpublic void getById4() throws IOException { this.before('demo7/mybatis-config1.xml'); try (SqlSession sqlSession = this.sqlSessionFactory.openSession(true);) { OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); OrderModel orderModel = mapper.getById4(2); log.info('{}', orderModel); }}

運(yùn)行結(jié)果

21:58.821 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById4 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = ? 21:58.850 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById4 - ==> Parameters: 2(Integer)21:58.868 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById4 - <== Total: 121:58.868 [main] INFO c.j.chat05.demo7.Demo7Test - null

從輸出中可以看到最后一樣輸出結(jié)果為null,sql實(shí)際上返回的是有結(jié)果的,但是結(jié)果映射的時(shí)候返回的是空。

結(jié)果解釋

由于mybatis全局配置中將autoMappingBehavior的值置為了NONE,表示全局自動(dòng)映射被關(guān)閉了,而resultMapper中的orderModelMap4沒有配置autoMapping屬性,所以最終這個(gè)查詢結(jié)果不會(huì)自動(dòng)映射,所以最后查詢結(jié)果為null。

PARTIAL

對(duì)除在內(nèi)部定義了嵌套結(jié)果映射(也就是連接的屬性)以外的屬性進(jìn)行映射,這個(gè)也是autoMappingBehavior的默認(rèn)值。

mybatis-config.xml加入配置

<settings> <!-- 對(duì)除在內(nèi)部定義了嵌套結(jié)果映射(也就是連接的屬性)以外的屬性進(jìn)行映射,這個(gè)也是autoMappingBehavior的默認(rèn)值。 --> <setting name='autoMappingBehavior' value='PARTIAL'/></settings>

OrderMapper.xml

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel'></resultMap><select resultMap='orderModelMap5'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = #{value} ]]></select>

OrderMapper.java加入

OrderModel getById5(int id);

測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById5@Testpublic void getById5() throws IOException { this.before('demo7/mybatis-config2.xml'); try (SqlSession sqlSession = this.sqlSessionFactory.openSession(true);) { OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); OrderModel orderModel = mapper.getById5(2); log.info('{}', orderModel); }}

運(yùn)行結(jié)果

28:32.612 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById5 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = ? 28:32.648 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById5 - ==> Parameters: 2(Integer)28:32.664 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById5 - <== Total: 128:32.665 [main] INFO c.j.chat05.demo7.Demo7Test - OrderModel(id=2, userId=1, createTime=1577947790, upTime=1577947790, userModel=null)

OrderModel中的4個(gè)屬性被自動(dòng)映射成功了。

結(jié)果解釋

orderModelMap5中沒有指定autoMapping屬性,所以自動(dòng)映射會(huì)走全局配置的規(guī)則,即PARTIAL,會(huì)進(jìn)行自動(dòng)映射。

我們?cè)賮砜纯碢ARTIAL的解釋:對(duì)除在內(nèi)部定義了嵌套結(jié)果映射(也就是連接的屬性)以外的屬性進(jìn)行映射。這句話是什么意思?

有些復(fù)雜的查詢映射會(huì)在resultMap中嵌套一些映射(如:association,collection),當(dāng)使用PARTIAL的時(shí)候,如果有嵌套映射,則這個(gè)嵌套映射不會(huì)進(jìn)行自動(dòng)映射了。

通過訂單id查詢出訂單以及訂單用戶的信息,sqlmap如下:

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel'> <association property='userModel'> </association></resultMap><select resultMap='orderModelMap6'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = #{value} ]]></select>

OrderModel.java

package com.javacode2018.chat05.demo7.model;import lombok.*;import java.util.List;@Getter@Setter@Builder@ToString@NoArgsConstructor@AllArgsConstructorpublic class OrderModel { private Integer id; private Integer userId; private Long createTime; private Long upTime; private UserModel userModel;}

內(nèi)部有個(gè)userModel屬性引用用戶對(duì)象。

UserModel.java

package com.javacode2018.chat05.demo7.model;import lombok.*;@Getter@Setter@Builder@ToString@NoArgsConstructor@AllArgsConstructorpublic class UserModel { private Integer id; private String name;}

OrderMapper.java中加入

OrderModel getById6(int id);

測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById6@Testpublic void getById6() throws IOException { this.before('demo7/mybatis-config2.xml'); try (SqlSession sqlSession = this.sqlSessionFactory.openSession(true);) { OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); OrderModel orderModel = mapper.getById6(2); log.info('{}', orderModel); }}

運(yùn)行輸出

52:49.037 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime, b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = ? 52:49.066 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - ==> Parameters: 2(Integer)52:49.087 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - <== Total: 152:49.088 [main] INFO c.j.chat05.demo7.Demo7Test - null

sql查詢實(shí)際上是有一條記錄的,但是最后返回的是null,說明沒有進(jìn)行自動(dòng)映射。

FULL

自動(dòng)映射所有屬性。

這次Mapper我們不動(dòng),還是下面這樣,沒有手動(dòng)指定映射規(guī)則。

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel'> <association property='userModel'> </association></resultMap><select resultMap='orderModelMap6'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = #{value} ]]></select>

修改一下autoMappingBehavior的值為FULL,看看效果。

mybatis配置

<settings> <!-- 自動(dòng)映射所有屬性 --> <setting name='autoMappingBehavior' value='FULL'/></settings>

測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById6_0@Testpublic void getById6_0() throws IOException { this.before('demo7/mybatis-config3.xml'); try (SqlSession sqlSession = this.sqlSessionFactory.openSession(true);) { OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); OrderModel orderModel = mapper.getById6(2); log.info('{}', orderModel); }}

運(yùn)行輸出

56:05.127 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime, b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = ? 56:05.155 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - ==> Parameters: 2(Integer)56:05.186 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - <== Total: 156:05.186 [main] INFO c.j.chat05.demo7.Demo7Test - OrderModel(id=2, userId=1, createTime=1577947790, upTime=1577947790, userModel=UserModel(id=2, name=張學(xué)友))

輸出中可以看到OrderModel所有屬性都是有值的,userModel的2個(gè)屬性也有值,userModel.id是2,我們運(yùn)行一下sql看看,用戶id是多少,如下:

mysql> SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime, b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = 2;+----+--------+------------+------------+---------+-----------+| id | userId | createTime | upTime | user_id | name |+----+--------+------------+------------+---------+-----------+| 2 | 1 | 1577947790 | 1577947790 | 1 | 張學(xué)友 |+----+--------+------------+------------+---------+-----------+1 row in set (0.00 sec)

user_id實(shí)際上是1,mybatis中按照sql字段和model結(jié)果字段同名進(jìn)行自動(dòng)映射,所以將訂單的id賦值給userModel的id屬性了。

此時(shí)需要我們orderModelMap6的配置,手動(dòng)指定一下user_id和userModel.id的映射規(guī)則,如下:

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel'> <association property='userModel'> <id column='user_id' property='id'/> </association></resultMap>

再次運(yùn)行測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById6_0

輸出

15:02.751 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime, b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = ? 15:02.783 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - ==> Parameters: 2(Integer)15:02.801 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById6 - <== Total: 115:02.801 [main] INFO c.j.chat05.demo7.Demo7Test - OrderModel(id=2, userId=1, createTime=1577947790, upTime=1577947790, userModel=UserModel(id=1, name=張學(xué)友))

這次userModel中的id正確了。

autoMapping使用

上面我們有說過,當(dāng)在resultMap中指定了autoMapping屬性之后,這個(gè)resultMap的自動(dòng)映射就受autoMapping屬性的控制,和mybatis中全局映射配置(autoMappingBehavior)行為無關(guān)了。

案例1

這個(gè)核心配置主要在sqlmap中,如下:

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel' autoMapping='true'> <association property='userModel' autoMapping='true'> <id column='user_id' property='id'/> </association></resultMap><select resultMap='orderModelMap7'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime, b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = #{value} ]]></select>

對(duì)應(yīng)測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById7@Testpublic void getById7() throws IOException { this.before('demo7/mybatis-config1.xml'); try (SqlSession sqlSession = this.sqlSessionFactory.openSession(true);) { OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); OrderModel orderModel = mapper.getById7(2); log.info('{}', orderModel); }}

運(yùn)行輸出

24:37.544 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById7 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime, b.id as user_id, b.name FROM t_order a,t_user b WHERE a.user_id = b.id AND a.id = ? 24:37.589 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById7 - ==> Parameters: 2(Integer)24:37.610 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById7 - <== Total: 124:37.610 [main] INFO c.j.chat05.demo7.Demo7Test - OrderModel(id=2, userId=1, createTime=1577947790, upTime=1577947790, userModel=UserModel(id=1, name=張學(xué)友))

OrderModel中所有屬性都自動(dòng)映射成功。

自動(dòng)裝配并不是那么好玩,玩不轉(zhuǎn)可能帶來一些隱患,我們看一個(gè)案例,見下面的示例2。

示例2

根據(jù)訂單編號(hào),查詢出訂單信息,順便查詢出訂單明細(xì)列表。這個(gè)我們使用mybatis中的一對(duì)多查詢。

OrderDetaiMapper.xml加入

<select resultType='com.javacode2018.chat05.demo7.model.OrderDetailModel'> <![CDATA[ SELECT a.id, a.order_id AS orderId, a.goods_id AS goodsId, a.num, a.total_price AS totalPrice FROM t_order_detail a WHERE a.order_id = #{value} ]]></select>

這個(gè)可以根據(jù)訂單的id,查詢出訂單關(guān)聯(lián)的明細(xì)列表。

OrderMapper.xml加入

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel' autoMapping='true'> <collection property='orderDetailModelList' select='com.javacode2018.chat05.demo7.mapper.OrderDetailMapper.getListByOrderId1' column='id'/></resultMap> <select resultMap='orderModelMap8'> <![CDATA[ SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = #{value} ]]></select>

測(cè)試用例

com.javacode2018.chat05.demo7.Demo7Test#getById8@Testpublic void getById8() throws IOException { this.before('demo7/mybatis-config.xml'); try (SqlSession sqlSession = this.sqlSessionFactory.openSession(true);) { OrderMapper mapper = sqlSession.getMapper(OrderMapper.class); OrderModel orderModel = mapper.getById8(1); log.info('{}', orderModel); }}

運(yùn)行輸出

11:06.193 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById8 - ==> Preparing: SELECT a.id, a.user_id userId, a.create_time createTime, a.up_time upTime FROM t_order a WHERE a.id = ? 11:06.229 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById8 - ==> Parameters: 1(Integer)11:06.250 [main] DEBUG c.j.c.d.m.O.getListByOrderId1 - ====> Preparing: SELECT a.id, a.order_id AS orderId, a.goods_id AS goodsId, a.num, a.total_price AS totalPrice FROM t_order_detail a WHERE a.order_id = ? 11:06.251 [main] DEBUG c.j.c.d.m.O.getListByOrderId1 - ====> Parameters: 1(Integer)11:06.255 [main] DEBUG c.j.c.d.m.O.getListByOrderId1 - <==== Total: 211:06.256 [main] DEBUG c.j.c.d.mapper.OrderMapper.getById8 - <== Total: 111:06.256 [main] INFO c.j.chat05.demo7.Demo7Test - OrderModel(id=null, userId=2, createTime=1577947790, upTime=1577947790, userModel=null, orderDetailModelList=[OrderDetailModel(id=1, orderId=1, goodsId=1, num=2, totalPrice=17.76), OrderDetailModel(id=2, orderId=1, goodsId=1, num=1, totalPrice=16.66)])

注意輸出中OrderModel的id屬性,怎么是null值?主要是下面這行配置導(dǎo)致的

<collection property='orderDetailModelList' select='com.javacode2018.chat05.demo7.mapper.OrderDetailMapper.getListByOrderId1' column='id'/>

上面這個(gè)配置中有個(gè)column屬性,指定的是id,此時(shí)mybatis認(rèn)為你對(duì)id字段手動(dòng)指定了映射關(guān)系,就跳過了對(duì)id字段到OrderModel.id屬性的自動(dòng)映射,所以導(dǎo)致OrderModel對(duì)象的id屬性沒有賦值,此時(shí)需要我們?cè)趏rderModelMap8手動(dòng)指定id的映射規(guī)則,如下:

<resultMap type='com.javacode2018.chat05.demo7.model.OrderModel' autoMapping='true'> <id column='id' property='id' /> <collection property='orderDetailModelList' select='com.javacode2018.chat05.demo7.mapper.OrderDetailMapper.getListByOrderId1' column='id'/></resultMap>

再去運(yùn)行測(cè)試用例就正常了。

總結(jié)一下

對(duì)于咱們開發(fā)來說,自動(dòng)映射確實(shí)可以幫助我們節(jié)省一些代碼,不過也存在一些隱患,我們希望自己開發(fā)的系統(tǒng)是健壯的,建議大家寫mapper xml的時(shí)候,還是花點(diǎn)時(shí)間將映射的配置都給寫上去,這樣能夠杜絕一些隱患,使我們的系統(tǒng)更穩(wěn)定。

到此這篇關(guān)于Mybatis 自動(dòng)映射(使用需謹(jǐn)慎)的文章就介紹到這了,更多相關(guān)Mybatis 自動(dòng)映射內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 午夜大片网 | 国产在线观看一区二区三区 | 久久色在线观看 | 97狠狠干 | 女仆裸体打屁屁羞羞免费 | 91天天看| 久久久免费精品视频 | 日批免费网站 | 成人爽a毛片一区二区免费 成人爽爽爽 | 免费在线看a| 久久精品一二三区白丝高潮 | 亚洲国产精品大学美女久久久爽 | 一区二区三区国 | 久久久综合网 | 本色视频aaaaaa一级网站 | 91插插插影库永久免费 | 妖精视频在线观看免费 | 大香伊人中文字幕精品 | 日本少妇白嫩猛烈进入免费视频 | 国产小视频你懂的 | 国产v片| 人人妻人人澡人人爽欧美一区 | 国产精品揄拍一区二区久久国内亚洲精 | a级毛片 黄 免费a级毛片 | 国产四区| 夜夜躁狠狠躁日日躁 | 国产精选久久 | 能看的av | 少妇伦子伦精品无码styles | 少妇黄色片 | 亚洲精品一区二区冲田杏梨 | 人妻人人澡人人添人人爽人人玩 | 久久国产精品99精国产 | 亚洲成人www | 免费国产黄网站在线观看可以下载 | 97视频在线免费观看 | av午夜在线观看 | 97干在线| 国产91在线免费 | 日韩专区中文字幕 | 激情综合av| 欧美日韩三级在线观看 | 国产精品人妻一码二码尿失禁 | 国产麻豆精品一区二区三区v视界 | 午夜一区二区国产好的精华液 | 久久精品在这里 | 一区二区中文字幕在线观看 | 91精品久久天干天天天按摩 | 亚洲福利视频网 | 国产无av码在线观看 | 中文字幕一区二区三区人妻少妇 | 国产成人麻豆精品午夜福利在线 | 国产三级黄色毛片 | 精品国产乱码久久 | 老女人毛片50一60岁 | 伦理东北丰满少妇 | 久久免费精品视频 | 强壮公侵犯使我夜夜高潮 | 欧美精品videosexo极品 | 午夜嘿嘿 | 99久久99久久精品 | 性,国产三级在线观看 | 中国老妇淫片bbb | 美女100%露胸无遮挡 | 国产午夜鲁丝片av无码 | 黄色激情在线观看 | 国产免费又爽又色又粗视频 | 66av99精品福利视频在线 | 国产精品久久久久久久久潘金莲 | 久久人人爽人人爽人人片av高请 | 国产美女视频一区 | 亚洲a v网站| 五月色婷婷综合 | 性视频网站免费 | 欧美一区二区三区在线视频 | 久久免费成人 | 国产精品宾馆在线精品酒店 | 毛片在线播放a | 久久久久久艹 | 国产成人久久 | 日日碰狠狠躁久久躁2023 | 九九操| 欧美青草视频 | 亚洲一区二区三区麻豆 | 欧美福利视频一区 | 五月天av网 | 男人扒开添女人下部免费视频 | 精品国产一二三产品价格 | 免费一级特黄特色毛片久久看 | www射| 亚洲精品中文字幕乱码三区 | 国产乱人乱精一区二视频国产精品 | 国产精品久久久久久福利 | 日韩特黄毛片 | 日本亚洲欧洲无免费码在线 | 老色鬼在线精品视频在线观看 | 久久久久夜夜夜精品国产 | 窝窝午夜影院 | 黑人中文字幕一区二区三区 | 一区免费观看 | 欧美整片在线观看 | 久久精品成人热国产成 | 精品一区二区亚洲 | av片在线免费观看 | 漂亮人妻被中出中文字幕 | 越南处破女av免费 | 国产成人综合久久精品免费 | 午夜片在线 | 免费观看成人av | 亚洲自拍偷拍区 | av在线播放国产 | 亚洲欧美日韩国产精品一区二区 | 成人羞羞视频在线看网址 | 久久久日韩精品一区二区 | 国产激情啪啪 | 国内精品一区二区三区 | 欧美成人免费观看视频 | 91久久人人夜色一区二区 | 中文字幕无码免费久久 | 午夜精品一区二区三区在线视频 | 涩涩屋www视频在线观看高清 | 色婷婷av久久久久久久 | 99久久久精品免费观看国产 | yy6080午夜八戒国产亚洲 | 毛片av在线播放 | 午夜精品福利在线 | 婷婷超碰 | 黄色网视频| 精品国产乱码久久久久久婷婷 | 中日韩在线视频 | 最近免费中文字幕中文高清百度 | 欧美激情久久久 | 国产欧美一区二区三区免费视频 | 国产乱子伦精品视频 | 亚洲人成色7777在线观看不卡 | 三级免费网站 | 人人爽人人爽少妇免费 | 裸体歌舞表演一区二区 | 好吊操这里有精品 | 小萝莉末成年一区二区 | 99国产在线观看 | av区无码字幕中文色 | 男人资源网站 | 99在线精品免费视频九九视 | 99国产精品国产精品九九 | 久久婷婷影院 | 黄色大片网站 | 四川少妇性色xxxxhd | 日本福利视频一区 | www欧美国产 | 亚洲色大成网站www 中文字幕色婷婷在线视频 麻豆人妻少妇精品无码专区 | xx久久| 国产精品第2页 | 少妇在线播放 | 欧美欧美欧美欧美 | 国产不卡一| 97在线看免费观看视频在线观看 | av毛片在线看 | 一区二区久久久 | 伊人热久久 | www.av在线视频| 国产偷伦视频 | 四虎国产精品成人免费影视 | 51久久成人国产精品 | 日本视频三区 | 久久亚洲精品中文字幕无码 | 91视频最新地址 | 激情五月婷婷在线 | 国产亚洲成av人片在线观黄桃 | 亚洲中文字幕无码爆乳av | jlzzjlzz亚洲日本少妇 | 四虎永久免费观看 | 日本久久不卡 | 夜夜春夜夜爽 | 毛片免费在线观看视频 | 成人免费看片视频 | 欧美高清免费 | 欧美人与禽zozzo禽性配 | 亚洲色图27p | 精品久久久久久无码中文字幕一区 | 亚洲视频播放 | av九九九 | 欧美性猛交7777777 | 精品1卡二卡三卡四卡老狼 国内大量偷窥精品视频 | 思思99精品视频在线观看 | 亚洲第一在线 | 求av网站| www视频免费在线观看 | 天堂网在线最新版www中文网 | 免费毛片看片 | 天干天干天啪啪夜爽爽av | 在线免费观看午夜视频8 | 91高跟黑色丝袜呻吟动态图 | 亚洲天堂中文在线 | 亚洲色欧美 | 国产aaa视频 | 成年人免费看的视频 | av在线成人 | 伊人久久精品无码麻豆一区 | jjzz黄色片| 高清不卡一区二区 | 日本a级c片免费看三区 | 欧美性淫爽www视频免费播放 | 成人免费毛片偷拍 | 玖玖视频在线 | 免费日韩欧美 | 成人亚洲性情网站www在线观看国产 | 纤纤影视理伦片在线看 | 成人国产1314www色视频 | 亚洲国产欧美日本视频 | 五月精品视频 | 欧美午夜精品一区二区 | 性做久久久久久久 | 免费无码一区二区三区a片百度 | 日本韩国三级 | 99久久久久久久久久久 | 极品粉嫩美女露脸啪啪 | 韩国一区二区三区视频 | 狠狠久 | 人人免费操| 欧美三日本三级少妇99 | 日韩射 | 久久亚洲精品无码aⅴ大香 人人妻人人玩人人澡人人爽 | 91看片黄色| 日韩做爰视频免费 | 在线观看黄色片 | 糖心vlog一区二区三区在线 | 麻豆hdxxxxx仙踪林 | 日日夜夜精品视频免费 | 中文av资源| 国产草草草 | 国精产品一品二品国精在线观看 | 44382亚洲最大成人网 | 亚洲自偷自偷图片 | 免费毛片a线观看 | 国产激情视频网站 | 欧美黄色免费看 | 嫩草伊人久久精品少妇av | 一级做a爰片性色毛片视频停止 | 99国产精品久久久久久久久久久 | 成年人拍拍视频 | 欧美日韩中文字幕 | 天天做天天爱天天做 | 在线免费观看污网站 | 成人精品视频一区二区三区尤物 | 95精品视频 | 男女做爰猛烈啪啪吃奶动床戏麻豆 | 装睡被陌生人摸出水好爽 | 国产一区二区在线视频 | 免费精品无码av片在线观看 | 亚洲性人人天天夜夜摸 | 激烈娇喘叫1v1高h糙汉 | 九九九热精品免费视频观看网站 | 亚洲精选一区二区三区 | 久久无码专区国产精品 | 国产成人久久久精品免费澳门 | 五月天激情综合网 | 久久一久久 | 久久精品水蜜桃av综合天堂 | 东北妇女精品bbwbbw | 国内精品久久久久久久果冻传媒 | 国产偷国产偷av亚洲清高 | 亚洲综合色自拍一区 | jlzzjizz亚洲学生好多水 | 国产乱色精品成人免费视频 | 亚洲欧美精品无码一区二区三区 | 高h禁伦1v1喂奶 | 噜噜噜久久亚洲精品国产品 | 久草国产在线视频 | 18禁黄网站禁片免费观看 | 成人午夜国产内射主播 | 山村大伦淫第1部分阅读小说 | 好紧好湿太硬了我太爽了视频 | 成人品视频观看在线 | 久久精品成人欧美大片 | 日本高清免费aaaaa大片视频 | 亚州激情 | 国产尤物网站 | 性色xxxxhd | 911精品国产一区二区在线 | 欧美大片视频在线观看 | 久久国产影视 | 婷婷精品进入 | 中文字幕一区二区三 | 嫩草网站在线观看 | 成年入口无限观看免费完整大片 | 国产精品制服丝袜 | 国产精品天美传媒入口 | 久久综合狠狠色综合伊人 | 亚洲欧美日韩国产综合 | 亚洲色图激情 | 国产无遮挡猛进猛出免费软件 | 九九99精品 | 久草手机在线视频 | 国产女人18毛片水真多1 | 最新国产精品精品视频 | 日本乱偷人妻中文字幕在线 | 免费看欧美黑人毛片 | 国产免费又爽又色又粗视频 | 9999国产精品欧美久久久久久 | 134vcc影院免费观看 | 日本www一道久久久免费 | 超碰免费成人 | 欧美婷婷精品激情 | 欧美中文字幕在线视频 | 天堂69堂在线精品视频软件 | 亚洲 自拍 另类小说综合图区 | 精品第一页 | 国产自啪精品视频网站丝袜 | 交换配乱淫东北大坑性事视频 | 范冰冰一级做a爰片久久毛片 | 51自拍视频在线观看 | 日本草逼视频 | 亚洲少妇第一页 | 中文字幕超清在线免费观看 | 成年人免费看黄色 | 免费的av| 极品少妇被猛得白浆直流草莓视频 | 久久强奷乱码老熟女网站 | 免费国产黄网站在线观看视频 | 亚洲成人77777 | 国产免费小视频 | 张柏芝54张无删码艳照在线播放 | 免费一级做a爰片久久毛片潮 | 强行糟蹋人妻hd中文 | 国产91在线播放九色000 | 特级西西444ww大胆视频 | 黄色激情在线观看 | 闺蜜张开腿让我爽了一夜 | 午夜福利伦伦电影理论片在线观看 | 成av免费大片黄在线观看 | 欧美少妇色图 | 91在线视频免费 | 亚洲第一极品精品无码 | 姑娘第5集在线观看免费好剧 | 四虎永久在线精品免费网址 | 黄色高清片 | 欧美内射深插日本少妇 | 91视频xxxx | 欧美日韩国语 | 亚洲精品成人在线视频 | 亚洲天堂精品在线观看 | 成人短视频在线 | 亚洲视频精品在线观看 | 男人的天堂2019 | 十八禁无遮挡99精品国产 | 亚洲精品免费在线 | 黄色一级图片 | 欧美专区日韩专区 | 国产在线观看网站 | 四虎永久在线精品免费一区二区 | 真人啪啪高潮喷水呻吟无遮挡 | 国产免费内射又粗又爽密桃视频 | 国产清纯白嫩初高生视频在线观看 | 风韵犹存三浦惠理子aa | snis839痴汉明日花キララ | 高h禁伦肉伦np双龙 高h捆绑拘束调教小说 | 麻豆精产国品 | 艹逼久久| 久久视了| 美女乱淫免费视频网站 | 亚洲第二页 | 中文字幕四区 | 吃奶摸下的激烈视频 | 巨大巨粗巨长 黑人长吊 | 亚洲国产精品一区 | 李丽珍毛片| 亚洲羞羞视频 | av毛片网| 免费观看日批视频 | zzijzzij亚洲日本成熟少妇 | 97视频在线观看播放 | 亚洲国产成人久久精品大牛影视 | 精品一区二区免费视频 | 免费成人精品 | 深夜福利网 | av成人在线网站 | 成人无码网www在线观看 | 性欧美大战久久久久久久 | 日本黄色a级片 | 亚洲一区二区三区国产好的精华液 | 黄色视屏在线免费观看 | 艹逼久久| 欧美久久久久久久久久久久久久 | www夜插内射视频网站 | 国产精品v欧美精品v日韩精品 | 日本69少妇 | 久久免费在线观看视频 | 麻豆影视免费观看 | 国产成人精品无码片区在线观看 | 亚洲自拍偷拍综合 | 香蕉在线视频观看 | 国产成人综合久久久久久 | 亚洲午夜精品在线 | 日韩一区二区三区在线播放 | 国产欧美一区二区精品性色 | 日韩欧美在线观看一区二区三区 | 中文字幕一区二区人妻 | 亚洲精品国产精品国 | 好吊日免费视频 | 色妞www精品免费视频 | 真人抽搐一进一出视频 | 婷婷色婷婷开心五月四房播播 | 99av成人精品国语自产拍 | 中年熟妇的大黑p | 国产午夜在线视频 | 色妞www精品视频7777 | 2019精品手机国产品在线 | b站永久免费看片大全 | 久久精品操 | 三级网址在线 | 成人在线观看网站 | 亚洲永久精品ww47 | 日韩第一区| 娇妻玩4p被三个男人伺候电影 | 久久伊人在 | 国产成人精品微拍视频网址 | 国产成人亚洲综合 | 免费福利小视频 | 国产深夜福利在线 | 亚洲aⅴ天堂av天堂无码麻豆 | 任你躁国产老女人 | 国产啪精品视频网站 | 国产黄色片免费看 | 免费观看的av毛片的网站 | 亚洲欧美另类综合 | 日本三级理论久久人妻电影 | 日日夜操| 国产精品好爽好紧好大 | 99精品国产综合久久久久五月天 | 精品人无码一区二区三区 | 九九热爱视频精品视频 | 狠狠色噜噜狠狠狠888米奇视频 | 久久精品麻豆日日躁夜夜躁 | 国产视频一区二区三区在线 | 亚洲综人网 | 日本国产在线视频 | 国产热a欧美热a在线视频 | 国产精品久久久久高潮 | 99久久久久国产精品免费人果冻 | 欧美日韩国产综合在线 | 国产目拍亚洲精品区一区 | 91精品国产色综合久久不卡98口 | 成人无码影片精品久久久 | 日本三级视频 | 在线播放第一页 | 国产偷窥老熟盗摄视频 | 色窝| 精品人妻一区二区三区浪潮在线 | 亚洲精品日韩欧美 | 欧美精品在线视频观看 | 精品国产露脸对白在线观看 | 欧洲精品一卡2卡三卡4卡影视 | 日本老熟妇毛茸茸 | 97视频网站 | a在线播放 | 影音先锋中文字幕在线 | 亚洲天堂精品在线观看 | 国产一区二区三区四区五区tv | 午夜影视大全 | 精品欧美一区二区久久久伦 | 偷偷草| 青青久在线视频免费观看 | 亚洲欧美激情国产综合久久久 | 深夜成人福利视频 | 久久精品人妻一区二区三区 | 久久国产精品无码网站 | 日韩免费高清视频网站 | 日韩一片 | 中文字幕丰满人伦在线 | 欧美日韩国产成人在线 | 成人一区二区视频 | 131mm极品尤物美女无胸罩 | 亚洲色在线无码国产精品不卡 | 99re国产精品 | 久久久www成人免费精品 | 三级4级全黄60分钟 午夜成人1000部免费视频 | 姑娘第5集在线观看免费 | 久久久久久久久成人 | 国产成人精品免费视频 | 亚洲一级二级视频 | 国产成人免费在线观看 | 国产盗摄精品一区二区酒店 | 人与动物av | 日韩中文字幕在线观看视频 | 国产免国产免费 | 一级成人av | 成人性色生活片免费看l | 99久久免费精品国产免费高清 | 色爱综合 | 最近2019中文字幕大全第二页 | 嫩草一区二区 | 国产肥臀一区二区福利视频 | 精品国产一区二区三区久久 | 午夜影院免费版 | 国产精品国产三级国产aⅴ 国产精品国产三级国产aⅴ9色 | 蜜臀av性久久久久av蜜臀妖精 | 99精品在线 | 天天鲁夜夜免费观看视频 | 伊人狠狠色j香婷婷综合 | 丁香激情五月 | 精品厕所偷拍各类美女tp嘘嘘 | 午夜成人鲁丝片午夜精品 | 久久人妻无码中文字幕 | 国产网站一区 | 亚洲精品一区三区三区在线观看 | 亚洲国产av美女网站 | 国产福利网站 | 日本一卡2卡3卡四卡精品网站 | aaa一区二区| 永久免费无码av网站在线观看 | 91亚洲日本aⅴ精品一区二区 | 99久久婷婷国产综合精品电影 | 国产乱码在线 | 久久国产精品亚洲 | 成人av视屏 | 亚洲国产成人精品久久久国产成人 | 九九久久九九久久 | 欧美成人aaa片一区国产精品 | 全肉高h后宫gl | 欧美3p两根一起进高清免费视频 | 亚洲精品乱码久久久久久蜜桃 | 亚洲欧美日本韩国 | 黑人ⅴvideo暴力亚洲娇小 | 国产国语老龄妇女a片 | 97久久偷偷做嫩草影院免费看 | 91插插插插插插插 | 国产精品久久久久久久蜜臀 | 在线免费观看小视频 | 青青草视频偷拍 | 亚洲国产日韩一区 | 欧美一区二区免费 | 国内外成人在线视频 | 性生交大片免费看l | www.黄色av| 久久久精品人妻无码专区不卡 | 国产精品日产欧美久久久久 | 伊人春色在线视频 | 黄色三级av| 少妇性bbb搡bbb爽爽爽 | 国产成人综合在线女婷五月99播放 | 蜜桃久久av一区 | 黄色一级片一级片 | а√天堂8资源在线官网 | 国产精品久久一区性色av图片 | 亚洲乱人伦中文字幕无码 | 丰满少妇理论片在线观看 | 久久久久久国产精品亚洲78 | 日本加勒比中文字幕 | 午夜av不卡 | 中文字幕丰满子伦 | 亚洲精品国产电影 | 激情专区| 国产极品白嫩精品 | 黑人性视频 | 农村偷人一级超爽毛片 | 欧美一区精品 | 欧美日韩精品一区二区三区蜜桃 | 欧美精品区 | 天海翼中文字幕 | 第一福利蓝导航柠檬导航av | 欧美视频网址 | 亚洲国产精品毛片av不卡在线 | 激情综合网五月天 | 天海翼av | 亚洲 美腿 欧美 偷拍 | 中文字幕在线观看日韩 | 99久久人妻无码精品系列 | 国产女主播福利 | 中文字幕在线播放日韩 | 91精品国产综合久久久久 | 男女裸体做爰猛烈全过程9制片 | 1024成人网色www| 成人综合激情 | 一区二区三区免费观看视频 | 日韩精品免费看 | 综合激情av | 久久国产精品首页 | 国产微拍精品一区 | 综合九九 | 日韩欧美极品 | 国产精品一区二区手机在线观看 | 亚洲性精品 | 五月伊人网 | 日韩爱爱网站 | 久久曰视频| 干丰满少妇 | 色插综合 | 极品少妇被猛得白浆直流草莓视频 | 好湿好紧太硬了我太爽了视频 | 成人羞羞国产 | 婷婷综合另类小说色区 | 欧美九九视频 | а√天堂8资源中文在线 | 日韩精品一区二区三区第95 | 国产乱来| 76少妇精品导航 | 国产精品1024| 三级第一页| 国产精品呻吟久久av凹凸 | 精品无码国产自产拍在线观看蜜 | 国产l精品国产亚洲区久久 亚洲欧洲精品成人久久曰影片 | 成年女性特黄午夜视频免费看 | 国产精品久久久久9999吃药 | 天天伊人网 | 婷婷亚洲综合 | 欧美与黑人午夜性猛交久久久 | 国内偷拍精品视频 | 欧美乱妇高清无乱码 | 四虎在线免费播放 | 一级片福利 | 爱爱高潮视频 | 国产97在线 | 亚洲 | 日本高清视频免费观看 | 久久婷婷五月综合色中文字幕 |