久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

MyBatis中#{}占位符與${}拼接符的用法說明

瀏覽:5日期:2023-10-19 17:58:00
1、關于#{}占位符

先來看以下的示例,該示例是MyBatis中的SQL映射配置文件(Mapper配置文件),在該配置中使用了#{}占位符。

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='test'> <!-- 根據用戶編號,查詢單個用戶實體 --> <select parameterType='int' resultType='com.pjb.mybatis.po.User'> SELECT * FROM tb_user WHERE id = #{id} </select> <!-- 新增用戶 --> <insert parameterType='com.pjb.mybatis.po.User'> INSERT INTO tb_user(user_name,blog_url,remark) VALUES(#{userName},#{blogUrl},#{remark}); </insert></mapper>

在SQL映射配置文章中,輸入參數需要用占位符來標識對應的位置。

在傳統的JDBC編程中,占位符用“?”來標識,然后在加載SQL之前按照“?”的位置設置參數。

而“#{}”在MyBatis中也代表一種占位符,該符號接受輸入參數,在大括號中編寫參數名稱來接受對應參數。

“#{}”接受的輸入參數的類型可以是簡單類型、普通JavaBean或者HashMap。

當接受簡單類型時,“#{}”中可以寫“value”或者其他任意名稱。

如果接受的是JavaBean,它會通過OGNL讀取對象中的屬性值。

2、關于${}拼接符

再來看以下的示例,該示例是MyBatis中的SQL映射配置文件(Mapper配置文件),在該配置中使用了${}拼接符。

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><mapper namespace='test'> <!-- 根據用戶名稱,模糊查詢用戶列表 --> <select parameterType='java.lang.String' resultType='com.pjb.mybatis.po.User'> SELECT * FROM tb_user WHERE user_name LIKE ’%${value}%’ </select></mapper>

在SQL映射配置文件中,有時候需要拼接SQL語句。例如在模糊查詢的時候,就需要在查詢條件的兩側拼接兩個“%”字符串,這個時候如果使用“#{}”占位符是不行的。在MyBatis中,“${}”在SQL配置文件中代表一個“拼接符號”,可以在原有SQL語句上拼接新的符合SQL語法的語句。

但是要注意的是,使用“${}”拼接的SQL語句,會引起SQL注入,所以一般不建議使用“${}”。

“${}”接受輸入參數的類型可以是簡單類型、普通JavaBean或者HashMap。

當接受簡單類型時,“${}”中只能寫“value”,而不能寫其他任意名稱。

如果接受的是JavaBean,它會通過OGNL讀取對象中的屬性值。

另外,在MyBatis 3.4.2之后,還可以在“${}”拼接符中設置一個默認值,格式如下:

${屬性:默認值}

即在所需引入的屬性名的后面添加“:”引號,然后緊跟著填寫屬性不存在或為空時的默認值。

【示例】設置“${}”拼接符的默認值。

(1)創建數據庫連接的屬性文件(db.properties)

在src目錄下創建db.propertie屬性文件,并使用“#”符號將屬性項jdbc.username和jdbc.password注釋掉,表示這兩個屬性項未進行配置。

jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/db_admin?useSSL=false&amp#jdbc.username=root#jdbc.password=123456(2)啟用拼接符默認值的配置

要使用“${}”拼接符中設置一個默認值,需要在properties標簽中設置啟用拼接符默認值的配置項。

在MyBatis配置文件(mybatis-config.xml)中,使用<properties>標簽加載數據庫連接屬性文件(db.properties),并在該標簽中設置啟用拼接符默認值的配置項,該配置如下:

<!-- 加載用于數據庫配置的屬性文件 --><properties resource='db.properties'> <!-- 啟用默認值特性,這樣${}拼接符才可以設置默認值 --> <property name='org.apache.ibatis.parsing.PropertyParser.enable-default-value' value='true'/></properties>

注意:在MyBatis配置文件(mybatis-config.xml)中,<properties>標簽的配置必須寫在<settings>標簽的上面,因為MyBatis中的配置,不但有類型限制,還有順序限制。

必須按照:<properties>、<settings>、<typeAliases>、<typeHandlers>、…順序排放。

(3)編寫數據庫配置信息,并使用“${}”拼接符的默認值。

MyBatis中#{}占位符與${}拼接符的用法說明

說明:

由于在db.propertie屬性文件中,已經將jdbc.username和jdbc.password屬性項注釋掉了,然后在上面的配置信息中,給username和password配置項中的“${}”拼接符中設置默認值,這樣程序在啟動時,就會讀取默認值。

補充:MyBatis映射——SQL占位符及傳參

簡介

