成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識(shí)庫 > 在Spring中用select last_insert_id()時(shí)遇到問題

在Spring中用select last_insert_id()時(shí)遇到問題

熱門標(biāo)簽:宜賓外呼系統(tǒng)廠家 淮安自動(dòng)外呼系統(tǒng)開發(fā) 南通防封外呼系統(tǒng)運(yùn)營(yíng)商 地圖標(biāo)注原件 廣州市400電話辦理 修改高德地圖標(biāo)注 語音電話機(jī)器人營(yíng)銷方案 語音電話機(jī)器人缺點(diǎn) 百變地圖標(biāo)注
今天在使用MySQL時(shí)卻不知如何處理,插入記錄后不知怎樣獲得剛剛插入的id,查過文檔后發(fā)現(xiàn)了select last_insert_id(),在插入之后執(zhí)行此查詢,即可獲得自增id,喜出望外。
可用到自己的程序中之后卻得不到想要的結(jié)果,于是就懷疑到了Spring頭上,因?yàn)橥ㄟ^基本JDBC測(cè)試是沒有任何問題的,所以就去跟蹤Spring JDBC, 看過源碼之后才豁然開朗,原來Spring中如此獲得數(shù)據(jù)庫Connection的:Connection con DataSourceUtils.getConnection(getDataSource());, 哎,只能怪自己Spring掌握不夠好,所以就不能在執(zhí)行insert之后去執(zhí)行select last_insert_id()了,因?yàn)閟elect last_insert_id()是真對(duì)當(dāng)前Connection插入和更新操作的,那在Spring中如何獲得新增記錄的鍵值呢,沒有辦法只能去Google了。

發(fā)現(xiàn)了如下文章,來自IT168,標(biāo)題為《Spring應(yīng)用數(shù)據(jù)主鍵的生成策略盤點(diǎn)》,摘錄如下:


    在一般情況下,在新增領(lǐng)域?qū)ο蠛?,都需要獲取對(duì)應(yīng)的主鍵值。使用應(yīng)用層來維護(hù)主鍵,在一定程度上有利于程序性能的優(yōu)化和應(yīng)用移植性的提高。在采用數(shù)據(jù)庫自增主鍵的方案里,如果JDBC驅(qū)動(dòng)不能綁定新增記錄對(duì)應(yīng)的主鍵,就需要手工執(zhí)行查詢語句以獲取對(duì)應(yīng)的主鍵值,對(duì)于高并發(fā)的系統(tǒng),這很容易返回錯(cuò)誤的主鍵。通過帶緩存的DataFieldMaxValueIncrementer,可以一次獲取批量的主鍵值,供多次插入領(lǐng)域?qū)ο髸r(shí)使用,它的執(zhí)行性能是很高的。

使用數(shù)據(jù)庫的自增主鍵
    我們經(jīng)常使用數(shù)據(jù)的自增字段作為表主鍵,也即主鍵值不在應(yīng)用層產(chǎn)生,而是在新增記錄時(shí),由數(shù)據(jù)庫產(chǎn)生。這樣,應(yīng)用層在保存對(duì)象前并不知道對(duì)象主鍵值,而必須在保存數(shù)據(jù)后才能從數(shù)據(jù)庫中返回主鍵值。在很多情況下,我們需要獲取新對(duì)象持久化后的主鍵值。在Hibernate等ORM框架,新對(duì)象持久化后,Hibernate會(huì)自動(dòng)將主鍵值綁定到對(duì)象上,給程序的開發(fā)帶來了很多方便。

    在JDBC 3.0規(guī)范中,當(dāng)新增記錄時(shí),允許將數(shù)據(jù)庫自動(dòng)產(chǎn)生的主鍵值綁定到Statement或PreparedStatement中。使用Statement時(shí),可以通過以下方法綁定主鍵值:
int executeUpdate(String sql,int autoGeneratedKeys)
也可以通過Connection創(chuàng)建綁定自增值的PreparedStatement:
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)

    當(dāng)autoGeneratedKeys參數(shù)設(shè)置為Statement.RETURN_GENERATED_KEYS值時(shí)即可綁定數(shù)據(jù)庫產(chǎn)生的主鍵值,設(shè)置為Statement.NO_GENERATED_KEYS時(shí),不綁定主鍵值。下面的代碼演示了Statement綁定并獲取數(shù)據(jù)庫產(chǎn)生的主鍵值的過程:
