日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

insert into select 主键自增_springboot2结合mybatis拦截器实现主键自动生成

發布時間:2024/1/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 insert into select 主键自增_springboot2结合mybatis拦截器实现主键自动生成 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方藍字關注我們

1

01

前言

前陣子和朋友聊天,他說他們項目有個需求,要實現主鍵自動生成,不想每次新增的時候,都手動設置主鍵。于是我就問他,那你們數據庫表設置主鍵自動遞增不就得了。他的回答是他們項目目前的id都是采用雪花算法來生成,因此為了項目穩定性,不會切換id的生成方式。

朋友問我有沒有什么實現思路,他們公司的orm框架是mybatis,我就建議他說,不然讓你老大把mybatis切換成mybatis-plus。mybatis-plus就支持注解式的id自動生成,而且mybatis-plus只是對mybatis進行增強不做改變。朋友還是那句話,說為了項目穩定,之前項目組沒有使用mybatis-plus的經驗,貿然切換不知道會不會有什么坑。后面沒招了,我就跟他說不然你用mybatis的攔截器實現一個吧。于是又有一篇吹水的創作題材出現。

1

02

前置知識

在介紹如何通過mybatis攔截器實現主鍵自動生成之前,我們先來梳理一些知識點

mybatis攔截器的作用

mybatis攔截器設計的初衷就是為了供用戶在某些時候可以實現自己的邏輯而不必去動mybatis固有的邏輯

Interceptor攔截器

每個自定義攔截器都要實現

org.apache.ibatis.plugin.Interceptor

這個接口,并且自定義攔截器類上添加@Intercepts注解

攔截器能攔截哪些類型

Executor:攔截執行器的方法。ParameterHandler:攔截參數的處理。ResultHandler:攔截結果集的處理。StatementHandler:攔截Sql語法構建的處理。

攔截的順序a、不同類型攔截器的執行順序Executor?-> ParameterHandler -> StatementHandler -> ResultSetHandlerb、多個攔截器攔截同種類型同一個目標方法,執行順序是后配置的攔截器先執行

比如在mybatis配置如下

<plugins>
????<plugin?interceptor="com.lybgeek.InterceptorA"?/>
????<plugin?interceptor="com.lybgeek.InterceptorB"?/>
??plugins>

則InterceptorB先執行。

如果是和spring做了集成,先注入spring ioc容器的攔截器,則后執行。比如有個mybatisConfig,里面有如下攔截器bean配置

? ? @Bean
????public?InterceptorA interceptorA(){
????????return?new?InterceptorA();
????}

????@Bean
????public?InterceptorB interceptorB(){
????????return?new?InterceptorB();
????}

則InterceptorB先執行。當然如果你是直接用@Component注解這形式,則可以配合@Order注解來控制加載順序

攔截器注解介紹

@Intercepts:標識該類是一個攔截器

@Signature:指明自定義攔截器需要攔截哪一個類型,哪一個方法。
@Signature注解屬性中的type表示對應可以攔截四種類型(Executor、ParameterHandler、ResultHandler、StatementHandler)中的一種;method表示對應類型(Executor、ParameterHandler、ResultHandler、StatementHandler)中的哪類方法;args表示對應method中的參數類型

攔截器方法介紹a、?intercept方法public?Object?intercept(Invocation invocation) throws Throwable

這個方法就是我們來執行我們自己想實現的業務邏輯,比如我們的主鍵自動生成邏輯就是在這邊實現。

Invocation這個類中的成員屬性target就是@Signature中的type;method就是@Signature中的method;args就是@Signature中的args參數類型的具體實例對象

b、?plugin方法public?Object?plugin(Object?target)

這個是用返回代理對象或者是原生代理對象,如果你要返回代理對象,則返回值可以設置為

Plugin.wrap(target, this);
this為攔截器

如果返回是代理對象,則會執行攔截器的業務邏輯,如果直接返回target,就是沒有攔截器的業務邏輯。說白了就是告訴mybatis是不是要進行攔截,如果要攔截,就生成代理對象,不攔截是生成原生對象

c、?setProperties方法public?void?setProperties(Properties properties)

用于在Mybatis配置文件中指定一些屬性

1

03

主鍵自動生成思路

定義一個攔截器

主要攔截

Executor#update(MappedStatement ms, Object parameter)`}

這個方法。mybatis的insert、update、delete都是通過這個方法,因此我們通過攔截這個這方法,來實現主鍵自動生成。其代碼塊如下

@Intercepts(value={@Signature(type = Executor.class,method = "update",args = {MappedStatement.class,Object.class})})
public class AutoIdInterceptor implements Interceptor {}判斷sql操作類型

Executor 提供的方法中,update 包含了 新增,修改和刪除類型,無法直接區分,需要借助 MappedStatement 類的屬性?SqlCommandType?來進行判斷,該類包含了所有的操作類型

public?enum?SqlCommandType {
??UNKNOWN, INSERT, UPDATE, DELETE, SELECT, FLUSH;
}

當SqlCommandType類型是insert我們才進行主鍵自增操作

填充主鍵值a、編寫自動生成id注解Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public?@interface?AutoId {
????/**
?????* 主鍵名
?????* @return
?????*/
????String?primaryKey();

????/**
?????* 支持的主鍵算法類型
?????* @return
?????*/
????IdType type() default?IdType.SNOWFLAKE;

????enum?IdType{
????????SNOWFLAKE
????}
}

b、?雪花算法實現

我們可以直接拿hutool這個工具包提供的idUtil來直接實現算法。

<dependency>
????????????<groupId>cn.hutoolgroupId>
????????????<artifactId>hutool-allartifactId>
????????dependency>Snowflake snowflake = IdUtil.createSnowflake(0,0);
long?value?= snowflake.nextId();

c、填充主鍵值

其實現核心是利用反射。其核心代碼片段如下

