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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:8日期:2023-10-19 17:58:00
1、關(guān)于#{}占位符

先來(lái)看以下的示例,該示例是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'> <!-- 根據(jù)用戶編號(hào),查詢單個(gè)用戶實(shí)體 --> <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映射配置文章中,輸入?yún)?shù)需要用占位符來(lái)標(biāo)識(shí)對(duì)應(yīng)的位置。

在傳統(tǒng)的JDBC編程中,占位符用“?”來(lái)標(biāo)識(shí),然后在加載SQL之前按照“?”的位置設(shè)置參數(shù)。

而“#{}”在MyBatis中也代表一種占位符,該符號(hào)接受輸入?yún)?shù),在大括號(hào)中編寫(xiě)參數(shù)名稱來(lái)接受對(duì)應(yīng)參數(shù)。

“#{}”接受的輸入?yún)?shù)的類型可以是簡(jiǎn)單類型、普通JavaBean或者HashMap。

當(dāng)接受簡(jiǎn)單類型時(shí),“#{}”中可以寫(xiě)“value”或者其他任意名稱。

如果接受的是JavaBean,它會(huì)通過(guò)OGNL讀取對(duì)象中的屬性值。

2、關(guān)于${}拼接符

再來(lái)看以下的示例,該示例是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'> <!-- 根據(jù)用戶名稱,模糊查詢用戶列表 --> <select parameterType='java.lang.String' resultType='com.pjb.mybatis.po.User'> SELECT * FROM tb_user WHERE user_name LIKE ’%${value}%’ </select></mapper>

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

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

“${}”接受輸入?yún)?shù)的類型可以是簡(jiǎn)單類型、普通JavaBean或者HashMap。

當(dāng)接受簡(jiǎn)單類型時(shí),“${}”中只能寫(xiě)“value”,而不能寫(xiě)其他任意名稱。

如果接受的是JavaBean,它會(huì)通過(guò)OGNL讀取對(duì)象中的屬性值。

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

${屬性:默認(rèn)值}

即在所需引入的屬性名的后面添加“:”引號(hào),然后緊跟著填寫(xiě)屬性不存在或?yàn)榭諘r(shí)的默認(rèn)值。

【示例】設(shè)置“${}”拼接符的默認(rèn)值。

(1)創(chuàng)建數(shù)據(jù)庫(kù)連接的屬性文件(db.properties)

在src目錄下創(chuàng)建db.propertie屬性文件,并使用“#”符號(hào)將屬性項(xiàng)jdbc.username和jdbc.password注釋掉,表示這兩個(gè)屬性項(xiàng)未進(jìn)行配置。

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

要使用“${}”拼接符中設(shè)置一個(gè)默認(rèn)值,需要在properties標(biāo)簽中設(shè)置啟用拼接符默認(rèn)值的配置項(xiàng)。

在MyBatis配置文件(mybatis-config.xml)中,使用<properties>標(biāo)簽加載數(shù)據(jù)庫(kù)連接屬性文件(db.properties),并在該標(biāo)簽中設(shè)置啟用拼接符默認(rèn)值的配置項(xiàng),該配置如下:

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

注意:在MyBatis配置文件(mybatis-config.xml)中,<properties>標(biāo)簽的配置必須寫(xiě)在<settings>標(biāo)簽的上面,因?yàn)镸yBatis中的配置,不但有類型限制,還有順序限制。

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

(3)編寫(xiě)數(shù)據(jù)庫(kù)配置信息,并使用“${}”拼接符的默認(rèn)值。

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

說(shuō)明:

由于在db.propertie屬性文件中,已經(jīng)將jdbc.username和jdbc.password屬性項(xiàng)注釋掉了,然后在上面的配置信息中,給username和password配置項(xiàng)中的“${}”拼接符中設(shè)置默認(rèn)值,這樣程序在啟動(dòng)時(shí),就會(huì)讀取默認(rèn)值。

補(bǔ)充:MyBatis映射——SQL占位符及傳參

簡(jiǎn)介

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

關(guān)于占位符與字符拼接:

占位符:占位符就是在某個(gè)地方占領(lǐng)一個(gè)位置,把它單獨(dú)作為某個(gè)東西,比如這里就是把它作為 值。