Statement stmt = conn.createStatement(); String sql = "INSERT INTO t_topic(topic_title,user_id) VALUES(‘測(cè)試主題','123') "; stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); ①指定綁定表自增主鍵值 ResultSet rs = stmt.getGeneratedKeys(); if ( rs.next() ) { int key = rs.getInt();②獲取對(duì)應(yīng)的表自增主鍵值 }



Spring利用這一技術(shù),提供了一個(gè)可以返回新增記錄對(duì)應(yīng)主鍵值的方法:
int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)
org.springframework.jdbc.support.KeyHolder是一個(gè)回調(diào)接口,Spring使用它保存新增記錄對(duì)應(yīng)的主鍵,該接口的接口方法描述如下:
 Number getKey() throws InvalidDataAccessApiUsageException
當(dāng) 僅插入一行數(shù)據(jù),主鍵不是復(fù)合鍵且是數(shù)字類型時(shí),通過該方法可以直接返回新的主鍵值。如果是復(fù)合主鍵,或者有多個(gè)主鍵返回時(shí),該方法拋出 InvalidDataAccessApiUsageException。該方法是最常用的方法,因?yàn)橐话闱闆r下,我們一次僅插入一條數(shù)據(jù)并且主鍵字段類型為數(shù)字類型;

 Map getKeys() throws InvalidDataAccessApiUsageException
如果是復(fù)合主鍵,則列名和列值構(gòu)成Map中的一個(gè)Entry。如果返回的是多個(gè)主鍵,則該方法拋出InvalidDataAccessApiUsageException異常;

 List getKeyList():
如果返回多個(gè)主鍵,即PreparedStatement新增了多條記錄,則每一個(gè)主鍵對(duì)應(yīng)一個(gè)Map,多個(gè)Map構(gòu)成一個(gè)List。

    Spring為KeyHolder接口指代了一個(gè)通用的實(shí)現(xiàn)類GeneratedKeyHolder,該類返回新增記錄時(shí)的自增長(zhǎng)主鍵值。假設(shè)我們希望在新增論壇板塊對(duì)象后,希望將主鍵值加載到對(duì)象中,則可以按以下代碼進(jìn)行調(diào)整:

 
public void addForum(final Forum forum) { final String sql = "INSERT INTO t_forum(forum_name,forum_desc) VALUES(?,?)"; KeyHolder keyHolder = new GeneratedKeyHolder();①創(chuàng)建一個(gè)主鍵執(zhí)有者 getJdbcTemplate().update(new PreparedStatementCreator(){ public PreparedStatement createPreparedStatement(Connection conn) throws SQLException { PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, forum.getForumName()); ps.setString(2, forum.getForumDesc()); return ps; } },keyHolder); forum.setForumId(keyHolder.getKey().intValue());②從主鍵執(zhí)有者中獲取主鍵 }

     這樣,在調(diào)用addForum(final Forum forum)新增forum領(lǐng)域?qū)ο蠛?,forum將擁有對(duì)應(yīng)的主鍵值,方便后繼的使用。
在JDBC 3.0之前的版本中,PreparedStatement不能綁定主鍵,如果采用表自增鍵(如MySql的auto increment或SqlServer的identity)將給獲取正確的主鍵值帶來挑戰(zhàn)——因?yàn)槟惚仨氃诓迦霐?shù)據(jù)后,馬上執(zhí)行另一條獲取新增主鍵的查詢語句。表 1給出了不同數(shù)據(jù)庫獲取最新自增主鍵值的查詢語句:
       表 1 不同數(shù)據(jù)庫獲取新增加的主鍵值 

 