ReflectionUtils.doWithFields(entity.getClass(), field->{
????????????????????ReflectionUtils.makeAccessible(field);
????????????????????AutoId autoId = field.getAnnotation(AutoId.class);
????????????????????if(!ObjectUtils.isEmpty(autoId) && (field.getType().isAssignableFrom(Long.class))){
????????????????????????switch?(autoId.type()){
????????????????????????????case?SNOWFLAKE:
????????????????????????????????SnowFlakeAutoIdProcess snowFlakeAutoIdProcess = new?SnowFlakeAutoIdProcess(field);
????????????????????????????????snowFlakeAutoIdProcess.setPrimaryKey(autoId.primaryKey());
????????????????????????????????finalIdProcesses.add(snowFlakeAutoIdProcess);
????????????????????????????????break;
????????????????????????}
????????????????????}
????????????????});public?class?SnowFlakeAutoIdProcess?extends?BaseAutoIdProcess?{

????private?static?Snowflake snowflake = IdUtil.createSnowflake(0,0);


????public?SnowFlakeAutoIdProcess(Field field)?{
????????super(field);
????}

????@Override
????void?setFieldValue(Object entity)?throws?Exception{
????????long?value = snowflake.nextId();
????????field.set(entity,value);
????}
}

如果項目中的mapper.xml已經的insert語句已經含有id,比如

