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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

项目中SQL语句文件保存及提取方法

發布時間:2023/12/15 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 项目中SQL语句文件保存及提取方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第十九章 SQL文保存方法

?@http://blog.csdn.net/struts2/article/details/1745050

在開發JavaWeb應用程序的過程中可能經常需要使用到SQL語句來訪問數據庫。為了屏蔽SQL注入帶來的危險,在Java中通常使用PreparedStatement,使用預編譯的SQL語句。預編譯的SQL語句是那些包含?的語句,使用PreparedStatement可以讓數據庫預先編譯這些SQL模板,只有調用的時候套用必須的參數即可。

?

SQL文件的存放位置

那么在JavaWeb項目中預編譯的SQL語句到底放在那里呢?

?

放在Java代碼里肯定是不好的,為什么,有兩點,第一,SQL語句放在Java代碼里

太難看可,有不好的味道(參看Refactor),第二,每次SQL語句變更(可能經常發生)

都需要編譯這些Java代碼,比較煩。

?

那么SQL語句到底放在那里呢?根據這么多年的開發經驗SQL文通常可以放在classes目錄

下的文件中,存放SQL語句的文件有三種類型:properties文件,xml文件和txt文件。

?

在詳細討論文件格式之前,我們先討論以下如何在Java類中得到這些文件的引用,以便從中得到需要的SQL語句。

?

使用ClassgetResourceAsStream方法可以獲得對文件引用的InputStream。例如:文件目錄結構:

src

??? com

?????? jpleasure

????????? dao

??????????????? SomeDao.java

??????????????? SomeDao.properties

????? ????????????? ???????? SomeDao.xml

?????????????????? ?????????????????? SomeDao.sql

// properties

public class SomeDao{

???????? public InputStream getInputStream() {??????????? ?????????????????? ??????????????????????????????????????????????????????? ???

this.getClass().getClassLoader().

getResourceAsStream("com/jpleasure/dao/SomeDao.properties");

???????? }

}

?

// xml

public class SomeDao{

???????? public InputStream getInputStream() {

???????? ???????? this.getClass().getClassLoader().

getResourceAsStream("com/jpleasure/dao/SomeDao.properties");

???????? }

}

?

// txt(.sql)

public class SomeDao{

???????? public InputStream getInputStream() {

?????????????????? this.getClass().getClassLoader().

getResourceAsStream("com/jpleasure/dao/SomeDao.properties");

???????? }

}

?

Propertis文件

Properties 文件是Java支持的標準的屬性文件(相當于Windowsini文件的支持)。

?

Properties 文件的格式為:

?

# 注釋

# 定義key,并且與key對應的值為value

key = value

?

可以使用java.util.Properties類來包裝properties文件,使用如下

Properties props = new Properties();

try {

???????? props.load(this.getInputStream());

} catch(IOException ioex) {

???????? // 文件不存在,或者格式問題等

}

String value = props.getString("key")

?

注意上述格式中value不能換行,要想換行必須使用轉義字符“/”。

?

在存儲SQL的時候我們使用如下的格式,例如:

?

# 某業務,某操作SQL

xxx_0001 = select * from dual

?

# 某業務,其他操作SQL

xxx_0002 =? /

select ???? /

???????? * ?? /

from ????? /

???????? dual

?

使用Properties文件的優點是:Java內置支持布需要手寫文件解析代碼,另外使用也非常簡單。

缺點是:SQL語句不能直接編寫,需要追加轉義字符"/",無法將這樣的SQL語句直接拷貝到數據庫客戶端中運行。

?

XML文件

使用XML文件保存SQL比較常用的格式為:

<sqls>

???????? <sql id=”xxx_0001”>

?????????????????? Select

*

from ??

dual?? <!-- 文件注釋? -->

</sql>

???????? <sql id=”xxx_0001”>

?????????????????? …

</sql>

????????

</sqls>

?

使用XML格式的文件保存SQL需要自己寫文件解析代碼,由于JavaXML提供了內置的支持,并且第三方的開源庫也很多,并且非常容易使用所以從xml文件中解析SQL語句也沒有什么困難。以下以jdom為例講解如何解析上述的XML格式的SQL文件。

?

protected Map analysis() {

?

?????????????????? Map map = new HashMap();

?

?????????????????? DOMBuilder builder = new DOMBuilder();

?????????????????? Document doc = null;

?????????????????? try {

??????????????????????????? // 解析XML文件

??????????????????????????? doc = builder.build(this.getInputStream());

?

??????????????????????????? // 獲得根節點: <sqls>

??????????????????????????? Element element = doc.getRootElement();

?

??????????????????????????? // 獲得所有根節點的子節點: <sql>節點列表

??????????????????????????? List sqlNodeList = element.getChildren("sql");

??????????????????????????? for (int i = 0; i < sqlNodeList.size(); i++) {

???????????????????????????????????? Element sqlNode = (Element) sqlNodeList.get(i);

???????????????????????????????????? // 獲得SQL語句ID

???????????????????????????????????? String id = sqlNode.getAttribute("id").getValue();

???????????????????????????????????? // 獲得SQL語句內容

???????????????????????????????????? String sql = sqlNode.getTextTrim();

???????????????????????????????????? map.put(id, sql);

??????????????????????????? }

?????????????????? } catch (JDOMException e) {

??????????????????????????? e.printStackTrace();

?????????????????? }

?????????????????? return map;

???????? }

?

使用XML文件格式保存SQL語句據的時候需要注意,SQL語句中的大于(>)小于(<)XML文件的格式沖突,有兩種解決方法,

第一:使用全角的大于()小于()號。

第二:使用<![CDATA[??? ]]>來包圍所有的內容。

?

另外,通常情況下(不使用<![CDATA[??? ]]>的時候)SQL的注釋只能使用XML的注釋格式(<!-- -->)。

?

使用XML格式的文件的有點:SQL語句可以正常書寫,文件解析相對簡單。

缺點:大于號,小于號的沖突;無法添加SQL注釋(通常只能使用XML格式的注釋)