數(shù)據(jù)庫
獲取新增主鍵的查詢語句
DB2
IDENTITY_VAL_LOCAL()
Informix
SELECT dbinfo('sqlca.sqlerrd1') FROM TABLE>
Sybase
SELECT @@IDENTITY
SqlServer
SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY
MySql
SELECT LAST_INSERT_ID()
HsqlDB
CALL IDENTITY()
Cloudscape
IDENTITY_VAL_LOCAL()
Derby
IDENTITY_VAL_LOCAL()
PostgreSQL
SELECT nextval('TABLE>_SEQ')
   
    如果數(shù)據(jù)庫的并發(fā)率很高,比如在插入記錄后執(zhí)行查詢主鍵之前,數(shù)據(jù)庫又執(zhí)行了若干條插入記錄的SQL語句,這時(shí),通過表 1 返回的主鍵值就是最后一條插入語句的主鍵值,而非我們希望的主鍵值了。所以使用查詢語句獲取表自增鍵值是不安全的,這也是為什么有些數(shù)據(jù)庫(如 Oracle、Firebird)故意不提供自增鍵,而只提供序列的原因,序列強(qiáng)制要求你在新增記錄前,先獲取主鍵值。Oracle通過SELECT SEQUENCE_NAME>.nextval FROM DUAL獲取序列的下一個(gè)值,而FireBird通過SELECT GEN_ID(SEQUENCE_NAME> 1) FROM RDB$DATABASE獲取序列的下一個(gè)值。在10.4.1小節(jié)中,我們還將講解應(yīng)用層自增鍵的相關(guān)知識(shí)。


應(yīng)用層產(chǎn)生主鍵
    Spring JDBC提供了自增鍵以及行集的支持,自增鍵對(duì)象讓我們可以不依賴數(shù)據(jù)庫的自增鍵,在應(yīng)用層為新記錄提供主鍵值。在JDK 1.4中引入了RowSet,它允許在連接斷開的情況下操作數(shù)據(jù),在這節(jié)里,我們將介紹如何在Spring JDBC中使用RowSet。

自增鍵的使用
    一般數(shù)據(jù)庫都提供了自增鍵的功能,如MySql的auto_increment、SqlServerr的identity字段等。Spring允許你在應(yīng)用層產(chǎn)生主鍵值,為此定義了 org.springframework.jdbc.support.incrementer.DataFieldMaxValueIncrementer 接口,提供兩種產(chǎn)生主鍵的方案:第一,通過序列產(chǎn)生主鍵;第二,通過表產(chǎn)生主鍵。根據(jù)主鍵產(chǎn)生方式和數(shù)據(jù)庫的不同,Spring提供了若干實(shí)現(xiàn)類,如圖 1所示: 

      圖 1 DateFieldValueIncrementer繼承類圖
    根據(jù)不同的主鍵產(chǎn)生方式,可能需要配置表名、主鍵字段名或序列名等信息。下面,我們以O(shè)racle和MySql為例分別講解使用序列及表字段產(chǎn)生主鍵值的方式。

DataFieldMaxValueIncrementer接口定義了3個(gè)獲取下一個(gè)主鍵值的方法:
 int nextIntValue():獲取下一個(gè)主鍵值,主鍵數(shù)據(jù)類型為int;
 long nextLongValue():獲取下一個(gè)主鍵值,主鍵數(shù)據(jù)類型為long;
 String nextStringValue():獲取下一個(gè)主鍵值,主鍵數(shù)據(jù)類型為String;
    在其抽象實(shí)現(xiàn)類AbstractDataFieldMaxValueIncrementer中,提供了幾個(gè)重要的屬性,其中 incrementerName定義序列或主鍵表的名稱;如果返回的主鍵是String類型,則paddingLength屬性可能會(huì)派上用場(chǎng),它允許你指定返回主鍵的長(zhǎng)度,不足的部分前面補(bǔ)0。

    HsqlMaxValueIncrementer和MySQLMaxValueIncrementer兩個(gè)主鍵值產(chǎn)生器基于表進(jìn)行工作。通過 columnName屬性定義主鍵列的名字,通過cacheSize屬性定義緩存的主鍵個(gè)數(shù),當(dāng)內(nèi)存中的主鍵值用完后,產(chǎn)生器將一次性獲取 cacheSize個(gè)主鍵,這樣可以減少數(shù)據(jù)訪問的次數(shù),提高應(yīng)用的性能。

    我們通過DateFieldValueIncrementer從數(shù)據(jù)庫中獲取主鍵值來彌補(bǔ)這個(gè)缺陷。首先,調(diào)整PostJdbcDao的代碼,添加DateFieldValueIncrementer屬性,并通過它從序列中得到下一個(gè)主鍵值:
    代碼清單 13 使用DateFieldValueIncrementer產(chǎn)生主鍵
 