insert?into?sys_test( `id`,`type`, `url`,`menu_type`,`gmt_create`)values( #{id},#{type}, #{url},#{menuType},#{gmtCreate})

則只需到填充id值這一步。攔截器的任務就完成。如果mapper.xml的insert不含id,形如

insert?into?sys_test( `type`, `url`,`menu_type`,`gmt_create`)values( #{type}, #{url},#{menuType},#{gmtCreate})

則還需重寫insert語句以及新增id參數

重寫insert語句以及新增id參數(可選)a、重寫insert語句

方法一:
從 MappedStatement 對象中獲取 SqlSource 對象,再從從 SqlSource 對象中獲取獲取 BoundSql 對象,通過 BoundSql#getSql 方法獲取原始的sql,最后在原始sql的基礎上追加id

方法二:

引入

<dependency>
??????<groupId>com.alibabagroupId>
??????<artifactId>druidartifactId>
??????<version>${druid.version}version>
????dependency>

通過

com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser

獲取相應的表名、需要insert的字段名。然后重新拼湊出新的insert語句

b、把新的sql重置給Invocation

其核心實現思路是創建一個新的MappedStatement,新的MappedStatement綁定新sql,再把新的MappedStatement賦值給Invocation的args[0],代碼片段如下

private?void?resetSql2Invocation(Invocation invocation, BoundSqlHelper boundSqlHelper,Object entity)?throws?SQLException {
????????final?Object[] args = invocation.getArgs();
????????MappedStatement statement = (MappedStatement) args[0];
????????MappedStatement newStatement = newMappedStatement(statement, new?BoundSqlSqlSource(boundSqlHelper));
????????MetaObject msObject = MetaObject.forObject(newStatement, new?DefaultObjectFactory(), new?DefaultObjectWrapperFactory(),new?DefaultReflectorFactory());
????????msObject.setValue("sqlSource.boundSqlHelper.boundSql.sql", boundSqlHelper.getSql());

????????????args[0] = newStatement;

????}c、新增id參數

其核心是利用

org.apache.ibatis.mapping.ParameterMapping

核心代碼片段如下

private?void?setPrimaryKeyParaterMapping(String primaryKey) {
???????????ParameterMapping parameterMapping = new?ParameterMapping.Builder(boundSqlHelper.getConfiguration(),primaryKey,boundSqlHelper.getTypeHandler()).build();
???????????boundSqlHelper.getBoundSql().getParameterMappings().add(parameterMapping);
???????}d、將mybatis攔截器注入到spring容器

可以直接在攔截器上加

@org.springframework.stereotype.Component

注解。也可以通過

? ? @Bean
????public?AutoIdInterceptor autoIdInterceptor(){
????????return?new?AutoIdInterceptor();
????}e、在需要實現自增主鍵的實體字段上加如下注解?@AutoId(primaryKey?= "id")
??private Long id;

1

04

測試

對應的測試實體以及單元測試代碼如下@Data
public?class?TestDO implements?Serializable {
??private?static?final long serialVersionUID = 1L;

??@AutoId(primaryKey = "id")
??private?Long id;
??private?Integer type;
??private?String?url;
??private?Date?gmtCreate;
??private?String?menuType;
}@Autowired
????private?TestService testService;

????@Test
????public?void?testAdd(){
????????TestDO testDO = new?TestDO();
????????testDO.setType(1);
????????testDO.setMenuType("1");
????????testDO.setUrl("www.test.com");
????????testDO.setGmtCreate(new?Date());
????????testService.save(testDO);
????????testService.get(110L);
????}

????@Test
????public?void?testBatch(){
????????List testDOList = new?ArrayList<>();for?(int?i = 0; i < 3; i++) {
????????????TestDO testDO = new?TestDO();
????????????testDO.setType(i);
????????????testDO.setMenuType(i+"");
????????????testDO.setUrl("www.test"+i+".com");
????????????testDO.setGmtCreate(new?Date());
????????????testDOList.add(testDO);
????????}
????????testService.saveBatch(testDOList);
????}當mapper的insert語句中含有id

形如下

<insert?id="save"?parameterType="com.lybgeek.TestDO"?useGeneratedKeys="true"?keyProperty="id">
????insert?into sys_test(`id`,`type`, `url`,`menu_type`,`gmt_create`)
????values( #{id},#{type}, #{url},#{menuType},#{gmtCreate})
??insert>

以及批量插入sql

<insert?id="saveBatch"??parameterType="java.util.List"?useGeneratedKeys="false">
????insert?into sys_test( `id`,`gmt_create`,`type`,`url`,`menu_type`)
????values
????"list"?item="test"?index="index"?separator=",">
??????( #{test.id},#{test.gmtCreate},#{test.type}, #{test.url},
??????#{test.menuType})
??insert>

查看控制臺sql打印語句

15:52:04?[main] DEBUG com.lybgeek.dao.TestDao.save - ==> Preparing:?insert?into sys_test(`id`,`type`, `url`,`menu_type`,`gmt_create`) values( ?,?, ?,?,? )
15:52:04?[main] DEBUG com.lybgeek.dao.TestDao.save - ==> Parameters:?356829258376544258(Long), 1(Integer), www.test.com(String), 1(String), 2020-09-11?15:52:04.738(Timestamp)
15:52:04?[main] DEBUG com.lybgeek.dao.TestDao.save - <== Updates:?115:52:04?[main] DEBUG c.n.lybgeek.dao.TestDao.saveBatch - ==> Preparing: insert into sys_test( `id`,`gmt_create`,`type`,`url`,`menu_type`) values ( ?,?,?, ?, ?) , ( ?,?,?, ?, ?) , ( ?,?,?, ?, ?)
15:52:04?[main] DEBUG c.n.lybgeek.dao.TestDao.saveBatch - ==> Parameters: 356829258896637961(Long), 2020-09-11?15:52:04.847(Timestamp), 0(Integer), www.test0.com(String), 0(String), 356829258896637960(Long), 2020-09-11?15:52:04.847(Timestamp), 1(Integer), www.test1.com(String), 1(String), 356829258896637962(Long), 2020-09-11?15:52:04.847(Timestamp), 2(Integer), www.test2.com(String), 2(String)
15:52:04?[main] DEBUG c.n.lybgeek.dao.TestDao.saveBatch - <== Updates: 3

查看數據庫

當mapper的insert語句中不含id

形如下

<insert?id="save"?parameterType="com.lybgeek.TestDO"?useGeneratedKeys="true"?keyProperty="id">
????insert?into sys_test(`type`, `url`,`menu_type`,`gmt_create`)
????values(#{type}, #{url},#{menuType},#{gmtCreate})
??insert>

以及批量插入sql

<insert?id="saveBatch"??parameterType="java.util.List"?useGeneratedKeys="false">
????insert?into sys_test(`gmt_create`,`type`,`url`,`menu_type`)
????values
????"list"?item="test"?index="index"?separator=",">
??????(#{test.gmtCreate},#{test.type}, #{test.url},
??????#{test.menuType})
??insert>

查看控制臺sql打印語句

15:59:46?[main] DEBUG com.lybgeek.dao.TestDao.save - ==> Preparing:?insert?into sys_test(`type`,`url`,`menu_type`,`gmt_create`,id) values?(?,?,?,?,?)
15:59:46?[main] DEBUG com.lybgeek.dao.TestDao.save - ==> Parameters:?1(Integer), www.test.com(String), 1(String), 2020-09-11?15:59:46.741(Timestamp), 356831196144992264(Long)
15:59:46?[main] DEBUG com.lybgeek.dao.TestDao.save - <== Updates:?115:59:46?[main] DEBUG c.n.lybgeek.dao.TestDao.saveBatch - ==> Preparing: insert into sys_test(`gmt_create`,`type`,`url`,`menu_type`,id) values (?,?,?,?,?),(?,?,?,?,?),(?,?,?,?,?)
15:59:46?[main] DEBUG c.n.lybgeek.dao.TestDao.saveBatch - ==> Parameters: 2020-09-11?15:59:46.845(Timestamp), 0(Integer), www.test0.com(String), 0(String), 356831196635725829(Long), 2020-09-11?15:59:46.845(Timestamp), 1(Integer), www.test1.com(String), 1(String), 356831196635725828(Long), 2020-09-11?15:59:46.845(Timestamp), 2(Integer), www.test2.com(String), 2(String), 356831196635725830(Long)
15:59:46?[main] DEBUG c.n.lybgeek.dao.TestDao.saveBatch - <== Updates: 3

從控制臺我們可以看出,當mapper.xml沒有配置id字段時,則攔截器會自動幫我們追加id字段

查看數據庫

1

05

總結

本文雖然是介紹mybatis攔截器實現主鍵自動生成,但文中更多講解如何實現一個攔截器以及主鍵生成思路,并沒把intercept實現主鍵方法貼出來。其原因主要是主鍵自動生成在mybatis-plus里面就有實現,其次是有思路后,大家就可以自己實現了。最后對具體實現感興趣的朋友,可以查看文末中demo鏈接

1

06

參考文檔?

https://www.cnblogs.com/chenchen127/p/12111159.html

https://blog.csdn.net/hncaoyuqi/article/details/103187983

https://blog.csdn.net/zsj777/article/details/81986096

1

07

demo鏈接

https://github.com/lyb-geek/springboot-learning/tree/master/springboot-mybatis-autoId

總結

以上是生活随笔為你收集整理的insert into select 主键自增_springboot2结合mybatis拦截器实现主键自动生成的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

视频一区二区三区视频 | 伊人网综合在线观看 | 久久99国产综合精品 | 久久精久久精 | 色综合天天综合网国产成人网 | 久久久久久久久免费视频 | 天天操综| 日韩午夜网站 | 日韩啪啪小视频 | 99热这里只有精品国产首页 | 国产123区在线观看 国产精品麻豆91 | 久久中文字幕在线视频 | 欧美一区二区在线看 | 国产日韩欧美中文 | 激情视频91| 国产成人免费观看久久久 | 五月天狠狠操 | 天天综合网 天天综合色 | 激情片av | 四季av综合网站 | 婷婷伊人网| 亚洲精品在线一区二区三区 | 精品国内自产拍在线观看视频 | 国产剧在线观看片 | 久久久久久久久久久久久久电影 | 成人久久综合 | 97人人爽人人 | 97在线观视频免费观看 | 国产精品麻豆视频 | 黄污网站在线观看 | 69久久99精品久久久久婷婷 | 国产91免费在线观看 | 亚洲精品国产精品国自产 | 美女久久 | 91av视频在线观看免费 | 国产精品 美女 | www178ccom视频在线 | 一级免费看 | 亚洲电影久久 | 天天操夜操视频 | 亚洲丝袜中文 | 国产区在线| 欧美激情片在线观看 | 一区二区三区国产精品 | 涩涩网站免费 | 99热在线国产| 日本99精品 | 中文字幕在线观看完整版电影 | 97国产大学生情侣酒店的特点 | 成片视频在线观看 | h网站免费在线观看 | 九九交易行官网 | 九九视频一区 | 亚洲狠狠干 | 99视频精品视频高清免费 | 亚洲一区二区天堂 | 免费av免费观看 | 三日本三级少妇三级99 | 国产亚洲视频中文字幕视频 | 国产精品99久久久久久久久 | 国产成人亚洲在线观看 | 国产成人亚洲在线观看 | 在线观看91精品国产网站 | 色综合天天综合 | 精品国产一区二 | 三级大片网站 | 手机在线看片日韩 | 有没有在线观看av | 亚洲成av人影院 | 午夜在线免费视频 | 青青久草在线视频 | 91福利视频免费 | 久久久视屏 | 国产在线2020 | 亚洲欧美日韩一区二区三区在线观看 | 久久综合婷婷 | 久久久久成人精品免费播放动漫 | 色偷偷88欧美精品久久久 | 久久综合导航 | 国产精品久久久久9999吃药 | 日本在线观看一区 | 在线视频专区 | 激情网婷婷 | 成人午夜黄色影院 | www.天天成人国产电影 | 亚洲综合成人专区片 | 亚洲精品高清视频 | 亚洲精品白浆高清久久久久久 | 最近中文字幕 | 99久久国产免费免费 | 一区二区三区免费播放 | 亚洲综合五月 | 国产精品青草综合久久久久99 | 国产亚洲婷婷 | 日本三级全黄少妇三2023 | 久久久免费电影 | 999免费视频| 人人看黄色 | 久草在线视频首页 | 国产99一区视频免费 | 搡bbbb搡bbb视频| 国产伦理精品一区二区 | 久久午夜免费视频 | 久草网免费 | 人人草人人草 | www黄在线 | 中文字幕在线观看国产 | 亚洲成人一区 | 97碰碰视频 | 国产亚洲免费观看 | 99性视频 | 亚洲综合欧美精品电影 | 色婷婷 亚洲 | 欧美激情视频免费看 | 国产美女视频一区 | 97精品国产97久久久久久久久久久久 | 亚洲欧美综合精品久久成人 | 少妇超碰在线 | 肉色欧美久久久久久久免费看 | 日韩成人免费电影 | 在线看片日韩 | 欧美在线1区| 91精品国产综合久久福利 | 97在线观看| 亚洲综合欧美激情 | 免费观看黄色12片一级视频 | 不卡视频一区二区三区 | 午夜影院一级 | 日韩欧美高清视频在线观看 | 国产精品入口传媒 | 在线国产不卡 | 久久精品一区八戒影视 | av 在线观看 | 精久久久久| 久草99| 日韩精品一区二区三区不卡 | 黄色av免费电影 | 在线小视频国产 | 一二三久久久 | 国产精品乱码久久久 | 亚洲精品xxxx | 国产青草视频在线观看 | 免费看国产一级片 | 在线视频观看国产 | 黄色在线看网站 | 中文字幕超清在线免费 | 国产一区电影在线观看 | 九九九九精品 | 成年人三级网站 | 激情综合网婷婷 | 九九九热精品免费视频观看网站 | 91免费高清在线观看 | 欧美ⅹxxxxxx| www欧美色| 日韩va在线观看 | 国产婷婷一区二区 | 国产精品久久久久久久久免费 | 青青看片 | av大全在线免费观看 | 成人网444ppp| 国产一级黄大片 | 免费网站在线 | 在线免费观看视频 | 亚洲一区视频在线播放 | 国产精品影音先锋 | 午夜国产福利视频 | www.黄色| 国产成人精品一区二区在线观看 | 精品国内| 精品国产99国产精品 | 在线观看免费一级片 | 色悠悠久久综合 | 啪嗒啪嗒免费观看完整版 | 99热这里只有精品国产首页 | 国产成人精品免高潮在线观看 | 国产极品尤物在线 | 99久久久国产精品免费观看 | 久久手机在线视频 | 四虎8848免费高清在线观看 | 激情小说网站亚洲综合网 | 婷婷精品国产欧美精品亚洲人人爽 | 啪嗒啪嗒免费观看完整版 | 久久亚洲免费视频 | 99精品久久久久久久久久综合 | 国产二区电影 | 天天操操操操操操 | 在线观看视频中文字幕 | 伊人天天干 | 五月天久久激情 | 天天爱综合 | 美女视频国产 | 国产亚洲精品xxoo | 婷婷av资源| 日韩欧美精品免费 | 黄色官网在线观看 | 在线电影 你懂得 | 亚洲精品无| 国产精品黑丝在线观看 | 亚洲精品一区二区精华 | 九九在线精品视频 | 在线播放 日韩专区 | 探花视频免费在线观看 | 高清不卡免费视频 | 在线播放视频一区 | 爱情影院aqdy鲁丝片二区 | 99精品国产福利在线观看免费 | 四虎影视国产精品免费久久 | 午夜av免费在线观看 | 亚洲a网 | 五月丁香 | 在线综合色| 欧美精品免费在线 | 国产亚洲精品综合一区91 | 久久久精品久久日韩一区综合 | 免费看的黄色 | 亚洲五月六月 | 亚洲精品合集 | 亚洲欧美综合 | 免费视频一二三 | 天天干天天在线 | 欧美三级在线播放 | 岛国一区在线 | www日韩精品 | 亚洲国产影院 | 久久视了 | 婷婷综合国产 | 久久久久麻豆 | 伊人永久 | 91av久久| 操操操综合 | 最新av免费在线 | 最近2019年日本中文免费字幕 | 日韩欧美在线视频一区二区 | 亚洲经典在线 | 国产69久久久 | 久久福利影视 | 国产精品成人久久 | 中文字幕亚洲欧美日韩 | 国产日韩一区在线 | 最新日韩在线观看 | 免费91在线 | 高清久久久| 国产日韩在线播放 | 国产一区二区三区四区大秀 | 国产成人一区二区三区影院在线 | 国产精品久久精品 | 国产一级二级av | 又污又黄网站 | 美女黄频在线观看 | 国产精品一区免费看8c0m | 亚洲成人软件 | 高清中文字幕av | 夜色成人av | 999久久久免费精品国产 | 久久伊人国产精品 | 久久国内免费视频 | 99久久精品久久亚洲精品 | 天天透天天插 | 久久久久福利视频 | 中文在线亚洲 | 丁香激情综合久久伊人久久 | 久久久久久久久久久久99 | 波多野结衣综合网 | 日本中文字幕免费观看 | 国产高清在线永久 | a在线播放 | 色偷偷88欧美精品久久久 | 久久精品免费电影 | 亚洲在线a | 久久久久久久久久国产精品 | 色综合天天综合网国产成人网 | 日韩国产精品久久久久久亚洲 | 欧美日韩不卡在线视频 | 日韩视频在线观看视频 | 99精品久久久久久久久久综合 | 成人网444ppp | 免费在线观看国产黄 | 欧美一区日韩精品 | 国产精品a久久 | 亚洲精品乱码久久久久久久久久 | 国产第一页精品 | 天堂在线一区二区三区 | 成人av网址大全 | 国产一级片一区二区三区 | 国产精品久久久久久久久久三级 | 久久久片 | 国产高清在线观看av | 色综合天天狠天天透天天伊人 | 亚洲精品在线观看免费 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 欧美日韩精品在线观看 | 免费三级黄色片 | 丁香在线观看完整电影视频 | 精品视频成人 | 久久爱992xxoo | 国产一区观看 | 综合网天天射 | 在线观看色网 | 探花视频在线观看免费版 | 国产亚洲精品久久久久秋 | 美女视频是黄的免费观看 | 久久涩视频 | 97精品国产91久久久久久 | 91九色精品国产 | 日韩欧美一区二区在线播放 | av一级久久 | 欧美午夜剧场 | 日韩视频免费 | 亚洲国产成人在线 | 91视频链接 | 亚洲精品女 | 国精产品永久999 | 在线观看黄 | 久久久久成人免费 | 久人人 | av在线最新 | 久久久久成 | 国产日本在线观看 | 免费在线黄网 | 日韩中字在线观看 | 国内精品久久久久久中文字幕 | aa级黄色大片 | 日本性xxx| 日韩在线视频网 | 国产在线观看99 | 日韩精品不卡 | 日本久久中文字幕 | 一区二区三区高清不卡 | 香蕉视频免费看 | 91丨九色丨蝌蚪丰满 | 日韩免费看视频 | 中文国产字幕在线观看 | 996久久国产精品线观看 | 国产伦理久久 | 色av色av色av | 九九在线高清精品视频 | 人人爽人人爽人人爽学生一级 | 亚州黄色一级 | 日韩成人xxxx | 美女性爽视频国产免费app | 黄色毛片在线 | 免费一级特黄毛大片 | 亚洲精品国久久99热 | 欧美激情视频一区 | 日韩专区av | 久久久综合香蕉尹人综合网 | 欧美一级淫片videoshd | 久热久草在线 | 草莓视频在线观看免费观看 | 美女网站在线播放 | 国产精品99久久久久人中文网介绍 | 99久久激情视频 | 国产三级国产精品国产专区50 | 99精品视频精品精品视频 | 日韩av电影手机在线观看 | 99视频精品视频高清免费 | 六月丁香六月婷婷 | 一区二区不卡视频在线观看 | 日韩免费电影网站 | 色婷婷狠狠干 | www.五月激情.com | 欧美日本日韩aⅴ在线视频 插插插色综合 | 成人影音在线 | 国产亚洲精品久久久网站好莱 | 国产一区二区三区在线 | 天天天色| 成人久久精品 | 免费久久久久久 | 一区二区三区韩国免费中文网站 | 免费看的黄网站 | 日韩欧美在线第一页 | 国产精品久久久久毛片大屁完整版 | 天天添夜夜操 | 伊人五月 | 成人av网站在线播放 | 国产无套精品久久久久久 | 五月婷婷开心 | 亚洲国产日韩在线 | 91污污视频在线观看 | 中文字幕二区在线观看 | 91大神一区二区三区 | 91在线观看欧美日韩 | 国产在线播放观看 | 日韩一区二区三区观看 | 又紧又大又爽精品一区二区 | 精品国产视频在线观看 | 国产视频日韩 | 久久精品国亚洲 | 久久久视频在线 | 天天综合久久综合 | 日日干天天射 | 欧美精品做受xxx性少妇 | 久久成人午夜 | 99c视频高清免费观看 | 视频一区二区免费 | 2019精品手机国产品在线 | av在线8| 麻豆传媒视频在线免费观看 | 狠狠色丁香婷婷综合最新地址 | 欧美一级黄色片 | 国产精品精品久久久久久 | 欧美日韩啪啪 | 亚洲国产一区二区精品专区 | 国内一级片在线观看 | 黄色看片 | 日本中文字幕视频 | 婷婷精品国产一区二区三区日韩 | 免费网站黄| 国产福利av在线 | 在线日本看片免费人成视久网 | 天天射天天干天天插 | 日韩草比 | 国产福利中文字幕 | 亚洲精品白浆高清久久久久久 | 粉嫩av一区二区三区四区在线观看 | 久久综合色天天久久综合图片 | 中文av日韩 | 在线观看91视频 | 国内精品国产三级国产aⅴ久 | 天天干天天干天天射 | 国产视频久| 综合国产在线观看 | 欧美日韩18 | 丁香九月婷婷 | 欧美天天综合网 | 中文字幕国产一区 | 色在线视频网 | 91xav| 日韩在线免费观看视频 | 久久精品高清视频 | 国产超碰在线观看 | 国产精选在线 | 四月婷婷在线观看 | 三日本三级少妇三级99 | 99久久日韩精品视频免费在线观看 | 91热这里只有精品 | 久久人人爽av | 91免费在线视频 | 久久艹国产视频 | 久久国产美女 | 中文字幕在线专区 | 欧美精品一区二区免费 | 欧美日本啪啪无遮挡网站 | 国产精品久久久久久电影 | 91亚洲精| 91黄色小视频 | 深爱婷婷 | 天天射天天操天天干 | 亚洲美女精品区人人人人 | 国产午夜精品福利视频 | 亚洲极色 | 在线 影视 一区 | 亚洲v欧美v国产v在线观看 | 免费网站黄色 | 国产精品黄色在线观看 | 色香网 | 四虎在线观看视频 | 91福利影院在线观看 | 亚洲国产一区二区精品专区 | 丰满少妇在线观看资源站 | 黄色小说在线观看视频 | 免费在线观看国产黄 | 天天干天天玩天天操 | www色网站 | 午夜精品中文字幕 | 国产98色在线 | 日韩 | 精品国产aⅴ一区二区三区 在线直播av | 久久爱导航 | 五月开心网 | 欧美极品少妇xxxx | 狠狠狠狠狠狠狠 | 久久久久综合视频 | 99视频偷窥在线精品国自产拍 | 91麻豆精品国产91久久久更新时间 | 久久精品人人做人人综合老师 | www.狠狠色 | 免费久久片| 精品视频久久久久久 | 人人干人人超 | 久久久久欧美精品 | 麻豆网站免费观看 | 狠狠色伊人亚洲综合成人 | 国产精品视频免费看 | 亚洲精品国产精品国自产观看 | 成人影片免费 | av丝袜天堂| 日韩精品一区二区三区免费观看视频 | 国产黄色视 | 久久特级毛片 | 国产精品久久久久9999 | 国产成人免费观看 | 91视频在线免费下载 | 中文字幕一区二区三区精华液 | 国内久久看 | 国内视频1区 | 啪啪免费试看 | 97精品国产97久久久久久粉红 | 美国av片在线观看 | 成人国产精品久久久久久亚洲 | 黄影院| 伊人热 | 中文字幕频道 | 国产视频99 | 六月丁香激情综合色啪小说 | 最近中文字幕视频完整版 | 国产美腿白丝袜足在线av | 国产精品一区二区视频 | 亚洲精品视频免费看 | 久久蜜臀av | 在线播放精品一区二区三区 | 欧美激情操 | .国产精品成人自产拍在线观看6 | 日韩久久在线 | 香蕉视频久久 | 国产分类视频 | 天天激情综合网 | 中文字幕无吗 | 婷婷色在线 | 国产亚州精品视频 | 婷婷综合久久 | 天天综合入口 | 欧美日韩三区二区 | 欧美激情视频在线免费观看 | 欧美激情第八页 | 日韩亚洲在线视频 | 99精品久久精品一区二区 | 亚洲精品国产精品国 | 1000部国产精品成人观看 | 中文字幕资源网 国产 | 有码中文字幕 | 国产在线视频资源 | 免费看黄20分钟 | 日韩av在线影视 | 最近中文字幕免费大全 | 色婷婷在线观看视频 | 精品国产99国产精品 | 免费黄色小网站 | 国产在线观看午夜 | 久久久久久久综合色一本 | 91香蕉亚洲精品 | 国产又粗又硬又爽的视频 | av不卡免费在线观看 | 高清av不卡 | 六月激情婷婷 | 欧美日bb | 美女黄频 | 国产精品观看视频 | 99在线视频播放 | 丰满少妇在线观看资源站 | 国产精品日韩高清 | 在线观看免费高清视频大全追剧 | 在线视频免费观看 | 色狠狠综合天天综合综合 | 香蕉网站在线观看 | 日韩欧美网站 | 黄色网在线播放 | 国产精品免费久久久 | 亚洲年轻女教师毛茸茸 | 天天干,天天射,天天操,天天摸 | 日韩av高清| 99国产免费网址 | 国产色就色 | 精品福利av | 日批在线观看 | 欧美另类美少妇69xxxx | 久久96国产精品久久99漫画 | 久草在线资源视频 | 国产黑丝一区二区三区 | 国产中文字幕在线视频 | 亚洲人成人在线 | 91久久精品一区二区二区 | 色综合中文综合网 | 亚洲伊人婷婷 | 亚洲 欧美 综合 在线 精品 | 久久国产综合视频 | 狠狠狠色丁香综合久久天下网 | 97超碰资源站 | 婷婷网在线 | 97精产国品一二三产区在线 | 四虎在线视频免费观看 | 久久综合免费 | 国产福利一区二区三区在线观看 | 欧美国产大片 | 丁香六月婷婷开心 | 国产成人精品网站 | 国产高清区 | 亚洲狠狠婷婷 | 国产精品亚洲精品 | 精选久久 | 国产成人精品av在线 | 91av电影| 国产精品女人网站 | 91久久人澡人人添人人爽欧美 | 五月婷婷国产 | 天天干天天玩天天操 | 精品国产乱码久久久久久1区二区 | 午夜精品久久久久久久99无限制 | 久久99国产综合精品免费 | 婷婷久操 | 五月天堂色 | 91视频链接 | 青青河边草免费视频 | 午夜精品成人一区二区三区 | 中文字幕乱码电影 | 免费日韩 精品中文字幕视频在线 | 日本精品一区二区 | 91一区二区在线 | 人人爱人人射 | 九九三级毛片 | 青草视频在线 | 午夜久久美女 | caobi视频 | 日韩电影在线观看中文字幕 | a级国产片| av免费福利 | 日本久久电影网 | 五月天久久久久 | 2000xxx影视 | 久久久免费少妇 | 国产一级电影在线 | 夜夜躁天天躁很躁波 | 天天天天爱天天躁 | 特级免费毛片 | 麻豆av一区二区三区在线观看 | 成年人在线免费看视频 | 亚洲激精日韩激精欧美精品 | 在线视频观看国产 | 91精品国产福利 | 日日夜夜噜 | 久久久久久久国产精品视频 | www.狠狠插.com| 狠狠躁夜夜躁人人爽超碰91 | 狠狠狠色丁香婷婷综合久久五月 | 成人黄色大片在线免费观看 | 免费高清无人区完整版 | 波多野结衣电影一区二区三区 | 国产成人精品久 | 亚洲天天干 | 免费福利视频网站 | 亚洲国产三级在线观看 | 免费看三片 | 日本99精品 | 成人av免费在线观看 | 欧美日韩中文字幕视频 | 日本中文字幕网 | 五月天久久婷 | 国产精品久久久久久久久久妇女 | 四虎国产精品成人免费4hu | 激情视频区 | 国产一二三区在线观看 | 黄色小说在线免费观看 | 91精品国产成人www | 日日草av| 亚洲精品一区二区久 | 亚洲日日夜夜 | 日韩视频中文 | 精品人人人人 | 欧美日韩视频在线一区 | 亚洲国产视频直播 | 人人插人人费 | 色综合久久88色综合天天免费 | 超碰日韩在线 | 狠狠躁日日躁夜夜躁av | 狠狠躁日日躁 | 国产精品99久久久久久武松影视 | 亚洲精品综合一二三区在线观看 | 美女在线国产 | 一区二区网 | 日韩久久片 | 久久成人视屏 | 国产一区二区免费在线观看 | 99在线免费视频观看 | 91九色国产视频 | 久久精品综合网 | 亚洲1级片| 国产成人在线免费观看 | 亚洲一本视频 | 国产精品久久中文字幕 | 最近免费中文字幕大全高清10 | 久久精品99国产国产 | 天堂麻豆| 久久99久国产精品黄毛片入口 | 97人人网 | 久久久久免费精品 | 国产理论一区二区三区 | 国产一级高清视频 | 国产午夜精品一区二区三区在线观看 | 天天拍夜夜拍 | 久久精品系列 | 久久8精品 | 最近最新mv字幕免费观看 | 成人动漫精品一区二区 | 国产一区二区三区网站 | 中文字幕黄色网 | 99精品免费观看 | 天天干夜夜爱 | 精品亚洲男同gayvideo网站 | 四虎www.| 亚洲精品免费看 | 91在线观看欧美日韩 | 日韩免费在线观看 | 在线观看国产日韩 | av电影一区 | 91精彩视频在线观看 | 亚州国产精品 | 久久人人爽爽人人爽人人片av | 伊人色综合久久天天 | 又黄又色又爽 | 伊人干综合 | 久久99免费 | 久香蕉| 91大神一区二区三区 | 国产毛片久久久 | 国产视频中文字幕在线观看 | 亚洲免费av电影 | 中文字幕色播 | 91尤物国产尤物福利在线播放 | av片一区| 欧美一区二区三区免费观看 | 99精品在线看 | 日韩精品中文字幕在线不卡尤物 | 精品国产乱码久久 | 精品五月天 | 亚洲人成人天堂h久久 | 久久经典国产视频 | 亚洲理论片 | 爱爱av在线 | 国产高清免费在线观看 | 久久久久久久久久久久电影 | 亚洲三级在线 | 中文字幕视频三区 | 欧美激情第28页 | 成年人免费电影在线观看 | 丁香九月婷婷 | 黄色精品在线看 | 国产一级二级视频 | 欧美日韩在线免费视频 | 天天干,天天射,天天操,天天摸 | 天天射天天干天天插 | 在线观看va| 国产精品毛片一区视频播不卡 | 美女免费网站 | 欧美日韩在线视频一区二区 | 欧美在线观看视频 | 91精品在线免费视频 | 蜜臀av在线一区二区三区 | 97在线观看免费 | 国产91小视频 | 久久精品欧美视频 | 国内精品久久久久久久久久久久 | 久久视了 | 在线天堂8√ | 最近最新中文字幕视频 | 国产精品久久99综合免费观看尤物 | 五月天久久久久 | 综合国产在线观看 | 九九热精品视频在线观看 | 99久久超碰中文字幕伊人 | 六月激情丁香 | 国产精品1区2区3区在线观看 | 日韩精品一区二区三区三炮视频 | 蜜臀一区二区三区精品免费视频 | 黄色a一级片 | 日本一区二区高清不卡 | a黄色| 久久人人爽人人爽人人 | 久久神马影院 | 欧美性黄网官网 | 丁香婷婷激情网 | 狠狠干狠狠艹 | 四虎成人免费观看 | 亚洲在线成人精品 | 亚洲视频在线视频 | 日韩午夜av | 成人免费视频a | 在线观看你懂的网址 | 免费国产在线精品 | 亚洲国产视频网站 | 美女视频黄的免费的 | 99国产精品| 天堂av一区二区 | 日韩欧美精品一区 | 久久人人爽人人爽 | 久久精品国产99 | 成人作爱视频 | 天天爽天天做 | 日韩欧美视频免费看 | 99精品久久久久 | 久久成人午夜视频 | 久久精久久精 | 韩国精品一区二区三区六区色诱 | 国产成视频在线观看 | 久久99久久99精品免视看婷婷 | 久久久午夜精品福利内容 | 国产免费视频一区二区裸体 | 日韩电影在线一区二区 | 亚洲.www| 日韩精品中文字幕有码 | 四虎影视av | 超碰在线人人爱 | 97超碰总站 | 婷婷丁香花五月天 | 色香网 | 国产九九精品视频 | 亚洲第一中文网 | 国产人在线成免费视频 | 一区二区三区电影在线播 | 在线超碰av | 国产大尺度视频 | 不卡的一区二区三区 | 日日操天天射 | 国产韩国日本高清视频 | 亚洲乱码国产乱码精品天美传媒 | 色综合婷婷久久 | 成年人免费在线观看网站 | 亚洲精品午夜一区人人爽 | 成人国产亚洲 | 九九久久久久久久久激情 | 成人黄色电影在线观看 | 免费看成人av | 国产精品专区h在线观看 | 成人午夜精品福利免费 | 国产精品一区二区免费视频 | 亚洲精品综合一二三区在线观看 | 亚洲狠狠婷婷综合久久久 | 中文字幕精品在线 | 亚洲黄色一级电影 | 九九涩涩av台湾日本热热 | 国产视频观看 | 欧美不卡在线 | 国产精品 中文字幕 亚洲 欧美 | 天天操天天干天天操天天干 | 久久久久久久影视 | 国产精品一区二区美女视频免费看 | 午夜狠狠干 | 久久夜色电影 | 亚洲日本色 | 欧美一区,二区 | www99久久 | 一区二区三区免费播放 | 国产精品每日更新 | 亚洲最新视频在线播放 | 国产香蕉97碰碰碰视频在线观看 | 国产精品麻豆三级一区视频 | 久久国内精品视频 | 国产日韩欧美在线影视 | 精品国产1区2区 | 操操操综合 | 久久精品国产99 | 日日爱网站 | 日韩高清一二区 | 美女网站视频色 | 久久久久久久久久久久电影 | 精品毛片一区二区免费看 | 99久久99久久精品免费 | 天天摸日日操 | 99色精品视频 | 亚洲精品视频在线播放 | 最新成人在线 | 91免费网| 人人干狠狠操 | www.夜夜爽 | 欧美一区二区三区在线播放 | 超碰在线人人草 | 在线观看免费视频 | 天天射天天拍 | 少妇视频在线播放 | 国产 欧美 在线 | 成年人免费观看在线视频 | 国产91精品在线播放 | 黄色一集片 | 欧美成人亚洲成人 | 国产精品美女久久久久久久网站 | 日韩欧美91 | 中文字幕在线播放一区 | 亚洲精品视频在线观看免费视频 | 国产久草在线观看 | 美女露久久| 91爱爱电影 | 999精品在线 | 99在线观看| 亚洲专区欧美专区 | 在线观看电影av | 18久久久| 天天操天天爱天天干 | 在线国产不卡 | 91九色视频导航 | 欧美日韩国产综合一区二区 | 西西444www大胆高清视频 | 久久有精品 | 亚洲欧美国内爽妇网 | 精品久久久久久亚洲综合网站 | 在线 国产 亚洲 欧美 | 午夜视频二区 | 精品视频一区在线 | 国产尤物在线观看 | 亚洲小视频在线 | 亚洲精品资源在线观看 | 在线观看日韩中文字幕 | 久久久久久久av | 中文有码在线 | 亚洲国产精品一区二区久久,亚洲午夜 | 中文字幕欲求不满 | 国内亚洲精品 | 色www免费视频 | 91麻豆精品国产91久久久久久 | 丝袜av网站 | 久久免费高清视频 | 99久久99久久精品国产片果冰 | 欧美精品在线观看免费 | 在线观看色视频 | 处女av在线 | 天天躁天天狠天天透 | 人人澡超碰碰 | 欧美贵妇性狂欢 | 久久综合影院 | 久久精品欧美一区二区三区麻豆 | 日韩在线看片 | 国产黄影院色大全免费 | 91在线91| 中文字幕在线精品 | 亚洲综合色av | 国产女人40精品一区毛片视频 | 久久在现视频 | 亚洲高清视频在线 | 一区二区三区电影 | 日韩理论影院 | 一区二区三区在线免费 | 日韩电影久久 | 国产精品久久久久av福利动漫 | 91久久爱热色涩涩 | 日韩中文在线观看 | 99久久婷婷国产综合亚洲 | 久久人人精品 | 色综合久久精品 | 日韩丝袜 | 中文字幕一区二区三区在线观看 | 国产高清视频色在线www | 亚州av网站大全 | 在线成人免费电影 | 一区中文字幕电影 | 17婷婷久久www| 国产视频 久久久 | 亚洲成人黄| 97精品国自产拍在线观看 | 三级视频片 | 99re视频在线观看 | av成人黄色 | 麻豆免费视频 | 成人在线视频在线观看 | 在线观看av网 | 国产精品99久久久久久人免费 | 中文字幕免费观看全部电影 | 亚洲国产精品va在线 | 玖玖在线资源 | 日韩区欠美精品av视频 | 国产va在线观看免费 | 欧美日韩不卡在线 | 97国产精品 | 亚洲成人黄色网址 | 亚洲免费一级电影 | 国产亚洲在线视频 | 成年人电影免费在线观看 | 91色蜜桃 | 欧美另类xxx| 欧洲视频一区 | 欧美 日韩精品 | 日韩a在线观看 | 色老板在线视频 | 成人黄色片免费看 | 懂色av一区二区三区蜜臀 | 久久免费国产精品1 | 久久精品8 | a天堂一码二码专区 | 日本资源中文字幕在线 | 91中文字幕在线播放 | 久草在线综合网 | 六月天综合网 | 亚洲欧洲精品在线 | 99re8这里有精品热视频免费 | 国产香蕉av | 日韩视频欧美视频 | 久久久免费观看视频 | 美女av免费看 | 国产视频精品久久 | 啪啪精品 | 狠狠色丁香 | 欧美一级视频在线观看 | 久久99精品久久久久蜜臀 | 日韩欧美一区二区在线观看 | 在线国产视频观看 | 日韩精品一区二区三区不卡 | 免费在线电影网址大全 | 五月宗合网 | 久久夜色精品国产欧美乱 | 99精品在线观看视频 | 日韩免费 | 国产明星视频三级a三级点|