?

TXT文件(以.SQL為后綴)

我們先說一下TXT文件(.sql文件)的格式

?

------------------------------------

--@ SQL-1

------------------------------------

SELECT

??? SYSDATE

FROM

??? DUAL(SQL)

???

------------------------------------

--@ SQL-2

-- 某某用途的SQL

------------------------------------

SELECT

??? SYSDATE, ROWID?? -- 某某字段

FROM

??? DUAL(SQL)???????? -- 某某表

?

使用txt格式的文件,非常的簡單,和一般的寫SQL語句一樣,可以使用任何的SQL標準語法。只是有一個地方需要注意,就是每個SQL語句的頭注釋的地方加上一行特殊的內容用來標記SQL語句的ID

--@ SQL-1

?

這樣的文件解析比較困難,但是也不是不能做,解析代碼如下:

???????? protected Map analysis() {

?

?????????????????? Map sqlMap = new HashMap();

?

?????????????????? String id = null;

?????????????????? StringBuffer sql = new StringBuffer();

?

?????????????????? if (this.getInputStream() != null) {

??????????????????????????? BufferedReader sqlFileReader = null;

??????????????????????????? try {

???????????????????????????????????? sqlFileReader = new BufferedReader(

??????????????????????????????????????????????????????? new InputStreamReader(this.getInputStream()));

???????????????????????????????????? String currentLine = null;

?

???????????????????????????????????? // 逐行讀取文件內容

???????????????????????????????????? while ((currentLine = sqlFileReader.readLine()) != null) {

?

?????????????????????????????????????????????? // 發現新的SQL語句,將已經發現的SQL語句放在SQL容器中

?????????????????????????????????????????????? if (currentLine.startsWith("--@")) {

??????????????????????????????????????????????????????? if (id != null) {

???????????????????????????????????????????????????????????????? sqlMap.put(id, sql.toString());

???????????????????????????????????????????????????????????????? id = null;

???????????????????????????????????????????????????????????????? sql = new StringBuffer();

??????????????????????????????????????????????????????? }

??????????????????????????????????????????????????????? id = currentLine.substring("--@".length()).trim();

?????????????????????????????????????????????? } else if (currentLine.startsWith("--")) {

??????????????????????????????????????????????????????? // 不讀取注視行

??????????????????????????????????????????????????????? continue;

?????????????????????????????????????????????? } else {

??????????????????????????????????????????????????????? // 非注釋,ID

?

??????????????????????????????????????????????????????? // 去掉SQL語句行的末尾注視

??????????????????????????????????????????????????????? if (currentLine.length() > 0) {

???????????????????????????????????????????????????????????????? int commentsIndex = currentLine.indexOf("--");

???????????????????????????????????????????????????????????????? if (commentsIndex > 0) {

?????????????????????????????????????????????????????????????????????????? currentLine = currentLine.substring(0,

???????????????????????????????????????????????????????????????????????????????????????????? commentsIndex);

???????????????????????????????????????????????????????????????? }

???????????????????????????????????????????????????????????????? // 將換行符替換為空格

???????????????????????????????????????????????????????????????? sql.append(currentLine + " ");

??????????????????????????????????????????????????????? } else {

???????????????????????????????????????????????????????????????? // 將換行符替換為空格

???????????????????????????????????????????????????????????????? sql.append(" ");

??????????????????????????????????????????????????????? }

?

?????????????????????????????????????????????? }

?????????????????????????????????????????????? currentLine = null;

???????????????????????????????????? }

???????????????????????????????????? if (id != null) {

?????????????????????????????????????????????? sqlMap.put(id, sql.toString());

???????????????????????????????????? }

?

??????????????????????????? } catch (IOException ioex) {

???????????????????????????????????? ioex.printStackTrace();

??????????????????????????? } finally {

???????????????????????????????????? if(sqlFileReader != null) {

?????????????????????????????????????????????? try {

??????????????????????????????????????????????????????? sqlFileReader.close();

?????????????????????????????????????????????? } catch (IOException e) {

???????????????????????????????????????????????????????

?????????????????????????????????????????????? }

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

?????????????????? return sqlMap;

???????? }

?

使用TXT格式的文件的有點:SQL語句書寫非常方便,可以拷貝出來直接運行,可以使用標準的SQL注釋格式。

缺點:每個SQL語句必須添加特殊的ID標志(相對與Propertiesxml來說可能也不算是缺點),解析困難,需要較強的文本接卸的能力。

?

通用SQL文件讀取庫

如何設計一個同時支持三種文件格式的SQL文件讀取庫?

?

?

首先我們抽象出一個SqlManager的接口,它提供通過Key獲得對應SQL語句的操作。代碼為:

public interface SqlManager {

???????? /**

???????? ?* 獲取指定KeySQL語句

???????? ?*

???????? ?* @param key

???????? ?*??????????? SQL語句的Key

???????? ?* @return SQL語句內容

???????? ?* @throws SqlMgntException

???????? ?*???????????? 無法取得SQL語句時拋出此異常。

???????? ?*/

???????? public String getSql(String key) throws SqlMgntException;

}

?

然后使用一個抽象基類,來定義通用的屬性和操作,代碼為:

public abstract class AbstractSqlManager implements SqlManager {

?

???????? /* SQL文件輸入流 */

???????? private final InputStream is;

?

???????? /**

???????? ?* SQL文件輸入流獲取方法。

???????? ?*

???????? ?* @return SQL文件輸入流

???????? ?*/

???????? public InputStream getInputStream() {

?????????????????? return is;

???????? }

?

???????? /**

???????? ?* 默認構造方法

???????? ?*

???????? ?* @param is

???????? ?*??????????? SQL文件輸入流

???????? ?*/

???????? public AbstractSqlManager(InputStream is) {

?????????????????? this.is = is;

???????? }

?

???????? /* SQL語句容器 */

???????? private Map sqlContainer = null;

?

???????? /* 同步KEY */

???????? private final Object syncKey = new Object();

?

???????? /**

???????? ?* 通過SQL語句ID獲取SQL語句內容。

???????? ?*

???????? ?* @param key

???????? ?*??????????? SQL語句ID

???????? ?* @return SQL語句

???????? ?*/

???????? public String getSql(final String key) throws SqlMgntException {

?????????????????? synchronized (syncKey) {

??????????????????????????? if (sqlContainer == null) {

???????????????????????????????????? this.sqlContainer = initContainer();

??????????????????????????? }

?????????????????? }

?????????????????? return (String) sqlContainer.get(key);

???????? }

????????

???????? /**

???????? ?* 抽象的模板方法,用來解析不同類型的SQL文件。

???????? ?* @return 配對的SQL內容

???????? ?*/

???????? protected abstract Map initContainer();

?

}

?

注意其中的抽象方法:

protected abstract Map initContainer();

通過這個抽象方法把SQL文件的解析交給了具體的實例(模式參看:模板方法)

?

三個具體的SqlManager類我們不必具體說了,都是對上述抽線的解析方法的實現。

?

工廠類可以根據對應文件的后綴明創建對應的SqlManager。代碼為:

public class SqlManagerFactory {

?

???????? /* XMl文件類型 */

???????? public static final String TYPE_XML = ".xml";

?

???????? /* SQL文件類型 */

???????? public static final String TYPE_SQL = ".sql";

?

???????? /* 屬性文件類型 */

???????? public static final String TYPE_PROP = ".properties";

?

???????? // begin ma.zhao@dl.cn 2006/03/09

???????? // add singleton map for SqlManager

?

???????? private static Map sqlManagerContainer = new HashMap();

?

???????? // end ma.zhao@dl.cn 2006/03/09

?

???????? /**

???????? ?* 創建對應的SqlManager實現類

???????? ?*

???????? ?* @param filePath

???????? ?*??????????? SQL文件相對路徑和文件名

???????? ?* @return

???????? ?*/

???????? public static SqlManager createSqlManager(String filePath) throws SqlMgntException {

?????????????????? SqlManager manager = null;

?????????????????? synchronized (sqlManagerContainer) {

?

??????????????????????????? manager = (SqlManager) sqlManagerContainer.get(filePath);

???????????????????????????

??????????????????????????? // 如果SqlManager不存在,則根據文件初始化SqlManager

??????????????????????????? // 并且將它放在SqlManager容器中

??????????????????????????? if (manager == null) {

????????????????????????????????????

???????????????????????????????????? InputStream is = SqlManagerFactory.class.getClassLoader()

??????????????????????????????????????????????????????? .getResourceAsStream(filePath);

????????????????????????????????????

???????????????????????????????????? if(is == null) {

?????????????????????????????????????????????? throw new SqlMgntException(

"Sql File Not Fount! Input file name path is:" + filePath);

???????????????????????????????????? }

????????????????????????????????????

???????????????????????????????????? if (filePath.endsWith(TYPE_XML)

??????????????????????????????????????????????????????? || filePath.endsWith(TYPE_XML.toUpperCase())) {

?????????????????????????????????????????????? manager = new SqlManagerXmlImpl(is);

???????????????????????????????????? } else if (filePath.endsWith(TYPE_SQL)

??????????????????????????????????????????????????????? || filePath.endsWith(TYPE_SQL.toUpperCase())) {

?????????????????????????????????????????????? manager = new SqlManagerSqlImpl(is);

???????????????????????????????????? } else if (filePath.endsWith(TYPE_PROP)

??????????????????????????????????????????????????????? || filePath.endsWith(TYPE_PROP.toUpperCase())) {

?????????????????????????????????????????????? manager = new SqlManagerPropImpl(is);

???????????????????????????????????? } else {

?????????????????????????????????????????????? throw new SqlMgntException(

"Sql File Type Not Support, Input file path is:" + filePath);

???????????????????????????????????? }

????????????????????????????????????

???????????????????????????????????? //

???????????????????????????????????? if (manager != null) {

?????????????????????????????????????????????? sqlManagerContainer.put(filePath, manager);

???????????????????????????????????? }

??????????????????????????? }

?????????????????? }

?????????????????? return manager;

???????? }

}

注意上述代碼可以控制每個對應的SQL文件始終只有一個對應的SqlManager,不會對同一個文件創建多個SqlManager類。

?

所有上述過程中的異常都以SqlMgntException的方式向上拋出,代碼為:

public class SqlMgntException extends Exception {

?

???????? /**

???????? ?*

???????? ?*/

???????? private static final long serialVersionUID = 1L;

?

???????? public SqlMgntException() {

?????????????????? super();

?????????????????? // TODO Auto-generated constructor stub

???????? }

?

???????? public SqlMgntException(String message, Throwable cause) {

?????????????????? super(message, cause);

?????????????????? // TODO Auto-generated constructor stub

???????? }

?

???????? public SqlMgntException(String message) {

?????????????????? super(message);

?????????????????? // TODO Auto-generated constructor stub

???????? }

?

???????? public SqlMgntException(Throwable cause) {

?????????????????? super(cause);

?????????????????? // TODO Auto-generated constructor stub

???????? }

}

?

優化的方向,

1 初始話加載所有的SQL語句

???????? 程序運行之初,將所有的SQL語句裝載在內存中。


轉載于:https://blog.51cto.com/10164643/1783112

總結

以上是生活随笔為你收集整理的项目中SQL语句文件保存及提取方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

色六月婷婷 | 久久久久北条麻妃免费看 | 91亚洲夫妻 | 韩国av在线| 久久电影国产免费久久电影 | 久视频在线 | 91试看| 婷婷色中文 | 一区 二区 精品 | 激情五月五月婷婷 | 国产亚洲免费的视频看 | 午夜视频免费 | 中文字幕在线久一本久 | 黄色网址在线播放 | 欧美日韩xxx | 亚洲mv大片欧洲mv大片免费 | 欧美日韩一区二区三区在线观看视频 | 综合久久精品 | 99久久婷婷国产综合亚洲 | 免费在线激情电影 | 国产99久久久精品 | 天天射天天干天天爽 | 九九视频免费观看视频精品 | 国产精品9999 | 97超碰在线人人 | 国产玖玖精品视频 | 亚洲一区美女视频在线观看免费 | 成人午夜网| 白丝av在线 | 亚洲国产一区在线观看 | 天天干天天做 | 久久精品国产一区二区三区 | 亚洲人成免费网站 | 国产中文字幕网 | ww视频在线观看 | 日韩高清免费在线观看 | 青草视频在线免费 | 特级毛片爽www免费版 | 狠狠狠狠狠狠狠 | www日日夜夜 | 婷婷丁香导航 | 又黄又爽又刺激 | 日韩欧美视频在线播放 | 香蕉久久国产 | 黄a在线看 | 最近日本中文字幕a | 成人av资源网站 | 国内精品久久天天躁人人爽 | 日本性生活免费看 | 日韩r级在线 | 国产免费叼嘿网站免费 | av 一区二区三区四区 | 亚洲视频免费视频 | 黄色在线免费观看网站 | 丁香婷婷综合网 | 激情视频免费观看 | 六月丁香伊人 | 免费在线观看的av网站 | 成人xxxx| 精品久久久久久久 | av大片免费看 | 一区二区三区视频网站 | 中文字幕免费高 | 性色av免费在线观看 | 五月婷婷香蕉 | 国产短视频在线播放 | 97超碰国产在线 | 国产亚洲在线观看 | 国产一区二区手机在线观看 | 天天视频色版 | 日本久久综合视频 | 在线看片日韩 | 丰满少妇高潮在线观看 | 韩国一区二区在线观看 | 97手机电影网 | 一级片视频在线 | 亚洲欧洲精品视频 | 国产精品久久久久久久久久新婚 | 超碰在线亚洲 | 国产精品毛片久久久 | 久草在线免费电影 | 天天操天天摸天天爽 | 久久久男人的天堂 | 久久免费视频在线观看30 | 亚洲资源网| 91最新在线视频 | 在线黄av | 中文字幕色播 | 在线观看免费高清视频大全追剧 | 一区二区三区日韩在线观看 | 国产又粗又猛又爽又黄的视频免费 | 91亚洲精品久久久久图片蜜桃 | 久久久久国产一区二区 | 亚洲黄色软件 | 国产成人精品综合久久久 | 日韩在线观看小视频 | 天天操天天干天天爽 | 婷婷去俺也去六月色 | 亚洲精品高清在线观看 | 又黄又刺激视频 | 成人免费av电影 | 久久免费美女视频 | 国产原创在线 | 五月天.com | 天天射天天射天天射 | 菠萝菠萝蜜在线播放 | 国产高清黄色 | 欧美激情第一区 | 不卡视频在线 | 欧美综合久久 | 国产伦精品一区二区三区在线 | av在线电影网站 | 香蕉视频国产在线观看 | 精品日韩在线 | 中文字幕在线播放第一页 | 久免费 | 国产中文字幕一区二区三区 | 99 精品 在线 | 色综合久久久久久中文网 | 精品国产一二三四区 | 成人三级av | av电影中文字幕在线观看 | 天天操综 | 99视 | 国产99久久久国产精品 | 96国产精品| 91日本在线播放 | 成年人黄色大片在线 | 午夜视频播放 | 国产精品6999成人免费视频 | 亚洲在线免费视频 | 亚洲美女精品视频 | 久久国产精品久久w女人spa | 欧美日韩三级在线观看 | www久久久久 | 国产高清在线免费视频 | 伊人婷婷激情 | 91在线操| 国产免费影院 | 久久精品国产免费观看 | 天天插伊人| 天天曰 | 国产午夜视频在线观看 | 久久成电影 | 午夜电影 电影 | 国产精品久久久亚洲 | 久草网在线 | 免费看黄色91 | 成人av在线播放网站 | 国产精品久久久久亚洲影视 | 三级av小说 | 日韩一区二区三区免费电影 | 欧美日韩午夜在线 | 久久免费电影网 | 国产精品综合在线观看 | 久久国产麻豆 | 国产精品视频线看 | 天天做日日做天天爽视频免费 | 欧美成人视 | 成人app在线免费观看 | 久久综合九色综合97_ 久久久 | 激情婷婷综合网 | 97在线观看视频国产 | 日本精品午夜 | av免费电影在线 | 亚洲aaa级| 夜夜骑日日操 | 欧美午夜剧场 | 国产精品6 | 国产精品高潮久久av | 婷婷草| av中文在线 | 欧美极度另类 | 免费av影视 | 97精品国产97久久久久久春色 | 亚洲精品18日本一区app | 午夜精品一区二区三区可下载 | 久久深夜| 国产一级二级在线观看 | 免费看91的网站 | 久久男人视频 | 国产精品免费看 | 亚洲一级二级 | 日韩电影在线看 | 西西大胆啪啪 | 99精品一级欧美片免费播放 | 欧美a级免费视频 | 国产精品24小时在线观看 | 日韩精品久久一区二区 | 高清视频一区二区三区 | 中文字幕观看视频 | 久久国产经典视频 | 国产一区二区在线免费 | 欧美日韩国产一区二区在线观看 | 精品国产乱码一区二区三区在线 | 免费人人干 | 午夜视频导航 | 亚洲综合成人av | 91麻豆精品91久久久久同性 | 最新国产一区二区三区 | 成人免费观看视频网站 | 99久久9 | 在线观看国产区 | 日韩在线观看中文 | 六月丁香激情网 | 91超级碰碰 | 欧美最爽乱淫视频播放 | 97人人添人澡人人爽超碰动图 | 黄色软件视频大全免费下载 | 丁香五月亚洲综合在线 | 999国内精品永久免费视频 | 国产精品中文字幕在线观看 | 免费观看www7722午夜电影 | 99色在线播放 | 国产一级免费观看视频 | 99国产一区 | 国产精品a久久 | 亚洲a网 | 国产亚洲视频在线观看 | 日韩免费看 | 天天碰天天操视频 | 麻豆视频网址 | 中文字幕资源网在线观看 | 欧美日韩久久 | av大片网址 | 在线视频91 | 午夜丁香网 | 国产香蕉视频在线观看 | 国产又粗又猛又黄视频 | 国产一区二区午夜 | 中文字幕免费不卡视频 | 中文字幕日本在线观看 | 综合天天色 | 国产精品久久久久久婷婷天堂 | 成人国产精品一区 | 国产精品久久精品国产 | 欧美精品免费在线观看 | 在线观看日韩视频 | 国产精品日韩 | 亚洲视频999 | 天天爱天天操天天射 | 美女网站在线 | 亚洲va在线va天堂 | 国产特级毛片aaaaaa | 99久久久国产精品免费观看 | 在线天堂8√ | 激情网在线视频 | 911av视频| 久草视频在线免费 | 69av在线播放 | 一区二区三区日韩在线观看 | 99久久99| 99精品免费网 | 奇米影视四色8888 | 嫩草伊人久久精品少妇av | 欧美a级在线播放 | 国产精品一级视频 | 免费看黄在线观看 | 视频二区在线 | 国产精品成人国产乱一区 | 国产午夜剧场 | 91av原创 | 日日爱夜夜爱 | 亚洲一区二区三区在线看 | 五月天久久久久久 | 国产片免费在线观看视频 | 在线视频 亚洲 | 日韩免费高清在线观看 | 国产精品二区三区 | 色 中文字幕 | 国产精品毛片一区视频播不卡 | 精品1区二区 | 日韩在线资源 | 免费裸体视频网 | 黄色三级免费网址 | 一本一本久久aa综合精品 | 亚洲高清视频在线观看免费 | 免费在线黄网 | 特黄特色特刺激视频免费播放 | 99久久精品国产网站 | 国产精品毛片一区视频 | 亚洲国产中文在线 | 日本视频精品 | 久久电影国产免费久久电影 | 最近中文字幕完整视频高清1 | 日日日爽爽爽 | 一区二区三区高清 | 在线国产视频 | 婷婷亚洲综合五月天小说 | 97超碰国产精品 | 一区二区三区高清 | 国产一区在线精品 | 毛片激情永久免费 | 国产日韩高清在线 | 久久久久久久影视 | 欧美韩国日本在线 | www.久久免费视频 | 999国产| 欧美日韩国产亚洲乱码字幕 | 69av国产 | 丁香婷婷在线 | 欧美日韩一区二区三区视频 | 日b视频在线观看网址 | 欧美福利精品 | 日韩高清观看 | 九九热av| 久久国产精品一区二区三区四区 | 欧美一区二区三区不卡 | 激情五月综合 | 久草99| 亚洲成人av片 | 国产青青青| 亚洲乱亚洲乱亚洲 | 97超碰人人网 | 成人动漫精品一区二区 | 国产一级视频 | 亚洲视频axxx | 在线亚洲高清视频 | 日韩欧美高清在线观看 | 久久亚洲区 | 黄色a视频免费 | 麻豆精品视频 | 色综合久久五月天 | 亚洲精品tv久久久久久久久久 | 日韩成人免费在线观看 | 日韩精品中文字幕在线不卡尤物 | 精品国产一区二区三区蜜臀 | 亚洲精品小视频在线观看 | 久久97精品 | 亚洲精品9 | 久久专区 | 国产精品久久电影网 | 狠狠做深爱婷婷综合一区 | 国产小视频你懂的 | 激情欧美一区二区三区免费看 | 成人毛片在线视频 | 午夜三级理论 | 天堂av观看 | 五月天婷婷视频 | 在线看国产一区 | 亚洲视频免费在线观看 | 在线观看国产日韩 | 久久久久高清 | 欧美坐爱视频 | 精品福利网站 | 国产精品视频免费观看 | 91精品无人成人www | 在线成人一区二区 | 韩国精品福利一区二区三区 | 久久午夜免费视频 | 国产精品色婷婷 | 欧美性黑人 | 久久综合狠狠综合久久综合88 | 探花视频在线观看+在线播放 | a极黄色片 | 久久久一本精品99久久精品66 | 国产精品中文久久久久久久 | 人人添人人澡人人澡人人人爽 | 97超碰免费| 91精品久久久久久综合乱菊 | 2021久久| 国产精品视频99 | 久久久国产精品人人片99精片欧美一 | 天天激情综合 | 国产精品精品视频 | 91成年人在线观看 | 97超碰免费在线观看 | 久久精品国产亚洲a | 91视频久久久 | 美女福利视频在线 | 久久久久久久久久网 | 国产美女精品在线 | 国产精品久久久久久一区二区 | 999久久久免费精品国产 | 国产精品免费观看网站 | 亚洲一区精品二人人爽久久 | 精品久久久久久综合日本 | 麻豆影视在线观看 | 日本中文字幕久久 | 色七七亚洲影院 | 日韩欧美精品在线观看视频 | 国产在线 一区二区三区 | 黄网站a | 少妇自拍av | 国产一区免费观看 | 成人午夜剧场在线观看 | 国产一区二区高清不卡 | 国产日产欧美在线观看 | 国产亚洲成av人片在线观看桃 | 国产亚洲成人网 | 欧美日韩18 | 93久久精品日日躁夜夜躁欧美 | 996久久国产精品线观看 | 国产精品福利视频 | 午夜婷婷网 | 9在线观看免费高清完整版在线观看明 | 中文字幕电影网 | 91精品久久久久久综合五月天 | 人人爽人人爽人人爽人人爽 | 欧美在线free| 黄色大全免费观看 | 中文字幕日本在线 | 国产精品中文字幕在线播放 | 国产专区视频 | 久久影视一区 | 久久国内精品 | 久久久激情网 | 九九热在线播放 | 狠狠狠综合 | 91人人网 | 可以免费观看的av片 | 国产午夜精品免费一区二区三区视频 | 天堂av最新网址 | 激情av在线资源 | 天天曰夜夜操 | 久久国产一区 | 色综合天天综合在线视频 | 97国产精品久久 | 国产一区在线观看视频 | 国产淫片 | 国内精品久久久久久久影视简单 | 2024国产精品视频 | 精品中文字幕在线播放 | 国产超碰在线 | 日本中文字幕在线一区 | 91视频在线免费看 | 毛片网在线播放 | 日韩三级在线观看 | 亚洲色图色 | 国产麻豆成人传媒免费观看 | 中文字幕精品一区二区三区电影 | 中文字幕av在线 | www.啪啪.com| 天天干天天做天天操 | av视屏在线播放 | 亚洲精品综合在线 | 蜜臀av一区 | 欧美网站黄色 | 成人中文字幕+乱码+中文字幕 | 日韩色视频在线观看 | 成年人黄色在线观看 | 色婷婷在线播放 | 美女露久久 | 日日操日日操 | 国产视频在线观看免费 | 91精品国产91 | av免费观看在线 | 国产视频久 | 日韩视频在线观看免费 | 国产成人精品在线 | 人人澡人人爽 | 99国产精品久久久久老师 | 精品一二三区视频 | 国产精品2020 | 国产手机视频精品 | 国产精品每日更新 | 91福利在线导航 | 亚洲春色综合另类校园电影 | 日韩中文字幕免费电影 | 一级免费片 | av中文字幕网站 | 国产一区二区不卡视频 | 久久精品成人欧美大片古装 | 中文字幕亚洲字幕 | 亚洲春色奇米影视 | a黄色一级 | a级国产乱理论片在线观看 伊人宗合网 | 免费观看www视频 | 日本女人的性生活视频 | 九色琪琪久久综合网天天 | 午夜少妇av| 免费在线播放视频 | 久久99精品国产99久久6尤 | 久久老司机精品视频 | 日本成人a | 日日夜夜天天 | 久久久色 | 欧美一区二区在线免费看 | av网站地址| 亚洲国产精品久久久 | 国产精品6| 久久久久久国产精品亚洲78 | 久久伊人国产精品 | 久久精品艹 | 国产精品观看在线亚洲人成网 | 人人爽人人香蕉 | 又湿又紧又大又爽a视频国产 | 国产精品2018| 在线亚州 | 久操中文字幕在线观看 | 国产精品美女免费视频 | 依人成人综合网 | 国产九九九精品视频 | 99精品国产在热久久 | 午夜一级免费电影 | 亚洲国内精品在线 | 狠狠干成人 | 视频二区在线视频 | 久久99精品国产91久久来源 | 天天干天天做天天爱 | 日韩影片在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 中文字幕在线观 | 午夜精品三区 | 中文字幕在线观看完整 | 五月婷婷色播 | 亚洲成熟女人毛片在线 | 国产精品视频最多的网站 | 黄色亚洲大片免费在线观看 | 91在线操 | 亚洲黄a| 热re99久久精品国产66热 | 91中文字幕在线 | 五月婷婷狠狠 | 欧美性色网站 | 在线黄色观看 | 成人亚洲综合 | 成人久久18免费网站麻豆 | 天天射天天射天天 | 人人爽爽人人 | 操高跟美女 | 精品视频免费 | 国产高清在线免费视频 | 99爱在线观看 | 亚洲欧洲精品一区 | 狠狠色丁香婷婷综合久久片 | 日韩精品电影在线播放 | 97天天干| 国产日产在线观看 | 免费精品国产 | 六月久久婷婷 | 狠狠干天天射 | 一区二区精品国产 | 精品久久久999 | 成人黄色片在线播放 | 日本精品在线视频 | 黄色毛片一级片 | 久久免费资源 | 五月天婷婷综合 | 综合色中色| 99精品免费在线观看 | 国产成人精品日本亚洲999 | 五月婷婷狠狠 | 欧美成人精品欧美一级乱黄 | 密桃av在线 | 亚洲日本国产精品 | 欧美经典久久 | 97超碰人人| 国产中文字幕一区二区 | 综合激情婷婷 | 500部大龄熟乱视频使用方法 | 人人射人人射 | av成人资源 | 亚洲综合色丁香婷婷六月图片 | 91成版人在线观看入口 | 国产麻豆精品传媒av国产下载 | 色www免费视频 | www久久国产| 欧美成人精品欧美一级乱 | 91免费网 | 亚洲综合激情 | 免费久久网 | 91免费网| 国产精品久久久久永久免费 | 超碰97在线看 | 欧美在线视频一区二区三区 | 免费十分钟| 手机在线小视频 | 久操视频在线播放 | 在线观看视频h | 日韩精品一二三 | 国产 日韩 在线 亚洲 字幕 中文 | www.狠狠| 国产在线播放一区 | 亚洲综合色激情五月 | 日韩av在线免费播放 | 欧美日韩天堂 | 一区二区三区 中文字幕 | 97在线超碰| 日日夜夜干 | 日韩网 | 九九视频在线观看视频6 | 在线午夜电影神马影院 | 91伊人久久大香线蕉蜜芽人口 | 亚洲永久国产精品 | 国产精品一区二区中文字幕 | 黄色片免费看 | 天天摸夜夜添 | 日本福利视频在线 | 色a在线观看 | 久久久久久久久久网 | 欧美性生活小视频 | 国产精品久久久久国产精品日日 | 欧美另类美少妇69xxxx | 欧美一区在线观看视频 | 最新国产精品久久精品 | 在线精品视频免费播放 | 亚洲综合视频在线 | 国产精品一区二区在线观看 | 99中文在线| 免费高清看电视网站 | 亚洲成人av一区 | 激情综合网天天干 | 精品国产1区二区 | 久久免费视频4 | 欧美国产日韩在线视频 | 日韩免费视频在线观看 | 韩国三级在线一区 | 欧美一区二区免费在线观看 | 欧美激情综合网 | 99se视频在线观看 | 久久久国产精品久久久 | 色在线视频 | 午夜精品一区二区国产 | 色吧av色av| 香蕉蜜桃视频 | 麻豆免费视频观看 | 亚洲黄色成人 | 欧美日韩国产亚洲乱码字幕 | 精品国产一区二 | 亚洲视屏 | 国产精品18久久久久久久久久久久 | 精品在线观看一区二区 | 在线va视频 | 91成人在线网站 | 在线国产精品视频 | 国产亚洲久久 | 91久久黄色| 亚洲天天在线日亚洲洲精 | 五月天最新网址 | 激情综合网五月激情 | 超碰在线人人艹 | 日韩av免费一区 | 国产不卡免费 | 国产黄色观看 | 天天色天天爱天天射综合 | www.操.com | 欧女人精69xxxxxx | 国产破处在线播放 | 日韩欧美国产免费播放 | 欧美日韩3p | 欧美aaaxxxx做受视频 | 99久久这里有精品 | 日韩毛片在线一区二区毛片 | 日本久草电影 | 国产精品中文字幕在线 | 日韩av电影一区 | 国产又粗又猛又黄视频 | 亚洲精品1234区 | 91视频在线看 | 亚洲在线不卡 | 国产乱对白刺激视频在线观看女王 | 免费观看性生活大片3 | 999久久久久久久久6666 | 亚洲午夜久久久久久久久久久 | 欧美一级视频一区 | 人人天天夜夜 | 国产无吗一区二区三区在线欢 | 亚洲精品在线免费播放 | 亚洲在线网址 | 美女网站在线播放 | 中文在线免费视频 | 欧美在线观看小视频 | 一区二区精品在线视频 | 中文字幕乱码日本亚洲一区二区 | 成人播放器 | www.夜夜草| 天天综合狠狠精品 | 久久国产高清视频 | www.一区二区三区 | 亚洲另类视频在线 | 亚洲精品字幕在线观看 | 欧美成天堂网地址 | 久久精品视频4 | 国产91区 | 亚洲国产精品成人精品 | 欧美日韩另类视频 | 在线免费中文字幕 | 中文字幕乱码视频 | 激情丁香 | 91九色精品 | 四季av综合网站 | 亚洲精品乱码久久久久久久久久 | 美女精品在线观看 | 国产视频亚洲视频 | 日韩午夜视频在线观看 | 成人在线免费视频观看 | 免费观看v片在线观看 | 亚洲在线资源 | 成人宗合网 | 色婷婷天天干 | 欧美一级免费在线 | av免费看网站 | 国产精品中文在线 | 国产成人精品久久亚洲高清不卡 | 久久久久久久久久久福利 | 日韩高清免费电影 | 久久国内精品 | 成人免费视频播放 | 亚洲免费在线观看视频 | 成人免费看电影 | 久久久精品国产一区二区三区 | 欧美日韩一区二区免费在线观看 | 搡bbbb搡bbb视频 | 成片免费观看视频999 | 日日夜日日干 | 97电影在线看视频 | 国产精品久久在线 | 久久久免费视频播放 | 久热av在线 | 久久免费在线观看视频 | 亚洲区另类春色综合小说 | 中文字幕丝袜美腿 | 欧美精品一区二区三区四区在线 | 国产黄色在线观看 | 久久精品国产亚洲a | 中文字幕av在线电影 | 综合在线亚洲 | 99久久超碰中文字幕伊人 | 97超碰人人 | 久久久午夜电影 | 青青草华人在线视频 | 婷婷五月情 | 怡红院av久久久久久久 | 免费在线色电影 | 精品国产综合区久久久久久 | 人人玩人人添人人澡超碰 | 99精品视频免费在线观看 | 在线电影 一区 | 欧美日韩免费看 | 一区 二区电影免费在线观看 | 精品久久久久_ | 岛国大片免费视频 | 免费观看91视频 | 亚洲精品免费在线观看 | 最新超碰在线 | 最近中文字幕国语免费av | 国产高清不卡 | 在线电影日韩 | 亚洲国产av精品毛片鲁大师 | 国产主播99 | 麻豆系列在线观看 | 国产欧美在线一区二区三区 | 日本精品视频在线观看 | 国产91综合一区在线观看 | 午夜丁香视频在线观看 | 亚洲aⅴ在线 | 亚洲色影爱久久精品 | 99久久精品免费看国产四区 | 97成人超碰 | 一区二区中文字幕在线 | 成人a免费看 | 国产午夜影院 | 国产精品系列在线播放 | 久艹在线播放 | 91精品国自产拍天天拍 | 久久99亚洲精品久久久久 | 看av免费 | 色.www | 久久经典国产视频 | 国产一区在线免费观看 | 亚洲午夜精品电影 | 日韩特黄av| 叶爱av在线 | 国产免费亚洲高清 | 国产xx在线 | 久久精品视频在线 | 91九色蝌蚪国产 | 中文字幕一区二区在线观看 | 一二三精品视频 | 久久99精品国产99久久 | 一级黄色片在线免费看 | 日本中文字幕系列 | 日韩理论在线 | 日本精品一区二区三区在线播放视频 | 国产999精品 | av经典在线| 爱色婷婷| 亚洲精品国产自产拍在线观看 | 欧美一区二区在线免费观看 | 日韩二区三区在线 | 精品嫩模福利一区二区蜜臀 | 免费观看性生活大片 | 亚洲精品综合久久 | av噜噜噜在线播放 | 久久视频在线免费观看 | 精品国模一区二区 | 久久国产a | 亚洲视频专区在线 | 午夜精品视频福利 | 久久久久久国产精品免费 | 97色婷婷人人爽人人 | 国产成人一区二 | 久久亚洲二区 | 天天插综合 | 国产伦理精品一区二区 | 青春草视频在线播放 | 亚洲欧洲精品久久 | 精品一区二区免费在线观看 | 福利片免费看 | 国产精选在线 | 激情五月激情综合网 | 日韩三级免费观看 | 中文字幕色在线 | 天天爱天天草 | 国内精品久久久久久久 | 在线观看国产一区二区 | 91精品啪 | 国产精成人品免费观看 | 91高清一区 | 日韩欧美视频一区二区 | 最新色视频 | 日韩视频1区 | 韩国三级av在线 | 99成人免费视频 | 日韩精品一区二区免费视频 | 国产亚洲精品美女久久 | 中文字幕一区二区三区四区久久 | 精品国产一区二区三区四 | 成人作爱视频 | 国产精品一区二区三区在线 | 天天曰夜夜爽 | 午夜电影久久 | 免费在线观看av片 | 成人影片在线播放 | 国产精品一区一区三区 | 国产 日韩 中文字幕 | 免费视频区 | 免费看污污视频的网站 | 婷婷六月天综合 | 涩五月婷婷 | 丰满少妇一级 | 国产视频一区二区在线 | 久久久精品二区 | av888.com| 日韩欧美在线观看一区 | 97人人人| 日韩在线免费高清视频 | www成人精品| 黄av资源 | 丁香六月天婷婷 | 国产人成精品一区二区三 | 激情视频一区二区 | 在线视频99 | 在线亚洲播放 | 黄色片网站 | 伊人色综合久久天天 | 色网站中文字幕 | 久久精品视频播放 | 91九色porny蝌蚪主页 | 久久久久久久久免费视频 | 五月婷婷电影网 | 欧美日韩免费网站 | 波多野结衣在线观看视频 | 国产精品理论片在线播放 | 国产欧美精品在线观看 | 69精品久久 | 奇米影视777影音先锋 | 美女视频黄免费 | 亚洲精品午夜一区人人爽 | 天天插日日操 | av三级在线免费观看 | 啪嗒啪嗒免费观看完整版 | 欧美 高跟鞋交 xxxxhd | 久久免费国产 | 精品久久久精品 | 久草视频手机在线 | 人人看人人做人人澡 | 六月天综合网 | 国产午夜一区二区 | 成人在线视频论坛 | 国产精品观看视频 | 97视频成人 | 色婷婷综合久久久 | 在线观看中文字幕一区 | 99re6热在线精品视频 | 国产3p视频| 亚洲欧洲精品久久 | 国产在线视频在线观看 | 五月天婷亚洲天综合网鲁鲁鲁 | 中字幕视频在线永久在线观看免费 | 一级成人在线 | 久久人人精品 | 亚洲精品1区2区3区 超碰成人网 | 国产日产精品一区二区三区四区的观看方式 | 97av.com| 成人免费大片黄在线播放 | 天天天操天天天干 | 在线成人av | 贫乳av女优大全 | 成人一级免费视频 | 国产伦精品一区二区三区在线 | www最近高清中文国语在线观看 | 在线有码中文字幕 | 在线看欧美 | 丝袜美女在线 | 丁香婷婷射 | 国产精品久久久亚洲 | 久草在线高清 | 伊香蕉大综综综合久久啪 | 国产精品无 | 色婷婷激情电影 | 成人午夜精品久久久久久久3d | 五月激情五月激情 | 国产黄色a | 99亚洲精品| 日本成人黄色片 | 国产99久久久久久免费看 | 国产精品第二页 | 97综合视频 | 一区二区三区四区五区在线 | 国产精品18久久久久久首页狼 | 成人精品久久久 | 久久久精品综合 | 草久在线视频 | 99精品视频中文字幕 | 成人黄色免费观看 | 欧美日韩不卡一区 | 最新亚洲视频 | bayu135国产精品视频 | 国产精品一区二区久久精品爱涩 | 国产精品av在线 | 日韩一区二区三免费高清在线观看 | 亚洲欧美激情插 | jizz999| 超碰人人国产 | 亚洲精品中文字幕在线观看 | 日日爽视频 | 亚洲在线视频观看 | 欧美日韩另类在线 | 亚洲视频精选 | 丁香久久婷婷 | 日本精品久久久久 | 国产又粗又猛又黄 | 高清国产一区 | 五月天丁香亚洲 | 国产高清视频在线免费观看 | 成人手机在线视频 | 欧美色噜噜 | www.五月婷婷| 超碰免费观看 | 五月婷丁香网 | 亚洲国产小视频在线观看 | 91热爆视频| 国产丝袜一区二区三区 | 色综合婷婷 | 美女视频是黄的免费观看 | freejavvideo日本免费 | av成人亚洲 | 久久福利小视频 | 午夜a区 | 五月婷香蕉久色在线看 | 黄色在线免费观看网址 | 久久久久久影视 | 日韩av一区二区三区四区 | 91九色porny在线 | 欧美一区二区三区在线 | 国产在线中文字幕 | 国产精品入口麻豆 | 国产成人精品999在线观看 | 西西444www大胆高清视频 | 日本黄色免费播放 | 99精品免费观看 | 久久久国产精品成人免费 | 亚洲精品久久久蜜桃直播 | 波多野结衣电影一区二区三区 | 久久精品久久国产 | 成人91在线 | 中文字幕高清在线播放 | 日本论理电影 | 在线观看涩涩 | 综合视频在线 | 成人毛片网 | 天天综合网国产 | 成人黄在线 | 天堂在线视频免费观看 | 色婷婷久久久综合中文字幕 | 中文免费观看 | 久久成人午夜 | 免费观看91| 九九九九色 | 久久国产热 | 水蜜桃亚洲一二三四在线 | 在线观看视频在线观看 | 天堂av在线网 | 免费一级日韩欧美性大片 | 精品久久五月天 | 国产成人高清 | 97人人澡人人添人人爽超碰 | 91mv.cool在线观看 | 午夜国产在线观看 | 国产精品va在线 | 一区二区三区中文字幕在线观看 | 免费视频一区 | 国产视频一区二区在线播放 | 中文字幕在线观看免费观看 | 日韩精品久久一区二区三区 | 亚洲精品一区二区久 |