public class PostJdbcDao extends JdbcDaoSupport implements PostDao { private DataFieldMaxValueIncrementer incre; ①主鍵值產(chǎn)生器 public void addPost(final Post post) { … getJdbcTemplate().execute( sql,new AbstractLobCreatingPreparedStatementCallback( this.lobHandler) { protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException { ps.setInt(1, incre.nextIntValue());②獲取下一個(gè)主鍵值 … } }); } …//省略get/setter方法 }

在②處,我們通過incre.nextIntValue()獲取下一個(gè)主鍵值。


以序列方式產(chǎn)生主鍵值
    在Oracle數(shù)據(jù)庫中創(chuàng)建一個(gè)seq_post_id序列,使用這個(gè)序列為t_post提供主鍵值,以下是創(chuàng)建seq_post_id的腳本: 
 
create sequence seq_post_id increment by 1start with 1;


   接著,調(diào)整Spring的配置,使用OracleSequenceMaxValueIncrementer作為主鍵產(chǎn)生器:

 
bean id="incre" class="org.springframework.jdbc.support.incrementer.OracleSequenceMaxValueIncrementer">property name="incrementerName" value="seq_post_id"/> ①指定序列名 property name="dataSource" ref="dataSource"/> ②設(shè)置數(shù)據(jù)源 /bean>bean id="postDao" parent="dao" class="com.baobaotao.dao.jdbc.PostJdbcDao">property name="lobHandler" ref="oracleLobHandler"/>property name="incre" ref="incre"/> ③添加主鍵主鍵產(chǎn)生器 /bean>

  以表方式產(chǎn)生主鍵值 
 在Mysql中創(chuàng)建一張用于維護(hù)t_post主鍵的t_post_id表,以下是創(chuàng)建該表及插入初始化的SQL腳本:

 
create table t_post_id(sequence_id int) type = MYISAM;
insert into t_post_id values(0
);

    由于主鍵維護(hù)表的并發(fā)訪問量很大,所以最好將其聲明為MYISAM類型,此外需要為該表提供初始值,以便后續(xù)主鍵值在此之上進(jìn)行遞增。
調(diào)整為MySql數(shù)據(jù)庫后,我們僅需要對(duì)Spring配置進(jìn)行小小的調(diào)整就可以了:

 
bean id="incre"class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer">property name="incrementerName" value="t_post_id"/> ①設(shè)置維護(hù)主鍵的表名 property name="columnName" value="sequence_id"/>②用于生成主鍵值的列名 property name="cacheSize" value="10"/> ③緩存大小 property name="dataSource" ref="dataSource"/>/bean>bean id="postDao" parent="dao" class="com.baobaotao.dao.jdbc.PostJdbcDao">property name="lobHandler" ref="defaultLobHandler"/>property name="incre" ref="incre"/>/bean>
    incrementerName和columnName都很容易理解,cacheSize決定一次返回的主鍵個(gè)數(shù),這里我們?cè)O(shè)置為10。當(dāng)?shù)谝淮瓮ㄟ^ MySQLMaxValueIncrementer# nextIntValue()獲取主鍵值時(shí),MySQLMaxValueIncrementer將使t_post_id. sequence_id遞增10,而后續(xù)9次調(diào)用nextIntValue()方法時(shí),都從緩存中獲取主鍵值。直到第10次再次調(diào)用 nextIntValue()方法時(shí),才會(huì)再次將t_post_id. sequence_id字段值遞增10,如此循環(huán)反復(fù)。