本篇主要講述Mybatis映射SQL通過#{}獲取引入類型參數的屬性值及通過@Param注解指定名稱傳參。

關于占位符與字符拼接:

占位符:占位符就是在某個地方占領一個位置,把它單獨作為某個東西,比如這里就是把它作為 值。

#{}表示一個占位符號,通過#{}可以實現 preparedStatement 向占 位符中設置值, 自動進行 java

類型和 jdbc 類型轉換。#{}可以有效防止 sql 注入。 #{}可以接 收簡單類型值或 pojo 屬性值。 如果 parameterType 傳輸單個簡單類型值,#{} 括號中可以是 value 或其它名稱。

字符拼接:字符拼接就是簡單的對字符串拼接。沒有特殊的其它含義。

表 示 拼 接 s q l 串 , 通 過 可 以 將 p a r a m e t e r T y p e 傳 入 的 內 容 拼 接 在 s q l 中 且 不 進 行 j d b c 類 型 轉 換 , 可 以 將 p a r a m e t e r T y p e 傳 入 的 內 容 拼 接 在 s q l 中 且 不 進 行 j d b c 類 型 轉 換 , 可 以 接 收 簡 單 類 型 值 或 p o j o 屬 性 值 , 如 果 p a r a m e t e r T y p e 傳 輸 單 個 簡 單 類 型 值 , {}表示拼接 sql 串,通過可以將parameterType傳入的內容拼接在sql中且不進行jdbc類型轉換,可以將parameterType傳入的內容拼接在sql中且不進行jdbc類型轉換,{}可以接收簡單類型值或 pojo 屬性值,如果 parameterType 傳輸單個簡單類型值,表示拼接sql串,通過可以將parameterType傳入的內容拼接在sql中且不進行jdbc類型轉換,可以將parameterType傳入的內容拼接在sql中且不進行jdbc類型轉換,可以接收簡單類型值或pojo屬性值,如果parameterType傳輸單個簡單類型值,{}括號中只能是 value。

關于@Param:

在用注解來簡化xml配置的時候(比如Mybatis的Mapper.xml映射文件中的sql參數引入);

@Param注解的作用是給參數命名,參數命名后就能根據名字得到參數值,正確的將參數傳入sql語句中(一般通過#{}的方式,${}會有sql注入的問題)。

#{}: 解析為一個 JDBC 預編譯語句(prepared statement)的參數標記符,一個 #{ } 被解析為一個參數占位符 。 ${}: 僅僅為一個純碎的 string 替換,在動態 SQL 解析階段將會進行變量替換。

MyBatis 的真正強大在于它的映射語句

Mapper.xml映射文件中定義了操作數據庫的sql,每個sql是一個statement,映射文件是mybatis的核心。

映射文件中有很多屬性,常用的就是parameterType(輸入類型)、resultType(輸出類型)、resultMap()、rparameterMap()。

實例步驟

先建好實體類Teacher和接口類

Teacher類

package com.lanou3g.mybaties.bean;import lombok.Getter;import lombok.Setter;@Getter@Setterpublic class Teacher { private Integer id; private String tname; private Integer age; private Integer salary;public Teacher(){} @Override public String toString() { return 'Teacher{' +'id=' + id +', tname=’' + tname + ’’’ +', salary=' + salary +', remark=’' + remark + ’’’ +', age=' + age +’}’; } private String remark; public Teacher(Integer id, String tname, Integer age, Integer salary, String remark) { this.id = id; this.tname = tname; this.age = age; this.salary = salary; this.remark = remark; } public Teacher(Integer id) { this.id = id; } }

接口類

package com.lanou3g.mybaties.dao;import com.lanou3g.mybaties.bean.Teacher;import org.apache.ibatis.annotations.Param;import java.util.List;public interface TeacherDao { List<Teacher> queryAll(); Teacher queryById(int id); Teacher queryByIdAndAge(@Param('id') int id, @Param('age') int age); int insertTeacher(Teacher teacher); int insertTeacherByParam(@Param('tname') String tname, @Param('age') int age); int updateTeacherById(Teacher teacher); int deleteTeacherById(int id);}

主要還是xml配置文件的配置,下面是 mybatis_conf.xml文件,它主要引入外部的properties文件(用于配置數據源)、定義類型別名(全局)、配置多套環境的數據庫連接參數及引入哪些Mapper映射文件等