#{}表示一個(gè)占位符號(hào),通過(guò)#{}可以實(shí)現(xiàn) preparedStatement 向占 位符中設(shè)置值, 自動(dòng)進(jìn)行 java

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

字符拼接:字符拼接就是簡(jiǎn)單的對(duì)字符串拼接。沒(méi)有特殊的其它含義。

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

關(guān)于@Param:

在用注解來(lái)簡(jiǎn)化xml配置的時(shí)候(比如Mybatis的Mapper.xml映射文件中的sql參數(shù)引入);

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

#{}: 解析為一個(gè) JDBC 預(yù)編譯語(yǔ)句(prepared statement)的參數(shù)標(biāo)記符,一個(gè) #{ } 被解析為一個(gè)參數(shù)占位符 。 ${}: 僅僅為一個(gè)純碎的 string 替換,在動(dòng)態(tài) SQL 解析階段將會(huì)進(jìn)行變量替換。

MyBatis 的真正強(qiáng)大在于它的映射語(yǔ)句

Mapper.xml映射文件中定義了操作數(shù)據(jù)庫(kù)的sql,每個(gè)sql是一個(gè)statement,映射文件是mybatis的核心。

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

實(shí)例步驟

先建好實(shí)體類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文件(用于配置數(shù)據(jù)源)、定義類型別名(全局)、配置多套環(huán)境的數(shù)據(jù)庫(kù)連接參數(shù)及引入哪些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來(lái)代替全路徑名了,減少配置的復(fù)雜度。 --> <typeAlias type='com.lanou3g.mybaties.bean.Teacher' alias='Teacher' /> <!--default屬性,這個(gè)屬性作用就是指定當(dāng)前情況下使用哪個(gè)數(shù)據(jù)庫(kù)配置, 也就是使用哪個(gè)<environment>節(jié)點(diǎn)的配置, default的值就是配置的<environment>標(biāo)簽元素的id值。--> <environments default='test'> <environment id='test'> <!-- 事務(wù)管理器: MANAGED: 這個(gè)配置就是告訴mybatis不要干預(yù)事務(wù),具體行為依賴于容器本身的事務(wù)處理邏輯。 JDBC: 這個(gè)配置就是直接使用了 JDBC 的提交和回滾設(shè)置,它依賴于從數(shù)據(jù)源得到的連接來(lái)管理事務(wù)作用域。 --> <!-- 使用jdbc事務(wù)管理 --> <transactionManager type='JDBC'/> <!-- 數(shù)據(jù)庫(kù)連接池 --> <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>用來(lái)在mybatis初始化的時(shí)候,告訴mybatis需要引入哪些Mapper映射文件。--> <mappers> <!--通過(guò)class屬性指定mapper接口名稱,此時(shí)對(duì)應(yīng)的映射文件必須與接口位于同一路徑下, 并且名稱相同--><!--通過(guò)resource屬性引入classpath路徑的相對(duì)資源--> <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對(duì)應(yīng)空Dao接口的全名 --><!--namespace屬性在MyBatis中,Mapper中的namespace用于綁定Dao接口的,即面向接口編程。它的好處在于當(dāng)使用了namespace之后就可以不用寫(xiě)接口實(shí)現(xiàn)類,業(yè)務(wù)邏輯會(huì)直接通過(guò)這個(gè)綁定尋找到相對(duì)應(yīng)的SQL語(yǔ)句進(jìn)行對(duì)應(yīng)的數(shù)據(jù)處理--><mapper namespace='com.lanou3g.mybaties.dao.TeacherDao'> <!-- 此處的id是查詢語(yǔ)句的名稱,對(duì)應(yīng)接口中的方法名 --> <!--指定 resultType 返回值類型時(shí) Teacher 類型的, Teacher 在這里是一個(gè)別名,代表的是 com.lanou3g.mybaties.bean.Teacher 對(duì)于引用數(shù)據(jù)類型,都是將大寫(xiě)字母轉(zhuǎn)小寫(xiě),比如 HashMap 對(duì)應(yīng)的別名是 ’hashmap’ 基本數(shù)據(jù)類型考慮到重復(fù)的問(wèn)題,會(huì)在其前面加上 ’_’,比如 byte 對(duì)應(yīng)的別名是 ’_byte’--> <select resultType='Teacher'> <!-- 通過(guò) resultType 指定查詢的結(jié)果是 Teacher 類型的數(shù)據(jù) 只需要指定 resultType 的類型,MyBatis 會(huì)自動(dòng)將查詢的結(jié)果映射成 JavaBean 中的屬性 --> select * from teacher; </select> <!-- 帶一個(gè)簡(jiǎn)單類型的參數(shù), 這種情況下parameterType屬性可以省略, mybatis可以自動(dòng)推斷出類型 --> <select resultType='Teacher'>select * from teacher where id = #{id}; </select> <!-- 帶兩個(gè)參數(shù),需要在接口中通過(guò)@Param注解指定名稱(因?yàn)榫幾g時(shí)參數(shù)名不會(huì)保留) --> <select resultType='Teacher'> select * from teacher where id = #{id} and age &lt;= #{age}; </select> <!-- insert、update、delete的返回值都是int(影響行數(shù)) --> <!-- 自定義類型參數(shù),通過(guò)#{屬性名}可以直接獲取引入類型參數(shù)的屬性值 --> <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>

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

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初始化操作 * 支持創(chuàng)建多env sqlSessionFactory * 整個(gè)應(yīng)用生命周期內(nèi)相同env的sqlSessionFactory對(duì)象只有一個(gè) */@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('當(dāng)前一共有: ' + factoryMap.size() +'個(gè)SqlSessionFactory實(shí)例'); log.debug('他們分別是: ' + factoryMap); return myBatisTools; } public SqlSessionFactory getSessionFactory(String env) { try { // 1. 讀入配置文件 InputStream in = Resources.getResourceAsStream('mybatis_conf.xml'); // 2. 構(gòu)建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問(wèn)題 */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); }}

最后就是測(cè)試,在AppTest類測(cè)試

AppTest

@Slf4jpublic class AppTest { /** * Rigorous Test :-) */ TeacherDao teacherDao = null; @Before public void setUp() { teacherDao = MyBatisTools.getInstance().openSession(true).getMapper(TeacherDao.class); } /** * 練習(xí)查詢多個(gè)庫(kù)(用到了多環(huán)境配置) */ @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); } /** * 多個(gè)參數(shù)查詢語(yǔ)句 */ @Test public void testQueryByIdAndAge() { Teacher teacherList = teacherDao.queryByIdAndAge(1, 65); log.info('查詢結(jié)果:' + 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('影響的行數(shù): ' + ret); // 比較low的寫(xiě)法(不推薦) //int ret = teacherDao.insertTeacherByParam('哈哈哥', 99); //log.info('影響的行數(shù): ' + 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('更新行數(shù):' + rows); } @Test public void testDelete() { int rows = teacherDao.deleteTeacherById(13); log.info('刪除行數(shù):' + rows); } @Test public void testinsertTeacherByParam(){int row=teacherDao.insertTeacherByParam('hh',22); System.out.println(row); }}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章:
主站蜘蛛池模板: 国产日产欧产美一二三区 | 中文字幕乱码人妻一区二区三区 | 日本欧美三级 | 久久久久久999 | 又黄又爽又色的视频 | 大陆少妇xxxx做受 | 青草青草久热精品视频国产4 | av网站入口| 亚洲一级免费毛片 | 久久久久逼 | 久久久久网址 | 激情网网站 | 欧美激情视频一区 | av永久免费观看 | 亚洲国产精品成人无久久精品 | 大sao货你好浪好爽好舒服视频 | 少妇性l交大片免费快色 | 国产人妻精品一区二区三区 | 拍拍拍无挡免费视频 | 亚洲精品国产精品国自产 | 欧美性猛交xxxx免费看蜜桃 | 免费观看性生活大片3 | 亚洲综合激情网 | 日本丰满肉感bbwbbwbbw | 久久综合一区 | 色一五月 | 装睡被陌生人摸出水好爽 | 成人在线观看小视频 | 久久免费片 | 久久精品无码一区二区无码 | 日韩中文字幕视频 | 老熟妇午夜毛片一区二区三区 | 国产精品欧美一区二区三区不卡 | 精品亚洲一区二区三区在线播放 | 国产成人精品三上悠亚 | 亚洲欧美日韩精品在线 | 精品久久久久久国产 | 久久久久人妻一区精品色 | 一区二区视频免费看 | 久久成人人人人精品欧 | 毛片毛片毛片毛片毛片毛片毛片 | 色婷婷激婷婷深爱五月 | 97久久超碰精品视觉盛宴 | 久久97久久97精品免视看秋霞 | 香蕉免费一区二区三区 | 国自产拍偷拍精品啪啪模特 | 巨乳校园h1v1 | 中文字幕乱码亚洲无线三区 | 久久艹在线 | 乱精品一区字幕二区 | 中文字幕不卡在线观看 | 四十路在线 | 1000部拍拍拍18勿入在线看 | 中文在线一区 | 波多野结衣午夜 | 国产精品99久久久久久一二区 | 日韩 欧美 自拍 | 国产日韩免费视频 | 桃色综合网 | 伊人久久大香线蕉av一区二区 | 亚洲日韩国产二区无码 | 亚洲另类激情视频 | 欧美日韩一区二区三区视频播放 | 日本精品婷婷久久爽一下 | 色综合久久久久综合体桃花网 | 日韩一区二区三区欧美 | 欧美性天堂 | 亚洲成a人片在线观看中文 精品久久久久久久中文字幕 | 国产丝袜美腿一区二区三区 | 欧美视频亚洲 | 亚洲免费av网站 | 夜夜爽av福利精品导航 | 亚洲丁香五月激情综合 | 欧美成人r级一区二区三区 欧美成人tv | 99精品一区二区三区无码吞精 | 亚洲国产一区久久yourpan | 欧美日本免费一区二区三区 | 妹子色综合 | jizz成人| 97精品超碰一区二区三区 | 国产午夜禁区精品视频 | 成人高清免费 | 亚洲欧美日韩成人一区 | 成人在线视频一区二区 | 九九热视 | 男女精品国产乱淫高潮 | 性感美女一区 | 少妇av在线| 国产精品久久久久国产三级传媒 | 国产在线播放一区 | 网站一区二区 | 亚洲成a人片在线观看无码专区 | 欧美成人精品一区 | 国产chinese精品av | 国产毛片视频 | 日韩精品人妻系列无码专区免费 | 精品日产乱码久久久久久仙踪林 | 丝袜 亚洲 欧美 日韩 综合 | 欧美色图88 | 国产aⅴ片 | 亚洲一区中文字幕永久在线 | 激情内射日本一区二区三区 | 色综合久久网 | 日本黄色不卡视频 | 久久国产精品-国产精品 | 一道本久久| 日本十八禁视频无遮挡 | 色午夜一av男人的天堂 | 日本福利视频一区 | 成年片色大黄全免费软件到 | 天天综合网天天综合狠狠躁 | 久久和欧洲码一码二码三码 | 天天射综合网站 | 鸥美一级片 | 日韩精品久久久久久久软件91 | 丁香花在线影院观看在线播放 | 久久99热只有频精品8 | 黄色天堂av| 久久精品欧美一区 | 爱情岛亚洲首页论坛小巨 | 九九九久久久精品 | 免费看一级黄色片 | 国产午夜精品视频免费不卡69堂 | 欧美日韩综合久久 | 国产三级毛片 | 天天婷婷 | 长河落日| 国产aaa视频 | 欧美日韩不卡视频 | 7777精品伊人久久久大香线蕉 | 丰满人妻熟妇乱又伦精品视 | 亚洲黄色自拍 | 久久精品国产99精品国产2021 | 国产视频1区2区3区 国产视频69 | 国产做受高潮 | 中日韩黄色片 | 一本色道久久综合亚洲精品图片 | 新国产三级在线观看播放 | 少妇扒开粉嫩小泬视频 | 免费的毛片 | 国产精品wwwdhxxx | 亚洲国产成人一区二区精品区 | 激情六月天婷婷 | 午夜精品一区二区三区的区别 | 最近中文字幕mv | 日韩狠狠 | 成人五区 | 色哟哟av | 国产亚洲一区二区三区四区 | 欧美午夜性春猛交xxxx按摩师 | 综合香蕉 | 成人天堂资源www在线 | 亚洲女同女同女同女同女同69 | 精国产品一区二区三区a片 日韩av在线观看免费 | 国产免费福利视频 | 又爽又黄又无遮挡的视频 | 色婷婷av一区二区三区之一色屋 | 国产精品久久久久9999小说 | 狠狠躁18三区二区一区传媒剧情 | 欧美精品网站在线观看 | 北条麻妃一对7黑人mv | 国产精品久久久久久久久免费高清 | 国产又爽又大又黄a片 | 91午夜免费视频 | 日韩av在线不卡 | 日本成人免费在线 | 开心激情综合网 | 欧美伊人网 | 性色av一区二区 | 日本www黄色| 亚洲人成中文字幕在线观看 | 久久精品视频在线看15 | 色无极影院亚洲 | 中文字幕无线精品亚洲乱码一区 | 成人精品鲁一区一区二区 | 国产av永久无码天堂影院 | 成人毛片网 | 国产视频在线看 | 久久婷婷精品 | 久久久网站 | 成人羞羞国产免费软件小说 | 亚洲愉拍99热成人精品 | 欧美精品成人a区在线观看 欧美精品成人久久 | 亚洲午夜无码毛片av久久京东热 | 黄色av网站免费看 | 少妇沉沦哀羞迎合呻吟视频 | 亚洲九九 | 杂技xxx裸体xxx欧美 | 丁香桃色午夜亚洲一区二区三区 | 久久综合亚洲色一区二区三区 | 亚洲一线在线观看 | 欧美性受视频 | 欧美少妇xxx| wwwxxx国产| 女同理伦片在线观看禁男之园 | 国产无遮挡又黄又爽高潮 | 精品国产一区二区三区国产馆杂枝 | 欧美一级在线免费观看 | 99re6这里有精品热视频 | 久久99精品久久久久子伦 | 欧美午夜一区二区福利视频 | ts人妖在线观看 | 555www成人网 | 亚洲人成无码网站久久99热国产 | 亚洲综合在线另类色区奇米 | 91精品综合久久久久久五月天 | 日本系列第一页 | 一区二区三区在线视频播放 | 欧美中文字幕一区二区三区 | 加勒比在线一区 | 伊人久久久大香线蕉综合直播 | 欧美最猛黑人xxxx黑人猛交98 | 日本理论片a级奶大 | av免费毛片 | 亚洲五月婷 | 日日骑夜夜操 | 久久亚洲人成网站 | 在线免费日韩av | 空姐毛片 | 国产黄色在线免费看 | 亚洲精品99999| 国产激情a| 国产一二三四在线视频 | 成人一级黄色 | 久热国产精品视频 | av免费天堂| 日韩欧美在线免费 | 精品国产精品三级精品av网址 | porn国产| 久久久久久久久久久网 | 精品久久久久久久久久岛国gif | 免费观看理伦片在线播放 | 91国产丝袜在线播放动漫 | 日本做床爱全过程激烈视频 | 国产麻豆精品久久一二三 | 精品日韩一区二区三区免费视频 | 少妇无码一区二区三区 | 日韩三级在线 | 成人免费看片在线观看 | 床上激情网站 | 人妻洗澡被强公日日澡电影 | 无码人妻视频一区二区三区 | 亚洲精品一区国产 | 中午日产幕无线码1区 | 欧美精品国产综合久久 | 日本精品入口免费视频 | 欧美色图亚洲自拍 | 一区二区三区日韩 | 日韩精品无码一区二区 | 性生大片免费观看一片黄动漫 | 日韩精品三区 | 中文字幕日韩欧美一区二区三区 | theporn国产在线精品 | 日韩精品一区二区三区视频 | a男人的天堂久久a毛片 | 狠狠色先锋资源网 | 69亚洲精品久久久 | 精品国产污污免费网站入口 | 乡村美女户外勾搭av | 91精品久久久久久久久不口人 | 亚洲老妈激情一区二区三区 | 免费av日韩 | 国产人与禽zoz0性伦多活几年 | 少妇毛片久久久久久久久竹菊影院 | 国产精品一线天 | 黄色一二三区 | 欧美日韩国产一级片 | 另类三区| 色吊丝中文字幕 | 污污网站在线观看 | 日日骚网| 精品一区在线播放 | 国产在线黄 | 噜噜色综合噜噜色噜噜色 | 538国产精品一区二区 | 国产一道本| 四虎永久在线精品免费一区二区 | 亚洲日本va中文字幕久久 | 又黄又爽又刺激久久久久亚洲精品 | 亚洲免费av网 | 五月婷婷丁香综合 | 中文字幕在线观看视频www | 天天躁日日躁狠狠躁av麻豆 | 欧美交换乱淫粗大 | 野外少妇愉情中文字幕 | 97久久精品无码一区二区天美 | 日本亚州视频在线八a | 婷婷国产一区二区三区 | 国产成人无码一区二区三区在线 | 亚洲精品久久久久中文字幕m男 | 人人操天天射 | 免费精品99久久国产综合精品应用 | 亚洲一区 视频 | 国产精品欧美精品 | 欧美成人精品第一区二区三区 | 美女131爽爽爽 | 爱情岛亚洲品质自拍极速福利网站 | 美州a亚洲一视本频v色道 | 蜜桃av一区 | 成人精品在线观看视频 | 国产精品久久久国产盗摄 | 九九精品九九 | 狠狠狠色丁香婷婷综合久久88 | 久久ク成人精品中文字幕 | 在线不卡免费av | 成人黄网站片免费视频 | 免费在线观看成人 | 欧美大片aaaaa免费观看 | 日韩免费观看av | 成人精品一区二区三区视频播放 | 国产一区二区三区乱码 | 久久国产欧美日韩精品 | 国产在线2| 村上凉子在线播放av88 | 国产精品手机在线观看 | 亚洲大尺度无码无码专区 | 97涩涩网 | 欧美性生交xxxxx久久久 | 欧美性猛交xxxx乱大交3 | 国产丰满麻豆 | 亚洲精品乱码久久久久久不卡 | 丰满少妇高潮惨叫久久久 | 国产精品黄色片 | 一级黄色免费 | 好紧好爽再进去一点在线视频 | xxx国产精品午xxx | 国产一线二线在线观看 | 午夜h视频 | 99视频在线| 精品久久久三级丝袜 | 亚洲一卡二卡在线观看 | 亚洲一区av在线观看 | 青青艹视频在线 | 成人在线手机视频 | 毛片毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 久久精品无码精品免费专区 | 六月婷婷在线观看 | 亚洲精品~无码抽插 | 波多野结衣在线视频播放 | 亚洲国产精品色拍网站 | 成人无码www免费视频 | 精品国产乱码久久久久久1区二区 | 10000部美女免费大片aaa | 啪啪视屏| 摸丰满大乳奶水www免费 | 视频一区二区在线播放 | 久久视频一区二区 | 伊人欧美在线 | a级高清毛片| 熟女毛毛多熟妇人妻aⅴ在线毛片 | 国产91丝袜 | 亚洲精品永久在线观看 | 日韩精品久久久久 | 无码中文字幕乱码一区 | 农村少妇无套内谢粗又长 | 无码精品尤物一区二区三区 | 玩弄少妇人妻 | 国产普通话对白刺激 | 激情二区 | 欧美一区二区伦理片 | 人成在线观看 | av三级毛片 | 屁屁影院一区二区三区 | 国产精品亚洲αv天堂无码 久久精品a一国产成人免费网站 | 国产精品第157页 | 国产精品1区 | 亚洲逼院 | 国产偷抇久久精品a片69 | 国产欧美日韩一区二区加勒比 | 水蜜桃久久夜色精品一区怎么玩 | 国产毛片91 | 亚洲激情片 | 国产美女引诱水电工 | 国产日韩精品视频一区二区三区 | 欧美偷窥清纯综合图区 | 久久久久久久久久久久国产精品 | 欧美激烈精交gif动态图 | 先锋影音资源2中文字幕 | 久久最新免费视频 | 日本中文字幕高清 | 国产精品久久久久一区二区三区 | 毛片网站免费 | 成全世界免费高清观看 | 开心五月色婷婷综合开心网 | 国产精品高清一区二区 | 中文在线观看免费 | 成人免费视频在线播放 | 一区二区在线免费视频 | 欧美黄一区 | 色涩网站 | 亚洲天堂美女 | 999精品免费视频 | 伊人嫩草久久欧美站 | 久久视频免费看 | 久久精品成人av | 午夜精品国产精品大乳美女 | 国产做受高潮 | 日韩毛片视频 | www亚洲一区| 国产91精品高清一区二区三区 | 免费的又色又爽又黄的片捆绑美女 | 国产精品一区二区在线 | 看片免费黄在线观看入口 | 欧美午夜理伦三级在线观看 | av中文字幕第一页 | 成人h视频在线观看 | 日韩精品tv | 国产99视频精品免视看9 | 999精产国品一二三区 | 日韩成人在线免费观看 | 精品国产乱码久久久久久牛牛 | 富婆xxxxx性猛交hd | 色在线看| 大尺度h1v1高h引诱 | 亚洲综合成人在线 | 久久黄色一级片 | 99久久精品免费看国产免费粉嫩 | 日本精品啪啪一区二区三区 | 91国产丝袜在线播放 | 超碰伊人网 | 污视频网站免费在线观看 | 91久久久精品国产一区二区蜜臀 | 欧美日韩中文字幕 | 国产一区二区三区免费观看潘金莲 | 久久精品无码专区免费东京热 | 国产免费网址 | 欧美人与性动交g欧美精器 狠狠躁18三区二区一区ai明星 | 无码人妻精品一区二区蜜桃网站 | 日韩av无码国产精品 | 在线观看av的网址 | 国产裸体丰满白嫩大尺度尤物可乐 | 中文字幕av一区二区三区 | www免费黄色 | 中文在线а√在线 | 裸体歌舞表演一区二区 | 少妇特黄a片一区二区三区 精品香蕉一区二区三区 | 欧美成人图区 | 奇米四色影视 | 夜夜骑天天操 | 九色中文| 国产精品久久久久久久午夜 | 国产精品对白清晰受不了 | 国产精品无码无卡无需播放器 | 成人在线视屏 | jzz在线观看 | 女同久久另类99精品蜜臀 | 农村妇女一区二区 | 欧美成人精品欧美一级乱 | 欧美三级小说 | www.youjizz.com亚洲 | 国产精品久久久久久久久绿色 | 视频在线一区二区三区 | www日本黄色 | 北条麻妃一区二区三区在线视频 | 中文字幕一区二区三区在线视频 | 成人小视频免费在线观看 | 中文字幕精品一区二区三区精品 | 国产激情小视频 | 成人在线一区二区 | 色多多黄色 | 日产久久久久久 | 操操操网站 | 国产精品久久久久精 | 日韩一级视频在线观看 | 久久深夜 | 精品一二三四 | 日本一区中文字幕 | 亚洲欧美综合精品久久成人 | 国产在线高潮 | 国产精品三级赵丽颖 | 4hu在线观看 | 久久99国产精品女同 | 狠狠撸在线 | 亚洲国产精品久久久天堂 | 亚洲欧美日韩久久精品第一区 | 97久久精品无码一区二区天美 | 日日噜噜噜噜夜夜爽亚洲精品 | 熟女性饥渴一区二区三区 | 国产日韩一区二区在线 | 躁躁躁日日躁2020麻豆 | 国产婷婷色一区二区三区四区 | 黄色在线视频播放 | 久久国产精品日本波多野结衣 | 日韩人妻无码免费视频一区二区三区 | 少妇沉沦哀羞迎合呻吟视频 | 国产伦久视频免费观看视频 | yyy6080韩国三级理论 | 性乡下性大开放 | 狠狠色噜噜狠狠狠狠97首创麻豆 | 亚洲欧美综合精品久久成人网无毒不卡 | 天天躁日日躁狠狠躁 | 免费男人和女人牲交视频全黄 | 森林影视官网在线观看 | 欧美性tv | 水蜜桃亚洲一二三四在线 | 一级做a爰片久久毛片一 | 好紧好湿太硬了我太爽了视频 | 亚洲免费网站在线观看 | 小辣椒福利视频导航 | 无码aⅴ精品一区二区三区浪潮 | 亚洲视频123 | 中国女人内谢69xxxx | 免费在线播放毛片 | 午夜肉伦伦影院 | 国模无码视频一区 | 亚洲最大av番号库 | 91视频一区二区三区 | 一区二区三区日韩视频 | 国产成人精品a视频 | 人妻系列无码专区久久五月天 | 丰满少妇在线观看bd | 人妻夜夜爽天天爽爽一区 | 爱草视频 | 亚洲一久久久久久久久 | 亚洲久热无码av中文字幕 | 狠狠躁天天躁中文字幕无码 | 日韩美女啪啪 | 人人天天夜夜 | 精品无码国产av一区二区三区 | 五月天中文字幕mv在线 | 国产成人8x视频网站入口 | 性感美女毛片 | 日韩欧美国产一区二区 | 国产床戏无遮挡免费观看网站 | 国产午夜三级 | 夜夜爽妓女8888视频免费观看 | 国产又黄又粗的视频 | 黄色a级免费 | 理论片午午伦夜理片影院99 | 国产午夜片无码区在线播放 | 久久久综合香蕉尹人综合网 | 国产精品女人久久久 | 欧美xxxx黑人又粗又长精品 | 亚洲综合图色40p | 日韩国产精品久久久久久亚洲 | 国产又猛又黄又爽 | 亚洲精品一卡 | 第一宅男av导航入口 | 欧美福利片在线观看 | 国产igao为爱做激情国外 | 涩涩涩av| 好吊一二三区 | 放荡的美妇在线播放 | 色中文字幕在线观看 | 蜜桃视频在线观看免费视频网站www | 先锋资源久久 | 懂色av一区| 狠狠干视频网 | 午夜视频网站 | 97国精产品无人区一码二码 | 真实亲伦对白清晰在线播放 | 99精品视频播放 | 又污又黄又爽的网站 | 污视频在线免费观看 | 国产成人av免费观看 | 亚洲国产精品免费 | 亚洲专区免费 | 日韩专区欧美专区 | 丰满少妇在线观看网站 | 欧美一区二区三区激情视频 | 丰满少妇影院 | 国产精品人成在线播放新网站 | 伊人色影院 | 久久久久久久久无码精品亚洲日韩 | 无码中文字幕日韩专区 | 一本大道一区二区 | 人妻互换一二三区激情视频 | 国产欧美一区二区在线 | 国产精品二区一区二区aⅴ污介绍 | 国产真实老熟女无套内射 | 四虎永久在线精品无码视频 | 极品尤物被啪到呻吟喷水 | 国产成人精品免高潮在线观看 | 92精品国产成人观看免费 | 国产成年网站 | 中文字幕亚韩 | 亚洲日本一区二区一本一道 | 少妇被躁爽到高潮 | jizz一区二区 | 手机在线毛片 | 女人裸体做爰免费视频 | 特黄三级男人添女人下面 | 免费看黄色一级毛片 | 欧美日本国产在线 | 黄色日本视频 | 国产免费一区二区三区在线观看 | 永久免费网站看黄yyy45视频 | 免费三级网址 | 久久久久黑人强伦姧人妻 | 无码aⅴ在线观看 | 2023av在线| 亚洲精品视频三区 | 欧美寡妇xxxx黑人猛交 | 久久7777| 欧美日韩国产一区 | 少妇无套内谢免费视频 | 中文字幕永久免费 | 99国产精品欧美久久久久的广告 | 欧美xxxxxx片免费播放软件 | 伊人蕉久中文字幕无码专区 | 亚洲摸丰满大乳奶水 | jizz一区二区三区 | 户外露出一区二区三区 | 亚洲人成伊人成综合网小说 | 少妇被粗大的猛进69视频 | 97精品伊人久久久大香线蕉97如何观看 | 成人77777| 少妇与子乱毛片 | 手机在线毛片 | 亚洲最大激情网 | 围产精品久久久久久久 | 久久免费黄色网址 | 在线播放污| 国产露脸精品产三级国产 | 日本免费一区二区三区四区五六区 |