小結(jié)
    主鍵的生產(chǎn)方式從產(chǎn)生地點(diǎn)上可以分為應(yīng)用層產(chǎn)生和數(shù)據(jù)庫產(chǎn)生兩種方式。應(yīng)用層借助數(shù)據(jù)庫的序列或表產(chǎn)生主鍵,這種方式可以保證程序的可移植性和安全性,同時(shí)可以通過緩存機(jī)制提高運(yùn)行效率。有些數(shù)據(jù)庫支持?jǐn)?shù)據(jù)表自增鍵的主鍵產(chǎn)生機(jī)制,在JDBC 3.0以前的版本中,無法通過Statement自動(dòng)獲取新增記錄的對(duì)應(yīng)主鍵。這時(shí)需要在插入數(shù)據(jù)后,馬上執(zhí)行一條數(shù)據(jù)庫相關(guān)的主鍵獲取SQL語句以得到對(duì)應(yīng)的主鍵值,在數(shù)據(jù)庫高并發(fā)的情況下,有可能獲取到不正確的主鍵值。在這種情況下,在插入數(shù)據(jù)前事先在應(yīng)用層準(zhǔn)備好主鍵值是很好的備選方案。


另外補(bǔ)充一點(diǎn)在SqlUpdate執(zhí)行update之前需設(shè)置setReturnGeneratedKeys(true);
您可能感興趣的文章:
  • Spring MVC 框架搭建配置方法及詳解
  • struts2+spring+hibernate分頁代碼[比較多]
  • Spring中的事務(wù)管理實(shí)例詳解
  • Spring事務(wù)管理只對(duì)出現(xiàn)運(yùn)行期異常進(jìn)行回滾
  • SpringMVC文件上傳 多文件上傳實(shí)例
  • 讀取spring配置文件的方法(spring讀取資源文件)
  • Spring實(shí)現(xiàn)文件上傳(示例代碼)
  • java Spring整合Freemarker的詳細(xì)步驟
  • spring快速入門實(shí)例教程
  • Spring測(cè)試 其實(shí)很簡(jiǎn)單