mybatis_conf.xml配置文件

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE configuration PUBLIC '-//mybatis.org//DTD Config 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-config.dtd'><configuration> <properties resource='jdbc.properties' /> <settings> <setting name='mapUnderscoreToCamelCase' value='false'/> </settings> <typeAliases> <!--這樣我們就可以在mybatis的的上下文中使用Teacher來代替全路徑名了,減少配置的復雜度。 --> <typeAlias type='com.lanou3g.mybaties.bean.Teacher' alias='Teacher' /> <!--default屬性,這個屬性作用就是指定當前情況下使用哪個數據庫配置, 也就是使用哪個<environment>節點的配置, default的值就是配置的<environment>標簽元素的id值。--> <environments default='test'> <environment id='test'> <!-- 事務管理器: MANAGED: 這個配置就是告訴mybatis不要干預事務,具體行為依賴于容器本身的事務處理邏輯。 JDBC: 這個配置就是直接使用了 JDBC 的提交和回滾設置,它依賴于從數據源得到的連接來管理事務作用域。 --> <!-- 使用jdbc事務管理 --> <transactionManager type='JDBC'/> <!-- 數據庫連接池 --> <dataSource type='POOLED'><property name='driver' value='${jdbc.driver}'/><property name='url' value='${jdbc.url}'/><property name='username' value='${jdbc.user}'/><property name='password' value='${jdbc.password}'/> </dataSource> </environment> </environments> <!--<mappers>用來在mybatis初始化的時候,告訴mybatis需要引入哪些Mapper映射文件。--> <mappers> <!--通過class屬性指定mapper接口名稱,此時對應的映射文件必須與接口位于同一路徑下, 并且名稱相同--><!--通過resource屬性引入classpath路徑的相對資源--> <mapper resource='mapper/TeacherMapper.xml' /> </mappers></configuration>

TeacherMapper.xml映射文件

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapper PUBLIC '-//mybatis.org//DTD Mapper 3.0//EN' 'http://mybatis.org/dtd/mybatis-3-mapper.dtd'><!-- namespace對應空Dao接口的全名 --><!--namespace屬性在MyBatis中,Mapper中的namespace用于綁定Dao接口的,即面向接口編程。它的好處在于當使用了namespace之后就可以不用寫接口實現類,業務邏輯會直接通過這個綁定尋找到相對應的SQL語句進行對應的數據處理--><mapper namespace='com.lanou3g.mybaties.dao.TeacherDao'> <!-- 此處的id是查詢語句的名稱,對應接口中的方法名 --> <!--指定 resultType 返回值類型時 Teacher 類型的, Teacher 在這里是一個別名,代表的是 com.lanou3g.mybaties.bean.Teacher 對于引用數據類型,都是將大寫字母轉小寫,比如 HashMap 對應的別名是 ’hashmap’ 基本數據類型考慮到重復的問題,會在其前面加上 ’_’,比如 byte 對應的別名是 ’_byte’--> <select resultType='Teacher'> <!-- 通過 resultType 指定查詢的結果是 Teacher 類型的數據 只需要指定 resultType 的類型,MyBatis 會自動將查詢的結果映射成 JavaBean 中的屬性 --> select * from teacher; </select> <!-- 帶一個簡單類型的參數, 這種情況下parameterType屬性可以省略, mybatis可以自動推斷出類型 --> <select resultType='Teacher'>select * from teacher where id = #{id}; </select> <!-- 帶兩個參數,需要在接口中通過@Param注解指定名稱(因為編譯時參數名不會保留) --> <select resultType='Teacher'> select * from teacher where id = #{id} and age &lt;= #{age}; </select> <!-- insert、update、delete的返回值都是int(影響行數) --> <!-- 自定義類型參數,通過#{屬性名}可以直接獲取引入類型參數的屬性值 --> <insert parameterType='Teacher'> insert into teacher(tname) values (#{tname}); </insert> <insert id='insertTeacherByParam'> insert into teacher(tname, age) values (#{tname}, #{age}); </insert> <update parameterType='Teacher'> update teacher set tname = #{tname}, age = #{age} where id = #{id} </update> <delete id='deleteTeacherById'> delete from teacher where id = #{id}; </delete></mapper>

前面完成后,就要測試了。不過在測試時需要實例化創建對象,因要實現多個方法,在這先建MyBatisTools.java工具類,其主要進行封裝Mybatis初始化操作,要求支持創建多env sqlSessionFactory,整個應用生命周期內相同env的sqlSessionFactory對象只有一個(這個類不要過于探究,會用即可)。

MyBatisTools.java

