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

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

Java SE 6中JDBC 4.0的增強特性

瀏覽:170日期:2024-06-06 09:05:09
內容: Java SE 6包含了對Java數據庫互連(JDBC)API的一些增強特性。這些增強特性的版本將定為JDBC version 4.0。JDBC新特性的目的是提供更簡單的設計和更好的開發體驗。本文將概述JDBC 4.0的增強特性和為企業級Java開發人員帶來的好處。我們將通過一個用Apache Derby作為后臺數據庫的貸款處理應用范例來探究JDBC的新特性。版權聲明:任何獲得Matrix授權的網站,轉載時請務必保留以下作者信息和鏈接作者:feichangcai;feichangcai原文:http://www.matrix.org.cn/resource/article/2006-11-19/Mustang+JDBC_c8c66f03-77c2-11db-bdce-bdc029e475a1.html關鍵字:Mustang;JDBCJava SE 6.0Java SE 6.0版以兼容性、穩定性和品質作為設計目標。本版本中有不少值得關注的增強特性,特別是JMX、web services、腳本語言支持(采用Rhino腳本引擎JSR 223把JavaScript技術與Java源碼進行集成)、數據庫連接、支持annotations和安全部分。另外,在JDBC API中還有不少新的特性,包括RowId支持和新增的SQLException子類。JDBC 4.0的特性得益于Mustang中的Java SE 服務提供商機制,Java開發人員再也不必用類似Class.forName()的代碼注冊JDBC驅動來明確加載JDBC。當調用DriverManager.getConnection()方法時,DriverManager類將自動設置合適的驅動程序。該特性向后兼容,因此無需對現有的JDBC代碼作任何改動。通過對Java應用程序訪問數據庫代碼的簡化,使得JDBC 4.0有更好的開發體驗。JDBC 4.0同時也提供了工具類來改進數據源和連接對象的管理,也改進了JDBC驅動加載和卸載機制。有了JDBC 4.0傳承自Java SE 5.0 (Tiger)版對元數據的支持功能,Java開發人員可用Annotations明確指明SQL查詢。基于標注的SQL查詢允許我們通過在Java代碼中使用Annotation關鍵字正確指明SQL查詢字符串。這樣,我們不必查看JDBC代碼和他所調用的數據庫兩份不同的文件。例如,用一個名為getActiveLoans()方法在貸款處理數據庫中獲取一個活躍貸款清單,你可以添加@Query(sql='SELECT * FROM LoanApplicationDetails WHERE LoanStatus = 'A'')標注來修飾該方法。并且,最終版的Java SE 6開發包(JDK 6)以及其相應的執行期環境(JRE 6)會捆綁一個基于Apache Derby的數據庫。這使得Java開發人員無需下載、安裝和配置一款單獨的數據庫產品就能探究JDBC的新特性。JDBC 4.0中增加的主要特性包括:1. JDBC驅動類的自動加載2. 連接管理的增強3. 對RowId SQL類型的支持4. SQL的DataSet實現使用了Annotations5. SQL異常處理的增強6. 對SQL XML的支持 另外,對BLOB/CLOB 的改進支持以及對國際字符集的支持也是JDBC 4.0的特性。這些特性將在隨后章節中詳細討論。JDBC驅動自動加載在JDBC 4.0中,我們不必再使用Class.forName()方法明確加載JDBC驅動。當調用getConnection方法時,DriverManager會嘗試從初始化時已經加載的JDBC驅動程序庫中選擇合適的驅動,以及他在當前應用的同一個類加載器中明確加載使用過的驅動。DriverManager中的getConnection和getDrivers方法已作了改進,以支持Java SE 服務提供商機制(SPM)。根據SPM,所謂服務就是一組廣為人知的接口和抽象類的集合,而服務提供商就是對某一服務的特定實現。SPM還指明了服務提供商的配置文件存放于META-INF/services目錄下。JDBC 4.0的驅動程序庫必須包含META-INF/services/java.sql.Driver文件。該文件包含對java.sql.Driver 實現的JDBC驅動文件名。例如,通過JDBC驅動連接Apache Derby數據庫,META-INF/services/java.sql.Driver將含有以下路徑:org.apache.derby.jdbc.EmbeddedDriver我們再來快速地看一下如何使用這一新特性加載一個JDBC驅動管理。以下顯示的是我們用以加載JDBC驅動的典型范例代碼。這里我們假設連接的是Apache Derby數據庫,因為該數據庫將在本文隨后的范例應用中用到: Class.forName('org.apache.derby.jdbc.EmbeddedDriver'); Connection conn = DriverManager.getConnection(jdbcUrl, jdbcUser, jdbcPassword);但在JDBC 4.0中,我們不必寫Class.forName()這一行,我們只需要調用getConnection()方法取得數據庫連接。請注意,僅在完全獨立的模式下可使用該方法取得數據庫的連接。如果你使用一些類似數據庫連接池等技術管理連接,那么代碼將有所不同。連接管理在JDBC 4.0之前,我們依靠JDBC URL來定義一個數據源連接。現在有了JDBC 4.0,我們只需為標準連接工廠機制提供一組參數,就能獲取與任何數據源的連接。Connection和Statement接口增添的新方法為池環境中管理Statement對象提供了更好的連接狀態跟蹤機制和更大的靈活度。元數據工具(JSR-175)被用來管理活躍連接。我們還能獲得元數據信息,如:活躍連接狀態,并能指明XA事務的某一連接是標準式(Connection,在獨立應用的情況下)、池式(PooledConnection)還是分布式(XAConnection)。該接口僅在諸如WebLogic、WebSphere和JBoss等Java EE應用服務器的事務管理中使用。RowId支持JDBC 4.0增加了RowID接口以支持ROWID數據類型,Oracle和DB2數據庫支持該數據類型。在你需要把大量缺少唯一標識符字段的查詢記錄放入一個不允許重復對象的Collection容器(如Hashtable)的情況下,RowId很有用。我們可以用ResultSet的getRowId()方法獲取RowId,用PreparedStatement的setRowId()方法在查詢中使用RowId。關于RowId對象需要記住的一件重要事項是,RowId值在數據源之間不可移植。當在PreparedStatement和ResultSet中單獨使用set或update方法時,需要想到指明數據源。因此,RowId對象不應被不同的Connection和ResultSet對象共享。DatabaseMetaData中的getRowIdLifetime()方法可被用來確定RowId對象的有效存活時間。該方法的可能返回值如表1所列:RowId值 描述ROWID_UNSUPPORTED Doesn't support ROWID data type.ROWID_VALID_OTHER Lifetime of the RowID is dependent on database vendor implementation.ROWID_VALID_TRANSACTION Lifetime of the RowID is within the current transaction as long as the row in the database table is not deleted.ROWID_VALID_SESSION Lifetime of the RowID is the duration of the current session as long as the row in the database table is not deleted.ROWID_VALID_FOREVER Lifetime of the RowID is unlimited as long as the row in the database table is not deleted.基于標注的SQL查詢JDBC 4.0對標注(Java SE 5新增)作了進一步規范和補充,他允許開發人員不必再寫大量代碼就能達到聯系SQL查詢和Java類的目的。并且,通過使用Generics(JSR 014)和元數據(JSR 175) API,我們只要指明查詢的輸入和輸出參數就能將SQL查詢與Java對象進行關聯。我們還可以將查詢結果捆綁在Java類上以加快查詢輸出的處理。將查詢對象置于Java對象之中,我們可以不必像往常一樣寫所有代碼。在Java代碼中指明SQL查詢,經常用到兩種標注:Select標注Select標注用于在Java類中指明一個選擇查詢,使get方法能從數據庫表中取回數據。表2顯示的是Select標注的不同屬性及其作用:變量 類型 描述sql String SQL Select query string.value String Same as sql attribute.tableName String Name of the database table against which the sql will be invoked.readOnly, connected, scrollable Boolean Flags used to indicate if the returned DataSet is read-only or updateable, is connected to the back-end database, and is scrollable when used in connected mode respectively.allColumnsMapped Boolean Flag to indicate if the column names in the sql annotation element are mapped 1-to-1 with the fields in the DataSet.這里有一個應用Select標注從貸款數據庫中獲取所有活躍貸款的例子:interface LoanAppDetailsQuery extends BaseQuery { @Select('SELECT * FROM LoanDetais where LoanStatus = 'A'') DataSet getAllActiveLoans();}Sql標注同樣允許I/O參數(參數標記以一個問號后跟一個整型數據表示)。這里是一個參數化sql查詢的例子:interface LoanAppDetailsQuery extends BaseQuery { @Select(sql='SELECT * from LoanDetails where borrowerFirstName= ?1 and borrowerLastName= ?2') DataSet getLoanDetailsByBorrowerName(String borrFirstName, String borrLastName);}Update標注Update標注用于修飾Query接口方法以更新數據庫表中的一條或多條記錄。Update標注必須包含一個sql標注類型元素。這里是一個Update標注的例子:interface LoanAppDetailsQuery extends BaseQuery { @Update(sql='update LoanDetails set LoanStatus = ?1 where loanId = ?2') boolean updateLoanStatus(String loanStatus, int loanId);}SQL異常處理的增強特性異常處理是Java編程的一個重要部分,特別是對后臺關系數據庫進行連接或查詢時。SQLException是我們用以指出與數據庫相關錯誤的類。JDBC 4.0在SQLException處理中有不少增強。為了在處理SQLException時獲得更好的開發體驗,JDBC 4.0版作了如下增強:1. 新的SQLException子類2. 對因果關系的支持3. 對改進的for-each循環的支持新的SQLException類SQLException的新子類提供了一種方法,使Java開發人員能寫出更方便改動的錯誤處理代碼。JDBC 4.0介紹了兩個新的SQLException型別:• SQL non-transient exception • SQL transient exception Non-Transient Exception:除非修正引發SQLException異常的代碼,否則該異常在再次嘗試相同JDBC操作失敗后被拋出。表3顯示了JDBC 4.0新增的SQLNonTransientException異常子類(SQL 2003規范中定義了SQLState類的值):Exception class SQLState valueSQLFeatureNotSupportedException 0ASQLNonTransientConnectionException 08SQLDataException 22SQLIntegrityConstraintViolationException 23SQLInvalidAuthorizationException 28SQLSyntaxErrorException 42Transient Exception:當先前執行失敗的JDBC操作在沒有任何應用級功能干涉的情況下可能成功執行時,該異常被拋出。繼承自SQLTransientException的新異常如表4所列:Exception classSQLState valueSQLTransientConnectionException 08SQLTransactionRollbackException 40SQLTimeoutException None因果關系SQLException類現在支持Java SE鏈式異常機制(又稱因果工具),它使我們能在一個JDBC操作中處理多條SQLException異常(如果后臺數據庫支持多條異常特性)。這種情形發生在執行一條可能會拋出多條SQLException異常的語句時。我們可以調用SQLException中的getNextException()方法在異常鏈中進行迭代。這里是一些處理getNextException()因果關系的范例代碼:catch(SQLException ex) { while(ex != null) { LOG.error('SQL State:' + ex.getSQLState()); LOG.error('Error Code:' + ex.getErrorCode()); LOG.error('Message:' + ex.getMessage()); Throwable t = ex.getCause(); while(t != null) { LOG.error('Cause:' + t); t = t.getCause(); } ex = ex.getNextException(); }}增強的For-Each環Java SE 5中,SQLException類通過實現Iterable接口,增加了for-each循環支持的特性。這個循環的軌跡將會包括SQLException和其異常成因。這里的代碼片斷展示了SQLException中增加的增強型for-each環特性。catch(SQLException ex) { for(Throwable e : ex ) { LOG.error('Error occurred: ' + e); }}對國際字符集轉換的支持以下是JDBC類處理國際字符集的新增特性:1. JDBC數據類型:新增NCHAR、NVARCHAR、LONGNVARCHAR和NCLOB數據類型。2. PreparedStatement:新增setNString、setNCharacterStream和setNClob方法。3. CallableStatement:新增getNClob、getNString和getNCharacterStream方法。4. ResultSet:ResultSet接口新增updateNClob、updateNString和updateNCharacterStream方法。對大對象(BLOBs and CLOBs)支持的改進以下是JDBC 4.0處理LOBs的新增特性:1. Connection:新增方法(createBlob()、createClob()和createNClob())以創建BLOB、CLOB和NCLOB對象新實例。2. PreparedStatement:新增方法setBlob()、setClob()和setNClob()以使用InputStream對象插入BLOB對象,使用Reader對象插入CLOB和NCLOB對象。3. LOBs:在Blob、Clob和NClob接口中新增方法(free())以釋放這些對象所持有的資源。現在,讓我們來看一看java.sql和javax.jdbc包的新類,以及他們所提供的服務。JDBC 4.0 API:新類RowId (java.sql)正如先前所介紹的,該接口是對數據庫中SQL ROWID值的展示。ROWID是一種SQL內建的數據類型,用來標識數據庫中的一行特定數據。ROWID經常用于從表中返回查詢結果,而這些結果行往往缺少唯一ID字段。getRowId和setRowId等CallableStatement、PreparedStatement和ResultSet接口的方法允許程序員訪問SQL ROWID值。RowId接口還提供了一個方法(叫getBytes())把ROWID值作為一個byte型數組返回。DatabaseMetaData接口有一個名為getRowIdLifetime的新方法,用以確定某一RowId對象的存活時間。RowId的存活時間范圍可以是如下三種類型:1. 創建RowId的數據庫事務持續時間2. 創建RowId的會話持續時間3. 數據庫對應的記錄還未被刪除的持續時間DataSet (java.sql)DataSet接口提供了對執行SQL Query后所返回數據類型的安全檢查。DataSet還可以運行在連接或非連接模式。在連接模式下,DataSet類似于ResultSet的功能;而在非連接模式下,他類似于CachedRowSet的功能。由于DataSet繼承自List接口,因此我們能對查詢返回的記錄行進行迭代。對已有的類,JDBC 4.0也新增了不少方法。比如,Connection新增了createSQLXML和createSQLXML方法,ResultSet新增了getRowId方法。范例應用本文所示的范例應用是一個貸款處理應用軟件,他有一個貸款搜索頁面,用戶可以通過輸入貸款ID提交查詢表,以獲取貸款詳情。貸款搜索頁面調用一個控制器對象,而該對象又調用一個DAO對象訪問后臺數據庫,以取回貸款詳情。這些詳情包括貸款人、貸款數額、貸款截至日期等信息,并顯示在貸款詳情屏幕上。后臺數據庫中,我們有一個名為LoanApplicationDetails的表,來存儲貸款軟件的詳情。該范例應用的用例是通過指定貸款ID來獲取貸款詳情。當貸款已經登記并將抵押物與利息掛鉤后,貸款詳情就可以被獲取。表5顯示了貸款處理應用軟件項目的詳情。Name ValueProject Name JdbcAppProject Directory c:devprojectsJdbcAppDB Directory c:devdbserversapachederbyJDK Directory c:devjavajdk_1.6.0IDE Directory c:devtoolseclipseDatabase Apache Derby 10.1.2.1JDK 6.0 (beta 2 release)IDE Eclipse 3.1Unit Testing JUnit 4Build Ant 1.6.5下表所列的是我們連接貸款詳情Apache Derby數據庫所需的JDBC參數。這些參數存放于一個名為derby.properties的文本文件中,并置于項目的etc/jdbc目錄下(見表6)。Name ValueJDBC Driver File LoanAppMETA-INFservicesjava.sql.driverDriver org.apache.derby.ClientDriverURL jdbc:derby:derbyDBUser Id user1Password user1請注意:Apache Derby數據庫提供了兩種JDBC驅動:嵌入式驅動(org.apache.derby.jdbc.EmbeddedDriver)和客戶端/服務器驅動(org.apache.derby.jdbc.ClientDriver)。我在范例應用中使用客戶端/服務器版驅動。以下是使用ij工具來啟動Derby數據庫服務器并創建新數據庫的命令。要啟動Derby網絡服務器,需開啟一個命令行窗口,并運行如下命令(請根據你本機的環境改寫DERBY_INSTALL和JAVA_HOME環境變量)。set DERBY_INSTALL=C:devdbserversdb-derby-10.1.2.1-binset JAVA_HOME=C:devjavajdk1.6.0set DERBY_INSTALL=C:devdbserversdb-derby-10.1.3.1-binset CLASSPATH=%CLASSPATH%;%DERBY_INSTALL%libderby.jar; %DERBY_INSTALL%libderbytools.jar; %DERBY_INSTALL%libderbynet.jar;cd %DERBY_INSTALL%frameworksNetworkServerbinstartNetworkServer.bat要連接數據庫服務器并創建測試數據庫,需開啟另一個命令行窗口并運行以下命令。請確保DERBY_INSTALL和JAVA_HOME環境變量符合你本機的環境。set JAVA_HOME=C:devjavajdk1.6.0set DERBY_INSTALL=C:devdbserversdb-derby-10.1.3.1-binset CLASSPATH=%DERBY_INSTALL%libderbyclient.jar; %DERBY_INSTALL%libderbytools.jar;.%JAVA_HOME%binjava org.apache.derby.tools.ijconnect 'jdbc:derby://localhost:1527/LoanDB;create=true';測試要編譯Java源代碼,classpath需包括derby.jar和junit4.jar文件,這兩個文件在項目的lib目錄下。Classpath還需包括etc、etc/jdbc和etc/log4j目錄,這樣應用程序才能訪問JDBC屬性文件和Log4J配置文件。我創建了一個Ant構建腳本(在JdbcApp/build目錄下)來自動完成編譯和打包Java源代碼的工作。用于測試貸款詳情數據庫訪問對象的測試類名為LoanAppDetailsDAOTest。我們傳入貸款ID和貸款人參數就可以獲取貸款詳情。以下部分顯示了JDBC 4.0中自動加載JDBC驅動和基于標注的SQL查詢特性的代碼范例。JDBC驅動的自動加載BaseDAO抽象類有一個名為getConnection的方法用以獲得一個數據庫連接。以下代碼片斷顯示了該方法(注意,我們不必注冊JDBC驅動)。只要java.sql.Driver文件中有合適的驅動程序類名(org.apache.derby.jdbc.ClientDriver),JDBC驅動將被自動加載。protected Connection getConnection() throws DAOException { // Load JDBC properties first if (jdbcUrl == null || jdbcUser == null || jdbcPassword == null) { loadJdbcProperties(); } // Get Connection Connection conn = null; try { conn = DriverManager.getConnection(jdbcUrl, jdbcUser,jdbcPassword); } catch (SQLException sqle) { throw new DAOException('Error in getting a DB connection.',sqle); } return conn;}SQL標注LoanAppDetailsQuery接口有標注了的SQL查詢,用以獲取活躍貸款清單(criteria is loanstatus='A')和某貸款人的貸款詳情(在一個貸款人有多筆貸款的情況下)。在上文中,我們已經了解過了這些SQL標注。這里的范例代碼顯示了我們如何使用標注來調用已定義的SQL查詢。public DataSet getAllActiveLoans() throws Exception { // Get Connection Connection conn = getConnection(); LoanAppDetailsQuery query = null; DataSet loanDetails = null; query = QueryObjectFactory.createQueryObject( LoanAppDetailsQuery.class, conn); loanDetails = query.getAllActiveLoans(); return loanDetails;}public DataSet getLoanDetailsByBorrowerName( String borrFirstName, String borrLastName) throws Exception { // Get Connection Connection conn = getConnection(); LoanAppDetailsQuery query = null; DataSet loanDetails = null; query = QueryObjectFactory.createQueryObject( LoanAppDetailsQuery.class, conn); loanDetails = query.getLoanDetailsByBorrowerName( borrFirstName,borrLastName); return loanDetails;}結論JDBC 4.0在SQL方面為開發者提供了更好的開發體驗。JDBC 4.0的另一個目標是為API增加更豐富的工具以提供企業級JDBC特性管理JDBC資源。并且,JDBC 4.0 API還提供了JDBC驅動的移植方式,使其符合J2EE連接器架構(JCA)規范。這為JDBC廠商提供了向JDBC連接器遷移的能力。在面向企業服務的架構(SPA)中使用JDBC數據源,該移植方式很重要。在SOA中,JDBC數據源可被部署在另一個企業服務總線(ESB)架構內,而不需要為JDBC數據源另寫一份ESB實現代碼。本文中,我們了解了RowId支持,JDBC驅動加載和基于標注的SQL等JDBC 4.0的增強特性。未來,JDBC 4.0還將增加更多特性以支持SQL:2003。請參閱特性文檔,以獲取更多有關JDBC 4.0特性的信息。ResourcesMatrix-與Java共舞Sample Application Code Srini Penchikala是Flagstar Bank的一位信息系統問題專家。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd Java SE 6包含了對Java數據庫互連(JDBC)API的一些增強特性。這些增強特性的版本將定為JDBC version 4.0。JDBC新特性的目的是提供更簡單的設計和更好的開發體驗。本文將概述JDBC 4.0的增強特性和為企業級Java開發人員帶來的好處。我們將通過一個用Apache Derby作為后臺數據庫的貸款處理應用范例來探究JDBC的新特性。版權聲明:任何獲得Matrix授權的網站,轉載時請務必保留以下作者信息和鏈接作者:feichangcai;feichangcai
標簽: Java
相關文章:
主站蜘蛛池模板: 久久亚洲成人网 | 亚洲精品1 | av福利网址 | 色涩网站 | 狼人综合av | 乱亲女秽乱长久久久 | 午夜欧美激情 | 国产成人自拍视频在线 | 国产精品视频第一页 | 影音先锋在线资源无码 | 色噜噜狠狠狠狠色综合久 | 国产精品美女乱子伦高 | 一区二区三区国产 | 亚州男人的天堂 | 欧美福利视频在线 | 亚洲暴爽av天天爽日日碰 | 久久99精品久久久久久按摩秒播 | 一级肉体全黄裸片高潮不断 | 色性网| 日韩中文一区二区 | 国产精品对白交换视频 | 中文字幕日韩精品亚洲一区 | 九九综合久久 | 狠狠色丁香久久婷婷综合_中 | 亚洲欧美日韩综合在线 | 少妇欧美激情一区二区三区 | 欧美黄色片免费看 | 婷婷午夜激情 | 男女做爰猛烈叫床爽爽免费网站 | 久草视频在线播放 | 国产福利视频在线观看 | 深夜福利视频在线播放 | 免费黄色片网站 | 一本无码人妻在中文字幕免费 | 婷婷五月综合激情 | 97人人超碰国产精品最新 | yp在线观看视频网址入口 | 欧美国产综合 | 国产成人亚洲精品自产在线 | 亚洲第一视频在线播放 | 成人h在线| 91小视频在线 | 伊人久久久久久久久 | 男人天堂网av | 午夜夜伦鲁鲁片六度影院 | 日韩毛片免费无码无毒视频观看 | 国产精品毛片一区二区 | 韩国午夜理论在线观看 | 国内精品视频在线 | 亚洲欧美综合精品久久成人网无毒不卡 | 在线中文字幕一区二区 | 男女一边摸一边做爽视频 | 高h禁伦1v1喂奶 | 日本少妇全身按摩做爰5 | 欧洲一区二区视频 | 美女在线网站 | 国产精品av久久久久久小说 | 又大又长又粗又爽又黄少妇视频 | 最全aⅴ番号库 | 青青草国产精品 | 国产又黄又大视频 | 天堂av手机版 | 成人深夜免费视频 | 国产精品36p | 青青草伊人 | 日韩中文字幕高清 | 超碰在线亚洲 | 免费毛片手机在线播放 | 欧美久草在线 | 99热亚洲 | 欧美日韩国产成人高清视频 | 又大又黄又爽视频一区二区 | 99国产精品久久久久久久夜 | 日日射视频 | 国产毛片18片毛一级特黄 | yy6080久久伦理一区二区 | 女仆乖h调教跪趴1v1 | 黄色免费视屏 | 免费在线色 | 亚洲欧洲在线视频 | 狼人伊人久久 | 国产成人久久精品激情 | 国产午夜精品一区二区三 | 爱做久久久久久 | aa视频网站 | 91av在线免费视频 | 中文字幕一区二区免费 | 亚洲一区二区三区av天堂 | 日批日韩在线观看 | 日日日日日日bbbbbb | 蜜桃视频一区 | 91青楼传媒秘入口 | 天海翼一二三区 | 亚欧在线观看视频 | 亚洲精品成人悠悠色影视 | 麻豆av传媒蜜桃天美传媒 | 久久久久久久久淑女av国产精品 | 67194在线免费观看 | 国产最新自拍视频 | 亚洲一区二区三区 | 国产美女一区二区三区在线观看 | 国产偷窥盗摄一区二区 | 免费毛片无需任何播放器 | 欧美人与性禽动交情品 | 亚洲综合在线播放 | 久久久久国产精品人妻aⅴ毛片 | 91麻豆精产国品一二三产区区 | 欧美成人免费观看视频 | 日韩精品无码中文字幕一区二区 | 国产精品成人亚洲一区二区 | 成人三级在线视频 | 在线看亚洲| 亚洲精品一 | 久久久人成影片免费观看 | 亚洲成人av网址 | 亚洲精品日日夜夜 | 国产91对白在线播放丿 | 噜噜啪啪 | 亚洲精品乱码久久久久久久久久久久 | 在线免费h| 欧美美女一区二区 | 动漫精品一区 | 日韩a∨精品日韩在线观看 免费特级黄毛片 | 毛片美女| 天天摸天天碰天天添 | 国内丰满熟女出轨videos | 一本色道88久久加勒比精品 | 91看片淫黄大片一级在线观看 | 午夜欧美精品久久久久久久 | 中国女人和老外的毛片 | 在线97| 美国一级大黄一片免费中文 | 亚洲欧美日本韩国 | 岳狂躁岳丰满少妇大叫 | 岛国成人在线 | 亚洲色无码专区一区 | 超碰在线视屏 | 爱情岛论坛线路一区二区 | 日本视频免费在线播放 | 成人一区在线观看 | 人人妻人人添人人爽欧美一区 | 大黄专集在线观看 | 成人免费网站在线观看 | av毛片久久久久午夜福利hd | 欧美日韩欧美 | 成人短视频在线免费观看 | 国产乱码精品一区二区三区爽爽爽 | 日韩av在线永久免费 | 成人在线视频网站 | 色网站免费观看 | 久久久久久久久久久一区二区 | 牛牛在线视频 | 国产精品免费一区二区 | 亚洲爽爽爽| 国产精品欧美精品 | 国产乱子伦农村xxxx | 日本黄色免费网站 | 久久久无码精品午夜 | 国产丝袜精品视频 | 欧美综合在线观看 | 日韩小视频在线 | 一区二区av在线 | 免费欧美黄色片 | 九一av | 狠狠色婷婷狠狠狠亚洲综合 | 日色网站| 国产免费小视频 | 黄色大片黄色大片 | 夜夜骑夜夜 | 麻豆乱码国产一区二区三区 | 成人涩涩网站 | 国产视频一区二区三区在线观看 | 中文字幕丰满乱孑伦无码专区 | 91久久在线| 五月婷六月丁香狠狠躁狠狠爱 | 亚洲成在人线在线播放 | 涩涩涩涩涩涩涩涩涩涩 | 亚洲精品性视频 | 一区二区高清 | 丰满大肥婆肥奶大屁股 | 成人在线观看免费视频 | 国产china男男激情 | 涩涩国产| 极品美女穴 | 粗暴肉开荤高h文农民工免费视频 | 国产98在线 | 免费、 | 爱吃波客今天最新视频 | 91露脸的极品国产系列 | 久久综合久久自在自线精品自 | 成年人黄色片 | 国产欧洲精品亚洲午夜拍精品 | 一本久久a久久精品亚洲 | 操碰人人 | 久久偷看各类wc女厕嘘嘘偷窃 | 无码人妻aⅴ一区二区三区69岛 | 91原创视频在线观看 | 国产高潮好爽受不了了夜夜做 | 亚洲午夜一区二区 | 欧美日韩生活片 | www.中文字幕在线观看 | 日本最新免费二区 | 91麻豆国产 | 色综合天天综合狠狠爱 | 亚洲欧洲美洲精品一区二区三区 | 一线毛片 | 国产成人精品aa毛片 | 尹人香蕉久久99天天拍 | 丰满岳乱妇在线观看中字无码 | 内射人妻视频国内 | 丰满少妇人妻久久久久久 | 曰本无码人妻丰满熟妇啪啪 | 国产精品无码无在线观看 | 日韩午夜高清 | 亚洲中文无码a∨在线观看 在线不卡日本v二区到六区 | 亚洲精品免费看 | 99久热在线精品 | 日韩综合 | 亚洲欧美激情小说另类 | 成人美女黄网站色大免费的 | 免费做a爰片久久毛片a片 | 亚洲国产精品视频在线观看 | 第一次破处视频 | 超碰97av在线 | 波多野结衣中文字幕久久 | 伊人一级 | 国产精品久久久久久52avav | 6699嫩草久久久精品影院竹菊 | 99久久久无码国产aaa精品 | 男人天堂国产 | 国色天香乱码 | 人妻熟女欲求不满在线 | 色噜噜在线播放 | 中文字幕人妻无码一区二区三区 | 一本色综合网久久 | 91蝌蚪在线| 在线观看吃瓜av网站 | 久夜精品 | 欧美一区二区三区四区在线观看地址 | 手机在线精品视频 | 久久国产精品久久久久 | 亚洲国产精品毛片av不卡在线 | 久久影院一区 | 婷婷激情影院 | www成年人视频 | 狠狠久久| 极品在线播放 | 日本爽妇网 | 男女调教视频 | 国产熟妇久久777777 | 最近在线更新8中文字幕免费 | 97视频免费在线观看 | 男人添女人下部高潮全视频 | 国产精品久久午夜夜伦鲁鲁 | 色黄网站aaaaaa级毛片 | 午夜视频 | 肥臀熟女一区二区三区 | 玖玖玖精品 | 精品久久九九 | 尹人色 | 久久精品国产清自在天天线 | k频道国产在线观看 | 日韩一区二区在线观看视频 | 亚洲多毛妓女毛茸茸的 | 少妇av在线播放 | 欧美最猛性xxxxx免费 | 国产对白受不了了中文对白 | 国产人妻精品午夜福利免费 | 亚洲高清色图 | 激情五月婷婷网 | 最新色网站 | 亚洲欧洲免费 | 国模精品视频一区二区 | 色欧洲 | 亚洲女同一区二区 | youjizz麻豆| 娇小xxxx性开放国产精 | 91久久国产涩涩涩涩涩涩 | 国产91丝袜在线播放 | 欧美一级视频免费观看 | 国产亚洲精品久久久网站好莱 | 亚洲视频综合 | 成人免费午夜视频69影院 | 国模叶桐尿喷337p人体 | 一级大毛片 | 国产情侣主伺候绿帽男m | 狠狠干网 | 国产午夜成人av在线播放 | 久久6精品 | 久久精品人成免费 | 91精品久久久久久久久久久 | 精品久久久久久久 | 国产成人综合色在线观看网站 | 亚洲免费人成在线视频观看 | 四虎影库| 午夜av无码福利免费看网站 | 欧美 亚洲 中文 国产 综合 | 国产88av| 视频在线观看免费大片 | 懂色av影视一区二区三区 | 亚洲欧美综合一区二区三区 | 欧美色图在线视频 | 日韩精品啪啪 | а天堂中文在线官网在线 | 国产成人免费观看久久久 | 中国性满足hd老少配 | 亚洲国产成人一区二区精品区 | 不卡的一区二区 | 伊人综合影院 | 天天干天天色综合 | 污污内射在线观看一区二区少妇 | 一级特黄aa大片免费播放 | 午夜在线观看av | 98成人网| 天天干夜夜干 | 国产五月 | 国产精品欧美激情在线 | 国产精品久久香蕉免费播放 | 天天综合网91 | 动漫av永久无码精品每日更新 | 欧美videos另类精品 | 久久综合9988久久爱 | 午夜在线视频免费观看 | 天堂mv在线mv免费mv香蕉 | 国产精品视频入口麻豆 | 好吊色视频988gao在线观看 | 国产一二在线 | 日韩欧美在线一级 | 久久久久久久久嫩草精品乱码 | 国产原创在线视频 | 国产视频精选 | 欧美日韩国产一区二区 | 丁香五月网久久综合 | 国产精品女同一区二区 | 国产乱淫av片免费 | 爱情岛免费永久网站 | 中文字幕丰满乱孑伦无码专区 | 肉体粗喘娇吟国产91 | 国产馆在线视频 | 久久精品国产99久久6 | 麻豆av福利av久久av | 天天舔天天舔 | 噜噜噜狠狠夜夜躁精品仙踪林 | 伊人国产在线观看 | 国产精品www | 色妇av| 五月天国产精品 | 老头糟蹋新婚少妇系列小说 | 国产系列精品av | 欧美高清一级 | 狠狠色噜噜狠狠狠狠色综合网 | 国产精品乱码久久久 | 国产传媒一区 | 成人免费ā片在线观看 | 日韩欧美一区在线观看 | 免费一级毛片在线观看 | 欧美精品videossex少妇 | 黄色影片免费 | 国产精品99爱免费视频 | 韩国三级少妇高潮在线观看 | 国产全肉乱妇杂乱视频 | 二男一女一级一片 | 日本少妇网站 | 中文韩国午夜理伦三级好看 | 成人免费的视频 | 色婷婷综合久久 | 日本欧美高清视频 | 欧美日韩精品区 | a级毛片古装在线播放 | 91在线视频国产 | 综合色吧| 国产精品视频一区二区三区不卡 | 狠狠干香蕉 | www国产成人免费观看视频,深夜成人网 | 伊人精品影院 | 精品国产不卡一区二区三区 | 日本欧美色十大禁片毛片 | 国产无套内射又大又猛又粗又爽 | 91成人在线播放 | 亚洲精品久久国产高清 | 一级黄色性生活片 | 免费精品久久久久久久一区二区 | 好吊妞无缓冲视频观看 | 国产乱人偷精品人妻a片 | 怡红院免费的全部视频 | 精品动漫3d一区二区三区免费版 | 日本伊人精品一区二区三区 | 亚洲熟妇丰满大屁股熟妇 | 四虎网站 | 激情偷乱人伦小说视频在线 | 少妇高潮毛片 | 国产日韩av在线播放 | 中文天堂av| 亚洲 欧美 偷自乱 图片 | 亚洲精品在线观看视频 | 69sex久久精品国产麻豆 | 日韩av一二三四区 | 亚洲国产精品无码av | 精品区一区二区 | 国产人妖网站 | 99精品免费观看 | 欧美一级免费在线观看 | 蜜桃视频一区二区三区 | 日本黄色小说 | 欧美日韩国产成人在线 | 毛片网站免费观看 | 国模叶桐尿喷337p人体 | 青青视频二区 | 亚洲精品成人悠悠色影视 | 久久精品网站视频 | 欧美、另类亚洲日本一区二区 | 天堂网在线最新版www | 无限看片在线版免费视频大全 | 欧美野外疯狂做受xxxx高潮 | 青青青在线视频人视频在线 | 国产丝袜在线观看视频 | 亚洲综合色婷婷 | 色综合久久久久久 | 性一交一黄一片 | 成人品视频观看在线 | 神马午夜一区二区 | 久久久久久久久久久中文字幕 | 精品久久久无码人妻字幂 | 越南毛茸茸的少妇 | 国产精品入口麻豆 | 亚洲 欧美 中文 在线 视频 | 国产又黄又爽刺激片 | www男人的天堂 | 亚洲黄页 | 色噜噜成人 | 91精品在线播放 | 久久夜精 | 亚洲欧美字幕 | 亚洲免费大全 | 五月婷婷激情视频 | 国产精自产拍久久久久久蜜小说 | 999国产在线 | 国产精品久久夂夂精品香蕉爆 | 操mm影院| 午夜网址| 日韩精彩视频 | 一本色道久久综合亚洲精品 | 久久久久成人精品无码中文字幕 | 一级国产特黄bbbbb | 久久久久久片 | 亚洲视频播放 | 国产精品三级一区二区 | 91.久久| 91亚洲区 | 精品国产髙清在线看国产毛片 | 最近中文字幕mv在线资源 | 欧美又黑又粗 | 日本福利片在线观看 | 美女黄色一级片 | 亚a∨国av综av涩涩涩 | 久久久无码人妻精品一区 | av无码久久久久不卡蜜桃 | 黄一区二区三区 | 欧美九九九| 国产精品一区二区三区在线播放 | 国产97人人超碰caoprom | 黄色av免费观看 | 神马午夜场 | 蜜臀精品国产高清在线观看 | 91av在线播放视频 | 国产乱码精品一区二区三区忘忧草 | 夜夜躁日日躁狠狠久久88av | 久久精品道一区二区三区 | 老头把我添高潮了a片 | 天堂网在线最新版www中文网 | 日本人与黑人做爰视频 | 噜噜视频| 日剧再来一次第十集 | 午夜日本永久乱码免费播放片 | 女人下边被添全过视频的网址 | 欧美婷婷| 国产女同疯狂作爱系列3 | 97caoporn| 午夜影院免费看 | 免费看黄色大片 | 97人人在线 | 最好看十大无码av | 久久极品视频 | 国产香蕉尹人综合在线观看 | 国产欧美精品一区二区 | 欧美毛片在线观看 | 日韩亚洲欧美在线 | 国产一级伦理片 | 337p色噜噜| 91成年影院 | 99久久精品国产一区二区三区 | 美女av一区 | 日本两性视频 | 天天干夜夜操 | 日韩av一区二区精品不卡 | 中文字幕在线欧美 | 在厨房被c到高潮a毛片奶水 | 在线观看av国产一区二区 | 国产福利一区在线观看 | 免费一级黄色片 | 麻豆文化传媒精品一区 | 黑人一级 | 欧美日韩在线影院 | 一区二区三区久久 | 少妇被粗大的猛进69视频 | 碰碰色 | 精品美女久久久久 | 欧美一级免费看 | 18禁黄网站免费 | 亚洲熟妇少妇任你躁在线观看无码 | 婷婷在线观看视频 | a级片中文字幕 | 亚洲大尺度无码无码专区 | 日韩天天干| 777亚洲精品乱码久久久久久 | 亚洲国产天堂久久综合 | 精品国产污污免费网站入口 | 五月丁香六月综合av | 不卡福利视频 | 欧美视频在线一区二区三区 | 日韩精品中文字幕在线 | 毛片毛片免费看 | 911亚洲精品 | 久久精品播放 | 俄罗斯丰满熟妇hd | 手机看片国产日韩 | 欧美成人高潮一二区在线看 | 中文字幕亚洲乱码熟女在线 | 夜夜春夜夜爽 | 色综合 图片区 小说区 | 色女人网站| snis839痴汉明日花キララ | 国产午夜精品免费一区二区三区视频 | 好湿好紧太硬了我太爽了视频 | www.youjizz.com视频 | 欧美乱大交做爰xxxⅹ性3 | 天天综合网7799精品视频 | 人妻夜夜爽天天爽爽一区 | 久久免费手机视频 | 久久久久久毛片 | 手机在线永久免费观看av片 | 成 人色 网 站 欧美大片在线观看 | 欧美啊v| 一区二区三区在线观看视频 | 毛茸茸熟妇张开腿呻吟 | 忘忧草日本在线播放www | 欧美aa大片 | 国产视频播放 | 狠狠色噜噜狠狠色综合久 | 亚洲精品久久久久玩吗 | 91亚洲乱码卡一卡二卡新区豆 | 久久国产一区二区三区 | 性丰满白嫩白嫩的hd124 | 天堂无码人妻精品av一区 | 精品无码专区毛片 | 日本脱内衣全部视频 | 国产三级网 | 少妇做爰免费视频网站www | 国产精品久久久久久久久久直播 | 亚洲精品911| 一本加勒比hezyo无码资源网 | 欧美鲁| 国产成人亚洲精品狼色在线 | 日本大乳奶做爰洗澡三级 | 中国女人内谢69xxxxⅹ视频 | 男人的天堂国产 | 国产午夜精品一区二区三区嫩草 | 日韩精品免费一区二区在线观看 | 中文字幕av免费在线观看 | 99久久精品费精品国产一区二区 | 人摸人人人澡人人超碰97 | 日本特黄特色大片免费视频老年人 | 久草青青视频 | 国产精品99蜜臀久久不卡二区 | 久久久久一区二区三区 | 国产 剧情 在线 精品 | 高清国产精品人妻一区二区 | 在线地址一地址二免费看 | 国产人人看 | 成人自拍视频在线观看 | 久久香蕉国产线熟妇人妻 | 国产精品午夜小视频观看 | 国内偷拍av | 中国女人内谢69xxxxⅹ视频 | 在线观看免费人成视频色9 在线观看的网站 | 中文字幕亚洲综合久久青草 | www激情网| 久久精品久久久久久 | 另类综合小说 | 欧美日韩se | 草久久久久久 | 免费在线观看小视频 | 国产精品久久久久久久久久久久久久久久久 | 日本亚州视频在线八a | 在线看日韩av | 日日操日日碰 | 在线一区 | 夜夜操国产 | 国产无套粉嫩白浆 | 婷婷深爱 | 天天撸日日夜夜 | 久草热久草在线 | 欧美又粗大人妖一进一出 | 国产精品无遮挡 | 色8久久人人97超碰香蕉987 | 国产黄视频在线观看 | 国产日产精品一区二区三区四区的观看方式 | 蜜桃av影院| 69伊人 | 国产精品美女久久久久av爽 | 亚洲成人久 | 国产精品一区二区av日韩在线 | 亚洲a成人 | 国模一二区 | 亚洲天堂av一区二区 | 天堂中文网 |