標(biāo)簽:南平 嘉峪關(guān) 通化 襄陽 南平 股票投資 池州 聊城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Spring中用select last_insert_id()時(shí)遇到問題》,本文關(guān)鍵詞  在,Spring,中用,select,last,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Spring中用select last_insert_id()時(shí)遇到問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于在Spring中用select last_insert_id()時(shí)遇到問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    人妻一区二区三区四区| 国产精品无码久久久久一区二区| 国产精品久久久久久久久久久久久久久久| 日韩成人在线播放| 国产一区二区三区视频免费观看| 91久久精品一区二区二区| 特色特色大片在线| 91sp网站在线观看入口| 亚洲熟妇一区二区三区| 芬兰videosfree性少妇| 91精品又粗又猛又爽| www精品美女久久久tv| 日本女人性生活视频| 中文字幕 久热精品 视频在线| 久久影视电视剧免费网站清宫辞电视| 国产一级大片| 成人av免费电影网站| 日本免费一二三区| 日韩精品视频免费| 五月天视频一区| 国产真实乱偷精品视频| 精品国产综合区久久久久久| 色婷婷激情视频| 国产成人欧美在线观看| 日韩欧美国产综合| 久久日文中文字幕乱码| 欧美裸体视频| 亚洲裸体俱乐部裸体舞表演av| 狠狠操图片视频| 国产在线自天天| 国产午夜精品全部视频在线播放| 国产免费av一区二区| 国精品产品一区| 国产精品区一区二区三区| 韩国一区二区视频| 欧美午夜激情影院| 欧美理论电影在线播放| 2021久久精品国产99国产精品| 久久成人在线视频| 尤物网在线观看| 成人性色生活片| 4444kk在线观看| 中文字幕一区二区三区不卡在线| 欧美一区二区三区久久综| 一出一进一爽一粗一大视频| 在线视频超级| 久久久精品久久久久特色影视| 女人裸体免费网站| 色嗨嗨av一区二区三区| 草草视频在线免费观看| 欧美亚洲国产精品| 久久久久国产精品麻豆| 国产精品自在自线| 免费高清视频精品| 午夜在线视频观看| 欧美一区二区三区系列电影| 国产女人av| 蜜桃极品自拍av| 在线观看国产中文字幕| 亚洲欧美黄色片| 亚洲aⅴ网站| 好吊色欧美一区二区三区| 香蕉视频在线免费| 国产不卡在线一区| 91精品国产色综合久久久蜜香臀| 二区三区不卡不卡视频| 最近中文视频在线| 一区二区三区在线影院| 极品少妇一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 欧美xxxxx精品| 中文字幕国产亚洲2019| 成人毛片18女人毛片| 亚洲无线码一区二区三区| 成人做爰视频网站| 免费在线看大片无需流量| 成人小视频在线播放| 五十度飞在线播放| 中文幕av一区二区三区佐山爱| 分分操这里只有精品| www国产精品视频| 免费看成年人视频在线观看| 亚洲精品国产精品国自产网站按摩| 国产一区二区免费在线观看| 中文字幕精品在线视频| 一二三四日本在线| 四虎成人精品在永久免费| 国产不卡在线视频| 亚洲色图久久久| 亚洲人成网站色ww在线| 欧美激情一级二级三级在线视频| 日本美女视频一区| 99在线免费观看视频| 日韩av在线免费观看不卡| 在线免费观看污| 国产精品美女久久久久aⅴ| 嫩草一区二区三区| 天天夜夜亚洲| 国产三级国产精品国产国在线观看| 色88888久久久久久影院| 欧美日韩精品综合在线| 午夜激情在线视频| 久久精品国产亚洲5555| 亚洲成人影院在线观看| 黄色电影在线免费观看| 欧美日韩激情小视频| 神马久久久久久久久久| 视频一区二区在线观看| 91在线免费观看| 欧美日韩精品一区二区天天拍小说| 天天干天天操天天做| 国产乱淫av免费| 超免费在线视频| 免费看啪啪网站| 亚洲国产精品精华液ab| 日韩激情av| 爱豆国产剧免费观看大全剧苏畅| 国产精品欧美一区二区三区不卡| 大桥未久av一区二区三区| eeuss国产一区二区三区四区| 91精品推荐| 久久国产露脸精品国产| 欧洲亚洲成人| 黄网站在线观看| 综合在线一区| 老司机免费视频| 香蕉网在线播放| 日本三级中国三级99人妇网站| 欧美一区二区福利视频| 裸体网站视频| 少妇av一区二区三区无码| 中文字幕欧美日本乱码一线二线| 免费的黄网站在线观看| 在线观看国产福利视频| 激情aⅴ欧美一区二区欲海潮| 亚洲最大福利网| 丁香婷婷综合激情| 永久av免费在线观看| 最新av在线播放| 综合天堂久久久久久久| 国产精品电影观看| 三级在线播放| 国产欧美综合一区二区三区| 亚洲另类xxxx| 国产成人免费在线观看不卡| 日韩欧美在线观看一区二区三区| 日韩有码片在线观看| 人妻激情偷乱频一区二区三区| 麻豆精品一区二区av白丝在线| 免费看av大片| 又大又硬又爽免费视频| 四虎影视永久免费观看| 亚洲网站在线观看| 波多野结衣中文一区| 免费成人美女女在线观看| 国内精品久久久久久99蜜桃| 尤蜜粉嫩av国产一区二区三区| 免费不卡av| 你懂的在线观看网站| 影音先锋国产在线| www.av视频在线观看| av在线一区不卡| 岛国成人av| 亚洲韩日在线| 精品久久久久国产| 亚洲国产精品字幕| 中文字幕+乱码+中文乱码www| 99精品在线观看视频| 久久人人爽爽爽人久久久| 好操啊在线观看免费视频| 66国产精品| 日本私人网站在线观看| a级片国产精品自在拍在线播放| 欧美日韩精品系列| 黄色免费观看| 6080午夜不卡| ●精品国产综合乱码久久久久| 精品一区免费| 免费电影网站在线观看| 日本韩国在线视频| 久久精品一本| 在线观看国产视频| 桃花网日韩影视在线观看视频| 99久久夜色精品国产亚洲1000部| 久久亚洲精品人成综合网| 欧美极品欧美精品欧美| 狠狠色噜噜狠狠狠8888米奇| www.亚洲视频.com| 全部孕妇毛片丰满孕妇孕交| 久久成人av少妇免费| 美女永久在线网站| 视频一区二区欧美| 蜜桃精品成人影片| 91久久久久久久久久久久久| 91精品国产91久久久久久不卡| 中文字幕亚洲情99在线| 99精品久久免费看蜜臀剧情介绍| 中文字幕免费高| 欧美亚洲激情视频| 中文字幕av中文字幕| 亚洲欧美激情小说另类| 色老板视频在线观看| 狠狠做六月爱婷婷综合aⅴ| 欧美黄色片免费观看| 欧美一区第一页| 日韩精品一区二区三区免费视频| 秋霞成人午夜伦在线观看| 欧美精品1区2区| 四虎精品欧美一区二区免费| а√天堂在线官网| 欲求不满的岳中文字幕| 亚洲国产中文字幕| 久久久精品国产一区二区三区| 午夜精产品一区二区在线观看的| gogo高清免费视频| 欧美v亚洲v综合v国产v仙踪林| 欧美华人在线视频| av在线播放网| 国产精品一区二区黑人巨大| 麻豆av在线导航| 青青青国产视频| 欧美freesex交免费视频| 国产三级欧美三级| 欧美午夜a级限制福利片| 日本中文字幕第一页| 午夜激情在线观看视频| 一区二区三区视频在线播放| 国产一区红桃视频| 九九九伊在线综合永久| 免费观看又色又爽又黄的网站| 天堂网www在线观看| 亚洲综合色视频| 国产精品日韩一区二区三区| 国产亚洲精品bv在线观看| 色999日韩国产欧美一区二区| 国产成人免费视频网站高清观看视频| 在线观看日韩一区| 精品成人免费自拍视频| av色综合久久天堂av色综合在| 极品少妇xxxx精品少妇偷拍| 欧美专区国产专区| 国产乱人乱偷精品视频| 欧美成人手机在线| 日皮视频免费观看| 亚洲第一区在线| 国产精品影视在线观看| 欧美视频一区二区| av中文字幕在线| 日本深夜福利视频| 超碰在线播放97| 日日橹狠狠爱欧美超碰| 日本妇女毛茸茸| 欧美乱大交xxxxx在线观看| 亚洲色在线视频| 久久这里精品| 2020天天干夜夜爽| 国内精品久久久久久中文字幕| 中文字幕人成人乱码亚洲电影| 97视频精彩视频在线观看| 亚欧洲精品视频| 91视频免费在线观看| www.久久久久久| 精品国产欧美日韩不卡在线观看| 亚洲欧美成人一区二区在线电影| 亚洲欧美国产日韩中文字幕| av免费在线观看网站| 午夜影视日本亚洲欧洲精品| 亚洲第一视频区| 国产少妇在线观看| 亚洲福利在线看| 欧美天堂视频| 青春草在线免费视频| 色欧美日韩亚洲| 亚洲午夜三级在线| 欧美熟妇一区二区| 国产成人aaa| 国产suv精品一区二区三区| 最近中文av字幕在线中文| 国产精彩视频在线观看免费蜜芽| 亚洲精品电影久久久| 亚洲一区二区高清视频| 超碰在线97av| 毛片一区二区三区四区| 国产美女裸体无遮挡免费视频| 久久国产精品99久久人人澡| 综合欧美视频一区二区三区| 欧美成人中文字幕在线| 糖心vlog精品一区二区| 国产精品国产精品国产专区不卡| 女人天堂在线视频| 99久久99久久免费精品蜜臀| 婷婷成人av| 国产精品欧美激情在线| 国产精品自产拍在线观| 一二三四中文字幕| 国产视频久久久久| 97超碰人人模人人爽人人看| 国产丝袜护土调教在线视频| 男人的天堂一区二区| 欧美区一区二区| 亚洲情综合五月天| 欧美日韩国产精品| free性欧美高清另类| 国产激情综合| 色综合视频一区二区三区日韩| 色又黄又爽网站www久久| 日韩一二三区不卡在线视频| aaa在线视频| 国产美女福利在线观看| 亚洲人高潮女人毛茸茸| 色老头久久综合| 欧美中文娱乐网| 国产黄a三级三级看三级| 国产午夜麻豆影院在线观看| 久久久久人妻精品一区三寸| 亚洲人成网站在线播| 亚洲国产综合久久精品小蝴蝶| 最近2019中文字幕一页二页| 久久全国免费久久青青小草| 三上悠亚激情av一区二区三区| 97久久精品一区二区三区的观看方式| 五月六月丁香婷婷| 国产免费福利| 免费不卡中文字幕视频| 欧美高清无遮挡| 国产女主播福利| 涩涩涩久久久成人精品| 欧亚av在线|