package com.lanou3g.mybaties;import lombok.extern.slf4j.Slf4j;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.ExecutorType;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream;import java.util.concurrent.ConcurrentHashMap;/** * 封裝Mybatis初始化操作 * 支持創建多env sqlSessionFactory * 整個應用生命周期內相同env的sqlSessionFactory對象只有一個 */@Slf4jpublic class MyBatisTools { private static ConcurrentHashMap<String, SqlSessionFactory> factoryMap = new MyConcurrentHashMap(); private static MyBatisTools myBatisTools; private MyBatisTools() {} public static MyBatisTools getInstance() { if(myBatisTools == null) { synchronized (MyBatisTools.class) {if(myBatisTools == null) { myBatisTools = new MyBatisTools();} } } log.debug('當前一共有: ' + factoryMap.size() +'個SqlSessionFactory實例'); log.debug('他們分別是: ' + factoryMap); return myBatisTools; } public SqlSessionFactory getSessionFactory(String env) { try { // 1. 讀入配置文件 InputStream in = Resources.getResourceAsStream('mybatis_conf.xml'); // 2. 構建SqlSessionFactory(用于獲取sqlSession) SqlSessionFactory sessionFactory = null; synchronized (factoryMap) {if(factoryMap.containsKey(env)) { return factoryMap.get(env);} else { sessionFactory = new SqlSessionFactoryBuilder().build(in, env); factoryMap.put(env, sessionFactory);} } return sessionFactory; } catch (Exception e) { log.error('初始化SqlSessionFactory失敗', e); return null; } } public SqlSession openSession() { return getSessionFactory(null).openSession(); } public SqlSession openSession(boolean autoCommit) { return getSessionFactory(null).openSession(autoCommit); } public SqlSession openSession(ExecutorType executorType, boolean autoCommit) { return getSessionFactory(null).openSession(executorType, autoCommit); }}/** * 繼承原生ConcurrentHashMap,處理null key問題 */class MyConcurrentHashMap extends ConcurrentHashMap { @Override public Object put(Object key, Object value) { if(key == null) { key = 'null'; } return super.put(key, value); } @Override public boolean containsKey(Object key) { if(key == null) { key = 'null'; } return super.containsKey(key); } @Override public Object get(Object key) { if(key == null) { key = 'null'; } return super.get(key); }}

最后就是測試,在AppTest類測試

AppTest

@Slf4jpublic class AppTest { /** * Rigorous Test :-) */ TeacherDao teacherDao = null; @Before public void setUp() { teacherDao = MyBatisTools.getInstance().openSession(true).getMapper(TeacherDao.class); } /** * 練習查詢多個庫(用到了多環境配置) */ @Test public void textqueryById(){ Teacher teacher=teacherDao.queryById(1); System.out.println(teacher); } @Test public void text(){ List<Teacher> teachers=teacherDao.queryAll(); System.out.println(teachers); } /** * 多個參數查詢語句 */ @Test public void testQueryByIdAndAge() { Teacher teacherList = teacherDao.queryByIdAndAge(1, 65); log.info('查詢結果:' + teacherList); } @Test public void testInsert() { // 新增Teacher表 System.out.println('--------------插入前:'); List<Teacher> teacherList = teacherDao.queryAll(); System.out.println(teacherList); int ret = teacherDao.insertTeacher(new Teacher('好人')); log.info('影響的行數: ' + ret); // 比較low的寫法(不推薦) //int ret = teacherDao.insertTeacherByParam('哈哈哥', 99); //log.info('影響的行數: ' + ret); System.out.println('--------------插入后:'); teacherList = teacherDao.queryAll(); System.out.println(teacherList); } @Test public void testUpdate() { Teacher teacher = new Teacher(); teacher.setId(6); teacher.setAge(99); teacher.setTname('喬巴老師'); int rows = teacherDao.updateTeacherById(teacher); log.info('更新行數:' + rows); } @Test public void testDelete() { int rows = teacherDao.deleteTeacherById(13); log.info('刪除行數:' + rows); } @Test public void testinsertTeacherByParam(){int row=teacherDao.insertTeacherByParam('hh',22); System.out.println(row); }}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Mybatis 數據庫
相關文章:
主站蜘蛛池模板: 杏导航aⅴ福利网站 | 日韩99| 免费一级片 | 日日夜夜精品免费视频 | 国产精品二区三区 | 91福利视频导航 | 91短视频版在线观看www免费 | 亚洲在线播放 | 欧美二区三区 | 在线电影亚洲 | 国产精品久久久久久久久久久久 | 成人午夜电影在线 | 午夜精品一区 | 一区二区中文 | 国产精品成人网 | 国产精品久久久久久久午夜 | 久久人人爽人人爽 | 成人高清在线 | 成人av网站在线观看 | 欧美午夜一区二区三区免费大片 | 亚洲综合大片69999 | 成人精品鲁一区一区二区 | 亚洲精品二区 | 亚洲www啪成人一区二区 | t66y最新地址一地址二69 | 日韩在线看片 | 国产欧美综合一区二区三区 | 中文字幕国产视频 | 日韩免费在线观看视频 | 一级免费毛片 | 中文字幕精品一区久久久久 | 国产精品看片 | 国产精品久久久久久久久免费高清 | 欧美色欧美亚洲另类七区 | 国产www | 一区二区三区四区 | av免费网| 日日夜夜精品 | 手机看片169| 爱爱日韩 | 天天插天天操 | 亚洲精品乱码久久久久久金桔影视 | 国产在线观看二区 | 99国内精品久久久久久久 | 99热少妇| 中文字幕日韩一区二区 | 国产高清在线精品一区 | www.久草 | 午夜视频大全 | yy6080久久伦理一区二区 | 精品国产31久久久久久 | 成人午夜剧场 | jizz国产免费 | 国产一区二区资源 | 中文字幕一区二区三 | 欧美日韩视频在线第一区 | 国产老女人精品毛片久久 | 91,看片| 国精产品一区二区三区 | 亚洲精品久久久久999中文字幕 | 久久久久久99精品 | 日韩视频在线观看 | h片免费观看 | 欧美日韩亚洲高清 | 一区二区在线不卡 | 九色视频网站 | 欧美精品第一页 | 国产成人精品久久二区二区 | 福利毛片| 欧美日韩中文字幕在线播放 | 日本一区二区三区免费观看 | 亚洲精品日韩综合观看成人91 | 天天干天天操 | 日本在线播放 | 国产精品一区久久 | 国产成人精品久久二区二区 | 精品一区二区三区在线观看 | 国产乱码精品一区二区三区av | 亚洲精品久久久一区二区三区 | 久久久久久久久久久久网站 | 亚洲精品成人在线 | 91av在| 精品久久一区二区 | 91免费看片网站 | 国精日本亚洲欧州国产中文久久 | 欧美日韩精品一区二区 | 日日干日日操 | 91免费视频| 国产黄色免费小视频 | 久久99精品久久久久久园产越南 | 在线播放亚洲 | 香蕉大人久久国产成人av | 精品视频 免费 | 福利91 | 国产精品久久久久久吹潮 | 国产激情网站 | 亚洲色图88 | 91一级| 国产精品久久九九 | 欧美一区精品 | 欧美人人| 日韩精品一区二区三区 | av在线第一页 | 自拍偷拍专区 | 色久在线| 爱啪导航一精品导航站 | 欧美成人午夜视频 | 日韩在线1 | 免费视频一区二区 | 玖玖久久 | 制服 丝袜 激情 欧洲 亚洲 | 成人亚洲一区二区 | 日本美女一区二区三区 | www.日本三级 | 综合久久久 | 亚洲男人网 | 久久久精品网站 | 自拍偷拍精品 | 国产在线小视频 | 欧美日韩第一页 | 精品久久久久久久久久久 | 国产精品久久久久久久久免费丝袜 | 国产片在线观看 | 日本免费视频在线观看 | 色综合久久久久 | 91亚洲国产成人久久精品网站 | 国产精品久久久久久久久久久久冷 | 天堂精品一区二区三区 | 免费福利网站 | 色综合久久网 | 亚洲精品乱码久久久久久蜜桃不卡 | 狠狠操操| 日韩一区在线视频 | a视频在线免费观看 | 三级黄色片在线播放 | 国产 欧美 日韩 一区 | 欧美激情a∨在线视频播放 成人免费共享视频 | 国产精品毛片久久久久久久 | 69av在线视频 | 久久久蜜桃 | 精品一二三四区 | 久久久精品一区 | 亚洲综合大片69999 | 亚洲啊v| 91免费在线播放 | 久久九| 国产精品毛片无码 | 国产在线拍揄自揄拍视频 | 亚洲精选久久久 | 欧美午夜精品久久久久久人妖 | 狠狠躁夜夜躁人人爽天天高潮 | 久草精品在线 | 精品亚洲一区二区 | 免费亚洲成人 | 亚洲91| 欧美久久久久 | 久久国产精品一区二区三区 | 久久大 | 成人在线视频网站 | 草草视频在线观看 | 精品在线一区二区 | 国产日韩精品入口 | 91久久久久久久久久久久久 | 成人av一区二区三区 | 成人免费在线电影 | 国产xxx护士爽免费看 | 羞羞视频在线网站观看 | 国产在线不卡 | 婷婷网址| 性高湖久久久久久久久aaaaa | 国产欧美精品一区二区三区四区 | 香蕉大人久久国产成人av | 久久在线视频 | 国产一二三四在线 | 日韩中文在线播放 | 青青草综合在线 | 日韩一区二区三区在线观看 | 精品亚洲一区二区三区 | 99久久免费视频在线观看 | 久久精品亚洲精品国产欧美kt∨ | 国产精品欧美一区二区三区 | 国产午夜精品一区二区三区 | 神马久久久久久久久久 | 91午夜伦伦电影理论片 | 亚洲高清视频在线观看 | 91超碰在线播放 | 亚洲一区免费视频 | 日韩免费视频 | 91中文字幕 | 精国产品一区二区三区四季综 | 久久精美视频 | 日韩免费网站 | 精品亚洲成a人在线观看 | 国产精品成人久久久久 | 性免费网站| 国产精品久久久久久亚洲调教 | 9l蝌蚪porny中文自拍 | 国产一区二区视频在线观看 | 欧美一区二区三区成人 | 四虎永久免费在线 | 天天摸夜夜操 | 国产精品精品久久久 | 精品久久久久久久久久久久 | 欧美亚洲视频在线观看 | 久久天天躁狠狠躁夜夜躁2014 | 不卡一区二区三区四区 | 中文字幕av一区二区三区 | 视频一区在线播放 | 亚洲一区 | 四虎免费紧急入口观看 | 日韩中文一区二区三区 | 中文字幕在线观看一区二区三区 | 日本久久久久久 | 免费 视频 1级 | 久久99操 | 性国产xxxx乳高跟 | 国内精品国产三级国产在线专 | xnxx 美女19| 激情五月婷婷 | 日韩欧美国产一区二区 | 色九九 | 国产精品日韩欧美一区二区三区 | 成人小视频在线观看 | 黄色一级大片网站 | 午夜电影福利 | 日韩在线一区二区三区 | 夜夜爽99久久国产综合精品女不卡 | 羞视频在线观看 | 成人福利在线 | 久久久免费精品 | 狠狠操夜夜操天天操 | 欧美一级在线观看 | 极品毛片 | 在线碰| 国产目拍亚洲精品99久久精品 | 国产精品美女久久久久aⅴ国产馆 | 欧美在线观看一区二区 | 先锋久久| 国产2区 | 欧美性区 | 欧美激情小视频 | 国产亚洲一区二区三区在线观看 | 国产麻豆乱码精品一区二区三区 | 天堂亚洲 | 久久成人免费 | 午夜色视频在线观看 | 国产精品永久免费 | 亚洲不卡视频 | 欧美日韩成人在线观看 | 成人黄色在线视频 | 羞羞视频免费观看入口 | 狠狠撸在线 | 欧美小电影 | 国产不卡在线 | 高清av网站 | 欧美在线播放一区二区三区 | 亚洲精品成人在线 | 亚洲精品乱码久久久久久蜜糖图片 | 精品久久一区二区三区 | 免费黄色av | 亚洲精品中文字幕乱码无线 | 精品一区二区三区在线视频 | 永久看片| 一区二区三区四区不卡视频 | 国产激情久久久久久 | 久久综合九色综合欧美狠狠 | 午夜成人免费电影 | 33eee在线视频免费观看 | 91精品国产欧美一区二区成人 | 91破解版在线 | 亚洲 | 亚洲www视频 | 日韩欧美一区二区三区 | 五月天婷婷激情视频 | 亚州av在线 | 国产最新网站 | 日韩免费一区 | 国产视频一二区 | 久久天堂av综合合色蜜桃网 | 欧美视频在线一区 | 日韩一区二区免费视频 | 蜜桃视频成人m3u8 | 国产精品96久久久久久久 | 国产精品一区二区三区久久 | 国产精品久久久久久久久免费丝袜 | 成人午夜影院 | 久久精品欧美 | 日韩中文字幕免费观看 | 99久久99热这里只有精品 | 日韩国产一区二区 | 国产成人精品一区二区在线 | 少妇精品视频在线观看 | 成人av观看 | 亚洲欧美一区二区三区视频 | 精品第一页 | 久久国产精品无码网站 | 午夜在线 | 国产一区欧美 | 欧美一区二区三区免费在线观看 | 欧美性猛交一区二区三区精品 | 狠狠色狠狠色合久久伊人 | 亚洲人人 | 日韩精品在线观看一区 | 羞羞av在线| 色综合一区二区三区 | 一区二区日韩精品 | 欧美日韩国产一区二区三区 | 国产电影一区二区 | 永久黄网站色视频免费 | 国产草草视频 | 欧美日韩精品一区二区三区四区 | 久久大陆 | 天堂中文字幕 | 波多野结衣 一区二区三区 精品精品久久 | 亚洲伊人久久综合 | 国产中文一区 | 天天干夜夜弄 | 欧美性一区二区三区 | 欧美a级成人淫片免费看 | 日韩免费在线观看视频 | 一区二区三区精品视频 | 女人夜夜春高潮爽av片 | 亚洲国产精品99久久久久久久久 | 国产欧美日韩中文字幕 | 黄色成人免费看 | 男女视频网站 | 一区二区在线免费观看 | 欧美在线观看视频 | 日韩中文字幕免费视频 | 日本免费视频 | 麻豆av电影在线观看 | 欧美日韩国产一区二区三区 | 影音先锋中文字幕在线 | 欧日韩毛片 | 久久久久久九九九 | 亚洲国产精品成人 | 在线视频中文字幕 | 色女人的天堂 | 欧美一级片在线观看 | 国产精品夜色一区二区三区 | 国外成人在线视频网站 | 黄色片免费在线观看 | 久久久二 | 精品久久久久久久久福利 | 中国一级毛片 | 中文字幕第一页在线 | 欧美一级做性受免费大片免费 | 中文字幕av免费 | 爱爱视频在线观看 | 欧美日一区二区 | 亚洲一区在线免费观看 | 亚洲欧美综合乱码精品成人网 | 黑人精品xxx一区一二区 | 可以在线看的黄色网址 | 国产精品一区三区 | 成人精品鲁一区一区二区 | 成人欧美一区二区三区白人 | 天天澡天天狠天天天做 | 欧美日韩久久 | 欧美自拍视频 | 杏导航aⅴ福利网站 | 不用播放器的毛片 | 欧美成人在线免费观看 | 精品免费视频 | 精品久久久久久久久久久久久久久久久久 | 亚洲男人天堂2023 | 一道本一区 | 天堂久久久久 | 亚洲综合视频一区 | 99re国产精品视频 | 欧美日韩综合精品 | 毛片免费观看视频 | 国产一区二区三区高清 | 久久久久亚洲一区二区三区 | 亚洲午夜视频 | 中文字幕视频在线观看 | 在线天堂av | 99热精品在线 | 久久黄色网 | 色九九| 天天碰天天操 | 99成人| 欧美在线观看视频 | 精品婷婷 | 麻豆毛片 | 国产高清在线看 | 国产日韩一区二区三区 | 亚洲精品第一 | 亚洲人成在线播放 | 免费的国产视频 | 性国产xxxx乳高跟 | 岛国一区 | 黄色一级片视频 | 国产伦精品一区二区三区照片91 | 国产色 | 综合网av| av免费看在线 | 北条麻妃一区二区三区中文字幕 | 国产亚洲精品综合一区91555 | 国产中文字幕一区二区三区 | 午夜激情在线播放 | 欧美激情五月 | 国产不卡视频 | 国产一区二区三区91 | 久久久久国产精品 | 黄色在线视频网 | 日韩国产欧美精品 | 欧美视频二区 | 国产高清不卡在线 | 99热69| 色香蕉久久 | 一区二区三区中文字幕 | 亚洲精品二区 | 91精品在线播放 | 91精品国产日韩91久久久久久 | a中文字幕 | 亚洲久久 | 毛片在线免费 | 日韩精品一区二区三区在线观看 | 成人精品一区二区 | 亚洲综合一区二区三区 | 91av国产精品 | 韩国精品 | 欧美精品一区自拍a毛片在线视频 | 伊人春色网 | 久久久久久99 | 久久99精品久久久 | 香蕉视频黄色 | 国产日韩一区二区三区 | 久久av一区二区 | 自拍偷拍在线视频 | 国产拍揄自揄精品视频麻豆 | 亚洲欧美视频一区 | 国产精品毛片一区二区三区 | 91精品国产综合久久精品 | 簧片毛片| 在线中文字幕视频 | 美女视频一区 | 国产欧美一区二区视频 | 1区2区3区视频 | 日本黄色免费大片 | 久久国产欧美日韩精品 | 午夜精品一区二区三区免费视频 | 成人不卡 | 99成人在线视频 | 超碰97av| 免费a视频| 日韩视频一区在线观看 | 亚洲不卡在线 | www.一区| 91麻豆精品国产91久久久久久 | 成人精品视频在线 | 国产精品成人久久久久 | 久久99精品久久久久久琪琪 | 精品久久久久香蕉网 | 91小视频 | 成人男女激情免费视频 | 91精品国产91久久久久久蜜臀 | 91精品久久久久久久99 | 日日爽天天操 | 黄免费视频 | www.国产精品.com | 国产高清在线精品一区二区三区 | 日本黄色大片免费 | 山岸逢花在线观看无删减 | 黄色一级毛片 | 九九热这里都是精品 | 91在线区 | 99视频精品在线 | 国产免费av一区二区三区 | 久久美女视频 | 日本少妇bbbb爽爽bbb美 | 国产精品国色综合久久 | 成人午夜在线观看 | 男女中文字幕 | 国产91在线播放精品 | 日韩精品久久久久久 | 久久不卡日韩美女 | 久久99精品国产麻豆婷婷洗澡 | 久久中文字幕一区 | 精品一区二区三区久久久 | 一级黄色毛片免费 | 欧美一区二区三区在线视频 | 欧美日韩精品 | 国产一区二区精品久久 | 午夜影院在线免费观看 | 精品亚洲一区二区三区 | 亚洲a精品 | 欧美性18| 亚洲高清av | 欧美精品在线观看免费 | 曰批视频在线观看 | 色婷婷综合久久久中文字幕 | 播放一区 | 狠狠爱天天操 | 亚洲国产精品免费 | 欧美一级免费 | 一区在线免费观看 | 久久精品一区二区三区四区 | 成人精品一区二区三区 | 亚洲一区国产精品 | 成人精品网站在线观看 | 久久国产成人 | 日本精品视频在线观看 | 成人亚洲网 | 欧美国产日韩一区 | 99视频免费观看 | 成人性视频免费网站 | 亚洲一区二区三区视频 | 国偷自产一区二区免费视频 | 国产丝袜在线 | 91视频网 | 亚洲精品乱码久久久久久蜜桃91 | 欧美一区二区三区黄 | 亚洲精品综合 | 色官网 | 欧美天天 | 日本亚洲国产一区二区三区 | 亚洲综合视频 | 一级毛片在线看aaaa | 91春色 | av在线干 | 国产超碰人人模人人爽人人添 | 日韩a∨| 国产日韩在线视频 | 亚洲精品乱码8久久久久久日本 | 亚洲国产精品成人 | 欧美综合一区 | 色天天综合久久久久综合片 | 精品久久久久久国产 | 亚洲深深色噜噜狠狠网站 | 精品一区二区在线观看 | 97久久久 | a级三四级黄大片 | 中文字幕一区二区三 | 久久久精品一区 | 日韩激情综合 | 在线观看毛片网站 | 成人二区| 欧美高清成人 | 99精品欧美一区二区三区综合在线 | 久久国内精品 | 亚洲国产精品免费 | 天天干狠狠干 | 久久久国产视频 | 日本福利视频网 | 青青草视频网站 | 久久久久久亚洲一区二区三区蜜臀 | 在线观看av国产一区二区 | 精品一区二区三区三区 | 国产精品久久久久久吹潮 | www嫩草 | 国产精品久久久久久久久久久免费看 | 精品国产乱码久久久久久久软件 | 日韩欧美一区二区三区免费观看 | 亚洲视频在线播放 | 亚洲一级一片 | 国产伦精品一区二区三区四区视频 | 久久久精品网站 | 国产精品久久久久久久久久久小说 | 最新黄色网址在线播放 | www.久久久久 | 在线中文字幕视频 | www91在线观看 | 五月婷婷综合激情网 | 亚洲国产婷婷香蕉久久久久久99 | www国产成人免费观看视频,深夜成人网 | 午夜影院久久 | 婷婷久久综合九色综合绿巨人 | 日韩a视频 | 特级a做爰全过程片 | 山外人精品| 99国产精品99久久久久久 | 男女全黄一级一级高潮免费看 | 一级毛片在线 | 亚洲精品成人免费 | 日韩1区3区4区第一页 | 国产一区二区三区在线视频 | 色黄视频在线看 | 成人av影视在线观看 | 亚洲日本国产 | 欧美黄 片免费观看 | 91国产精品入口 | 精品久久一区二区三区 | 中文字幕在线免费播放 | 久久亚洲欧美日韩精品专区 | 一级毛片免费网站 | 国产黄色一级大片 | 亚洲人成在线播放 | 日韩成人一区 | 毛片入口 | 一区二区观看 | 亚洲高清免费 | 欧美国产91 | 亚洲综合无码一区二区 | 亚洲精品视频在线 | 婷婷激情在线 | 在线精品亚洲欧美日韩国产 | 狠狠撸在线视频 | 日韩爱爱视频 | 亚洲精品第一页 | 国产精品一区亚洲二区日本三区 | 91免费在线视频 | 亚洲精品网址 | 日韩免费| 国产精品色在线网站 | 在线观看日韩av | h免费在线 | 黄色免费网站在线看 | 国产一区久久 | 91社影院在线观看 | 瑟瑟视频在线看 | 精品久久久久久久久久久院品网 | 久久国产精品久久久久久电车 | 精品日韩一区二区 | 欧美一二区 |