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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis 实践

發布時間:2023/12/9 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis 实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

From: https://www.cnblogs.com/luyiba/p/6303717.html

MyBatis簡介

MyBatis前身是iBatis,是一個基于Java的數據持久層/對象關系映射(ORM)框架.

MyBatis是對JDBC的封裝,使開發人員只需關注SQL本身,而不需花費過多的精力去處理如注冊驅動設置參數創建Connection/Statement解析結果集等JDBC過程性代碼.MyBatis基于XML/注解的方式配置Statement,執行SQL,并將執行結果映射成Java對象, 大大降低了數據庫開發的難度.

MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
– MyBatis項目地址/在線文檔.


初識MyBatis

使用MyBatis需要在pom.xml中添加如下依賴:

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version> </dependency> <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.36</version> </dependency>

Select

  • 配置mybatis/mybatis-configuration.xml
    作為MyBatis的全局配置文件,其配置了MyBatis的運行環境信息(如數據源/mapper文件等).
<?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><environments default="development"><environment id="development"><!-- 配置JDBC事務管理--><transactionManager type="JDBC"/><!-- 配置數據源--><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://host:port/db?characterEncoding=utf-8"/><property name="username" value="username"/><property name="password" value="password"/></dataSource></environment></environments><!-- 加載mapper映射文件 --><mappers><mapper resource="mybatis/mapper/UserDAO.xml"/></mappers> </configuration>
  • 書寫UserDAO(mapper映射)
    最為MyBatis最核心的部分,配置了操作數據庫的SQL語句:
<?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="namespace"><select id="selectUserById" parameterType="java.lang.Integer" resultType="com.fq.domain.User">SELECT * FROM user WHERE id = #{id};</select><select id="selectUserByName" parameterType="java.lang.String" resultType="com.fq.domain.User">SELECT * FROM user WHERE name LIKE '%${value}%';</select></mapper> 屬性描述
namespace命名空間,用于隔離SQL語句
parameterType定義SQL輸入映射類型,MyBatis通過OGNL從輸入對象中獲取參數傳入SQL語句.
resultType定義SQL輸出映射類型,MyBatis將SQL查詢結果的一行記錄映射為resultType指定的類型.

mapper映射文件名有UserDAO.xml/UserMapper.xml/User.xml等幾種形式, 其一般存放在與mybatis-configuration.xml同級的mapper目錄下,由于其主要作用為定義SQL語句與映射關系, 因此一般統稱為mapper映射文件.

  • 定義PO類
    PO類主要作用為SQL(輸入/輸出)映射,通常與數據庫表對應:
/*** @author jifang* @since 15/12/31 下午2:27.*/ public class User {private Integer id;private String name;private String password;public User() {}public User(Integer id, String name, String password) {this.id = id;this.name = name;this.password = password;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", password='" + password + '\'' +'}';} }
  • UserDAO(Java對象)
    獲得SqlSession,執行SQL語句, 得到映射結果:
/*** @author jifang* @since 16/2/24 下午6:15.*/ public class UserDAO {private SqlSessionFactory factory;@Beforepublic void setUp() throws IOException {String resource = "mybatis/mybatis-configuration.xml";factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream(resource));}@Testpublic void selectUserById() {try (SqlSession session = factory.openSession()) {User user = session.selectOne("namespace.selectUserById", 1);System.out.println(user);}}@Testpublic void selectUserByName() {try (SqlSession session = factory.openSession()) {List<User> users = session.selectList("namespace.selectUserByName", "student");for (User user : users) {System.out.println(user);}}} }

Insert

  • mapper
<insert id="insertUser" parameterType="com.fq.domain.User">INSERT INTO user(name, password) VALUES(#{name}, #{password}); </insert>
  • UserDAO
@Test public void insertUser() {try (SqlSession session = factory.openSession()) {User user = new User();user.setName("new_name1");user.setPassword("new_password");session.insert("namespace.insertUser", user);session.commit();} }

自增主鍵返回

修改mapper文件,添加<selectKey/>,可以將MySQL的自增主鍵(即剛剛插入數據時生成的ID)返回:

<insert id="insertUser" parameterType="com.fq.domain.User"><selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">SELECT LAST_INSERT_ID();</selectKey>INSERT INTO user(name, password) VALUES(#{name}, #{password}); </insert> 屬性描述
keyProperty指定存儲到DO中的哪個屬性;
orderselectKey執行順序(相對于insert語句),AFTER/BEFORE;
resultType主鍵返回類型(DO中對應屬性的類型);
LAST_INSERT_ID()MySQL函數,返回auto_increment自增列新記錄值.
  • UserDAO
@Test public void insertUser() {try (SqlSession session = factory.openSession()) {System.out.println(session);User user = new User(null, "new_name", "new_password");session.insert("namespace.insertUser", user);// 需要在commit之后才能獲得自增主鍵session.commit();System.out.println(user.getId());} }

該功能還可以通過<insert/>的useGeneratedKeys/keyProperty兩個屬性合作完成, 詳見MyBatis文檔.


Update

  • mapper
<update id="updateUserById" parameterType="com.fq.domain.User">UPDATE user SET name = #{name}, password = #{password} WHERE id = #{id}; </update>
  • UserDAO
@Test public void updateUserById() {try (SqlSession session = factory.openSession(true)) {session.update("namespace.updateUserById",new User(1, "feiqing", "ICy5YqxZB1uWSwcVLSNLcA=="));} }

Delete

  • mapper
<delete id="deleteUserById" parameterType="java.lang.Integer">DELETE FROM user WHERE id = #{id}; </delete>
  • UserDAO
@Test public void deleteUserById() {try (SqlSession session = factory.openSession(true)) {session.delete("namespace.deleteUserById", 51615);} }

小結

  • #{}/${}

    • #{}: 表示一個占位符號,實現向PreparedStatement占位符中設置值(#{}表示一個占位符?),自動進行Java類型到JDBC類型的轉換(因此#{}可以有效防止SQL注入).#{}可以接收簡單類型或PO屬性值,如果parameterType傳輸的是單個簡單類型值,#{}花括號中可以是value或其它名稱.
    • ${}: 表示拼接SQL串,通過${}可將parameterType內容拼接在SQL中而不進行JDBC類型轉換,${}可以接收簡單類型或PO屬性值,如果parameterType傳輸的是單個簡單類型值,${}花括號中只能是value.
      雖然${}不能防止SQL注入,但有時${}會非常方便(如order by排序,需要將列名通過參數傳入SQL,則用ORDER BY ${column},使用#{}則無法實現此功能(詳見JDBC基礎關于PreparedStatement的討論).
  • SqlSession
    提供操作數據庫的方法(如:selectOne/selectList).但SqlSession是線程不安全的,因此最好將其定義成局部變量使用.

  • MyBatis優點(與JDBC相比)
    • SQL寫在Java代碼中導致不易維護, 而MyBatis將SQL寫在mapper中,XML與Java代碼分離.
    • 向SQL語句傳參繁瑣(如:SQL的where條件不一,SQL數據類型與Java不同),MyBatis通過parameterType自動將Java對象映射至SQL語句.
    • 結果集解析麻煩(SQL變化導致解析代碼變化,SQL數據類型與Java不同),MyBatis通過resultType自動將SQL執行結果映射成Java對象.

附: 最好在pom.xml中添加一個日志系統實現(logback/log4j), 這樣會在調試程序時打印日志信息,便于查錯, 以logback為例:

  • pom.xml
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.2</version> </dependency>
  • logback.xml
<configuration><property name="logRoot" value="/data/logs"/><property name="pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{0} - %msg%n"/><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>${pattern}</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${logRoot}/common-server.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>7</maxHistory></rollingPolicy><encoder><pattern>${pattern}</pattern></encoder></appender><root level="DEBUG"><appender-ref ref="STDOUT"/><appender-ref ref="FILE"/></root></configuration>

其他關于MyBatis日志的詳細信息可參考MyBatis文檔日志部分.


DAO開發

使用MyBatis開發DAO有兩個方法,原始DAO開發Mapper映射DAO開發.


原始DAO開發

原始DAO開發需要開發人員編寫DAO接口DAO實現,如根據ID查詢用戶信息:

  • mapper(同前)
<select id="selectUserById" parameterType="java.lang.Integer" resultType="com.fq.domain.User">SELECT * FROM user WHERE id = #{id}; </select>
  • UserDAO接口
/*** @author jifang* @since 16/2/22 上午10:20.*/ public interface UserDAO {User selectUserById(Integer id) throws Exception; }
  • UserDAO實現
public class UserDAOImpl implements UserDAO {private SqlSessionFactory factory;public UserDAOImpl(SqlSessionFactory factory) {this.factory = factory;}@Overridepublic User selectUserById(Integer id) throws Exception {SqlSession session = factory.openSession();User user = session.selectOne("namespace.selectUserById", id);session.close();return user;} }
  • Client
public class MyBatisClient {@Testpublic void originalClient() throws Exception {UserDAO dao = new UserDAOImpl(new SqlSessionFactoryBuilder().build(ClassLoader.getSystemResourceAsStream("mybatis/mybatis-configuration.xml")));User user = dao.selectUserById(1);System.out.println(user);} }
  • 原始DAO開發中存在的問題:
    1) DAO實現方法體中存在很多過程性代碼.
    2) 調用SqlSession的方法(select/insert/update)需要指定Statement的id,存在硬編碼,不利于代碼維護.

Mapper映射開發

mapper映射開發方法只需編寫DAO接口,MyBatis根據接口定義與mapper文件中的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="com.fq.mybatis.UserDAO"><select id="selectUserById" parameterType="java.lang.Integer" resultType="com.fq.domain.User">SELECT * FROM user WHERE id = #{id};</select> </mapper>

注意: 此時namespace必須與UserDAO接口的全限定名相同.

  • UserDAO接口與前面相同, 但不再使用UserDAOImpl
  • Client
/*** @author jifang* @since 16/2/22 下午2:57.*/ public class MyBatisClient {private SqlSession session;private SqlSessionFactory factory;@Beforepublic void setUp() {factory = new SqlSessionFactoryBuilder().build(ClassLoader.getSystemResourceAsStream("mybatis/mybatis-configuration.xml"));session = factory.openSession();}@Testpublic void mapperClient() throws Exception {UserDAO dao = session.getMapper(UserDAO.class);User user = dao.selectUserById(1);System.out.println(user);}@Afterpublic void tearDown() {session.close();} }
  • mapper映射開發方法需要遵循以下規范:
  • mapper文件中的namespace與DAO接口的全限定名相同;
  • mapper文件中的Statement的id與DAO接口方法名相同;
  • mapper文件中的Statement的parameterType/resultType與DAO方法的入參/回參類型相同.

Mapper映射

mapper映射文件(如UserDAO.xml)主要作用是定義SQL語句(每個SQL是一個Statement),是MyBatis的核心.

MyBatis官方推薦使用mapper映射的方法來開發DAO,因此我們以后就不再過多介紹原始DAO的開發.


輸入映射

多個形參

傳遞簡單類型前面示例已經使用過,在此就不再贅述.當需要傳遞多個形參時,不再需要設置parameterType參數:

  • mapper
<update id="updateUserById">UPDATE user SET name = #{1}, password = #{2} WHERE id = #{0}; </update>
  • UserDAO
void updateUserById(Integer id, String name, String password) throws Exception;

傳入PO

MyBatis使用OGNL表達式解析對象屬性值:

  • mapper
<select id="selectUserByNamePassword" parameterType="com.fq.domain.User" resultType="com.fq.domain.User">SELECT *FROM userWHERE name = #{name} AND password = #{password}; </select>
  • UserDAO
User selectUserByNamePassword(User user) throws Exception;

傳入Map

  • mapper
<select id="selectUserByMap" parameterType="java.util.Map" resultType="com.fq.domain.User">SELECT *FROM userWHERE name = #{name} AND password = #{password}; </select>

#{}花括號內對應Map的key.

  • UserDAO
User selectUserByMap(Map<String, Object> map) throws Exception;

輸出映射

輸出簡單類型

  • mapper
<select id="selectUserCount" parameterType="java.lang.String" resultType="java.lang.Integer">SELECT count(*)FROM userWHERE name LIKE '%${value}%'; </select>
  • UserDAO
Integer selectUserCount(String name) throws Exception;

返回簡單類型必須保證查詢結果只有一行記錄,最終將第一個字段的值轉換為輸出類型.


輸出PO對象/列表

  • 前面已經演示過輸出兩種類型(selectUserById/selectUserByName雖然當時使用的是原始DAO開發方法, 但mapper定義形式大同小異),因此在這兒只做簡單總結:
  • 輸出單個PO對象和輸出PO列表在mapper中定義的resultType是一樣的;
  • 輸出單個PO對象要保證SQL查詢結果為單條數據,其內部使用selectOne方法調用;
  • 輸出PO列表表示查詢結果可能為多條,其內部使用selectList方法調用,接口返回值可用List<PO>/Set<PO>承載.

輸出Map

輸出PO對象完全可以改用Map輸出,字段名作key,字段值作value.

  • mapper
<select id="selectUserLikeName" resultType="java.util.Map">SELECT *FROM userWHERE name LIKE '%${value}%'; </select>
  • UserDAO
List<Map<String, Object>> selectUserLikeName(String name) throws Exception;

resultMap

resultType可將查詢結果映射為PO,但前提是PO屬性名SQL字段名必須一致,如不一致,則可通過resultMap作對應映射:

  • mapper
<resultMap id="userMap" type="com.fq.domain.User"><id column="user_id" property="id"/><result column="user_name" property="name"/><result column="user_password" property="password"/> </resultMap><select id="selectUserByName" parameterType="java.lang.String" resultMap="userMap">SELECTid user_id,name user_name,password user_passwordFROM userWHERE name = #{name}; </select> 屬性描述
<id/>表示查詢結果集的唯一標識;
<result/>表示普通結果,即PO屬性;
column表示SQL查詢出來的字段名,
property表示PO屬性.
  • UserDAO接口同前.

總結

以上是生活随笔為你收集整理的MyBatis 实践的全部內容,希望文章能夠幫你解決所遇到的問題。

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

免费成人在线电影 | 国产91精品看黄网站 | 精品不卡av | 在线观看视频一区二区 | 欧美性超爽 | 亚洲最大激情中文字幕 | 天天操天天射天天操 | 久久久精品久久日韩一区综合 | 日韩av成人免费看 | 成人免费一级片 | 亚洲欧美日韩国产一区二区 | 91精品中文字幕 | 国产一区欧美在线 | 亚洲一级在线观看 | av电影av在线 | 亚洲精品资源 | 最新极品jizzhd欧美 | 国产爽视频 | 怡红院av| 麻豆视频免费看 | 中文字幕超清在线免费 | 精品免费在线视频 | 国产精品一区二区三区在线看 | 国产精品乱码一区二三区 | 香蕉久久久久久av成人 | 亚洲精品视频在线看 | www黄色av| 中文字幕电影一区 | 亚洲精品97 | 久久在线 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 超碰在线97观看 | av观看在线观看 | 性色av一区二区 | 最近乱久中文字幕 | 国产精品精品国产色婷婷 | 精品综合久久 | 久艹在线免费观看 | 91av在线免费 | 欧美性久久久 | 天天干.com| 色婷婷电影网 | 久久黄色影院 | 99精品国产高清在线观看 | 日本少妇高清做爰视频 | 92精品国产成人观看免费 | 欧洲精品码一区二区三区免费看 | 亚洲无线视频 | 成人av在线影院 | 91热视频在线观看 | 免费国产黄线在线观看视频 | 国产无遮挡又黄又爽在线观看 | 成人网444ppp | 久久国产视频网 | 日韩免费三区 | 国产精品 视频 | 91成年人网站 | 中文字幕久久网 | 99久久激情| 一区在线免费观看 | 福利二区视频 | 精品免费久久久久久 | 成人在线视频在线观看 | 免费看片网址 | 国产一区福利在线 | 国产 日韩 中文字幕 | 丝袜网站在线观看 | 久久久国产一区二区三区四区小说 | av丁香| av性在线| 精品国产免费一区二区三区五区 | 黄色三级网站在线观看 | 久久精品一区二区三区国产主播 | 国产国产人免费人成免费视频 | 久久久久久久久久国产精品 | 香蕉视频免费在线播放 | 久久久免费 | 青草视频在线播放 | 国产无套视频 | 久青草电影| 国产午夜精品久久久久久久久久 | 午夜成人免费影院 | 香蕉在线视频播放网站 | 日韩欧美69 | 日韩一区二区三区免费视频 | 久久久99国产精品免费 | 在线观看国产区 | 亚洲国产色一区 | 8x成人在线| 免费视频在线观看网站 | 在线视频欧美精品 | 美女网站一区 | 亚洲一区av | av免费播放 | 99视频免费观看 | 综合色综合 | 久久久久久久毛片 | 欧美一区二区三区在线观看 | 丁香六月网 | 久久国产精品99久久久久久老狼 | 久久这里精品视频 | 久久久久久99精品 | 99视频在线免费看 | 国产高清无av久久 | 国产精品视频你懂的 | 高清av免费看 | 欧美一区二视频在线免费观看 | 日韩av在线免费播放 | 日韩视频免费播放 | 96久久欧美麻豆网站 | 日韩精选在线 | 久久久免费 | 91免费高清视频 | 9免费视频 | 亚洲成人国产 | 在线日本v二区不卡 | 视频国产区 | 日韩精品一区二区三区电影 | www国产在线 | 干 操 插 | 免费网站黄色 | 一区二区三区在线播放 | 国产伦精品一区二区三区在线 | 中文国产在线观看 | 天天综合网在线 | 欧美xxxxx在线视频 | 国产精品美女网站 | 天天草天天干天天射 | 亚洲国产精品传媒在线观看 | 成年人app网址 | 欧美一区二区三区特黄 | 蜜桃视频在线观看一区 | 国产黄色免费在线观看 | 精油按摩av| 综合久久精品 | 九草在线观看 | 国产不卡毛片 | 亚洲一区av | 欧美日韩久久不卡 | 亚洲成人av片在线观看 | 啪一啪在线 | 天天操天天操天天操天天 | 久久a v电影 | 天天爱天天射天天干天天 | 免费在线国产视频 | 福利网在线 | 久久久久成人免费 | 有码一区二区三区 | 狠狠色丁香婷婷综合橹88 | 波多野结衣视频一区二区 | 中文字幕久久精品一区 | 丁香六月婷婷开心婷婷网 | 成人av亚洲| free. 性欧美.com| 9在线观看免费高清完整版 玖玖爱免费视频 | 久久久久久蜜av免费网站 | 日韩和的一区二在线 | 91精品国产欧美一区二区成人 | 国产精品一区二区三区免费视频 | 中文字幕在线一区二区三区 | 日批视频在线 | 成人国产精品入口 | 最近中文字幕免费av | 中文字幕av免费观看 | 色综合天天射 | 三级av片 | 97色国产 | 国产精品6 | 黄色av一区二区 | 日韩不卡高清视频 | 欧美亚洲久久 | 高清日韩一区二区 | 欧美久久综合 | 日韩av成人免费看 | 日韩欧美精品在线视频 | 国产在线观看免费观看 | 高清视频一区 | 国产精品手机在线 | 激情黄色一级片 | 欧美日韩在线观看一区 | 黄色精品一区 | 久久影视一区 | 天天看天天操 | 一区二区三区精品在线视频 | 热精品 | 久久精品国产99 | 久久国产视频网站 | 国产亚洲精品久久久网站好莱 | 日韩在线精品视频 | 日韩天天综合 | 狠狠插天天干 | 五月婷婷,六月丁香 | 久久九九久久九九 | 亚洲成人精品久久久 | 成人小视频在线观看免费 | 一区二区欧美在线观看 | 久久成人国产精品 | 日韩视频免费观看高清完整版在线 | 91精品国产麻豆国产自产影视 | 国产中文字幕三区 | 国产美女被啪进深处喷白浆视频 | 国产精品毛片一区二区在线看 | 日韩中文字幕免费在线播放 | 日韩欧美综合精品 | 亚洲伊人第一页 | 色黄久久久久久 | 91一区啪爱嗯打偷拍欧美 | 国产成人黄色网址 | 国产亚洲精品无 | 免费看污黄网站 | 久草在线中文888 | 国产亚洲精品久久19p | 婷婷久草 | 中文字幕电影网 | 一级黄色片网站 | 天天干天天拍 | 久久免费的精品国产v∧ | 在线色亚洲 | 黄色小网站在线 | 免费观看www小视频的软件 | www免费视频com| 色吊丝在线永久观看最新版本 | 日韩欧美高清不卡 | 久久久官网 | 成人av免费看 | 免费看一级黄色 | 九九热精 | 精品久久久久一区二区国产 | 久久综合免费视频 | 成片免费观看视频999 | 六月丁香色婷婷 | 成人午夜电影在线 | 成片免费观看视频大全 | 91久久国产综合精品女同国语 | 久久九九免费 | 久章草在线观看 | 欧美在线资源 | 日韩精品五月天 | 在线观看久 | 2023天天干 | 美女网站视频久久 | 亚洲开心色 | 亚洲精品视频在线观看网站 | www色,com| 久久爱影视i | 亚州精品天堂中文字幕 | 国产免费观看高清完整版 | 日本在线观看黄色 | 国产999精品久久久 免费a网站 | 国产亚洲高清视频 | 青青河边草手机免费 | 天天操天天舔天天爽 | 久久综合九色欧美综合狠狠 | 免费福利在线观看 | 91亚洲精品久久久蜜桃借种 | 国产一区二区三区午夜 | 999在线精品 | 久久av影院 | 天天干天天做 | 成人在线播放视频 | 日韩在线高清视频 | 欧美日韩在线免费观看 | 久久久伦理 | 国产一级在线视频 | 黄网av在线 | 国产成人在线免费观看 | 国产成人精品一区二区在线 | 欧美日韩视频在线播放 | 激情av综合 | 亚洲精品66 | 热久精品 | 久久久久久久久久久久久9999 | 国产精品视频专区 | 婷婷色中文网 | 在线看av的网址 | 2022中文字幕在线观看 | 99久久综合狠狠综合久久 | 在线免费av观看 | 婷婷久久综合九色综合 | 国产 视频 久久 | 成人在线观看资源 | 国产区精品在线观看 | 亚洲欧美日韩中文在线 | 热久久视久久精品18亚洲精品 | 91影视成人 | 国产午夜精品一区二区三区四区 | 色99色| 亚洲最新在线视频 | 精品久久91 | 97视频在线免费播放 | 国产不卡高清 | 久久五月精品 | 97免费公开视频 | 91在线精品视频 | 日韩免费观看高清 | 国产视频一区在线 | 麻豆91在线 | 国产精品久久99综合免费观看尤物 | 成人免费视频播放 | 国产精品久久久久久久午夜 | 亚洲综合网站在线观看 | 在线观看免费国产小视频 | 色鬼综合网 | 天天操天天操天天操天天操天天操 | 视频99爱 | 久久精彩免费视频 | 国产精品久久99 | 欧美成年人在线视频 | 日韩精品中文字幕有码 | 免费a视频在线观看 | 免费a网站 | 黄色在线网站噜噜噜 | 99c视频高清免费观看 | 激情网第四色 | 热久久免费视频精品 | 国产精品岛国久久久久久久久红粉 | 亚洲精品国产片 | 91精品国产成人观看 | 久久久久免费精品国产 | 成人在线视频一区 | 91麻豆精品国产自产在线游戏 | 美女中文字幕 | 成片视频在线观看 | 在线视频你懂 | 中文字幕一区二区三区四区在线视频 | 日韩午夜高清 | 欧美最猛性xxxxx(亚洲精品) | 99精品国产高清在线观看 | 欧美性高跟鞋xxxxhd | www.一区二区三区 | 国产日产欧美在线观看 | 亚洲精品ww | 天天爽人人爽夜夜爽 | 99久久这里有精品 | 日本h视频在线观看 | 四虎影院在线观看av | www.五月天激情 | a级国产片 | 日韩中文在线电影 | 人人爽人人爽人人片av免 | 四虎影视精品永久在线观看 | a色视频| 五月开心六月婷婷 | 中文字幕精品www乱入免费视频 | 日韩欧美在线综合网 | 欧美精品在线观看免费 | 伊人色综合久久天天 | 91成人免费在线 | 波多野结衣电影久久 | 丁香五月亚洲综合在线 | 成人播放器 | 91在线视频在线 | 亚洲精品国产精品国自产 | 色视频在线看 | 香蕉视频日本 | 欧美精品三级 | 久草在线中文888 | 久久精品久久久久 | 色婷五月天 | 日韩在线视频线视频免费网站 | 国产亚洲精品日韩在线tv黄 | 婷婷六月天丁香 | 国产精品男女啪啪 | 91香蕉久久 | 激情婷婷六月 | 日三级在线 | 麻豆久久久 | 五月天婷婷综合 | 中文字幕国内精品 | 狠狠干狠狠色 | 久久草av| 色婷婷视频 | 亚州性色 | 亚洲一级电影 | 日韩在线一区二区免费 | 91精品久久久久久久91蜜桃 | 日韩欧美精品在线 | 日韩乱色精品一区二区 | 毛片3 | 国产亚州精品视频 | 天天色天天射天天干 | 国产精品99蜜臀久久不卡二区 | 亚洲精品在线一区二区 | 五月av在线 | 亚洲精品国产电影 | 色综合久久久久久久 | 精品a在线 | 亚洲狠狠 | 国产精品久久9 | 久久大片 | 麻豆手机在线 | 亚州av一区| 国产麻豆果冻传媒在线观看 | 在线视频你懂得 | 久久久久国产成人精品亚洲午夜 | 久久久免费看片 | 在线视频a | 国产91精品在线播放 | 日韩黄色一区 | 99热手机在线| 欧美极品xxx | av大全在线看 | 免费观看国产精品 | 国产精品视频专区 | 国产在线精品观看 | 国产五码一区 | 四虎在线视频 | 免费在线色 | 色五月色开心色婷婷色丁香 | 免费视频a| 国产精品国产三级国产aⅴ入口 | 欧美另类巨大 | 国内揄拍国内精品 | 激情综合亚洲精品 | 久久久www成人免费毛片 | 欧洲精品久久久久毛片完整版 | 99精品国产福利在线观看免费 | 在线观看深夜福利 | 五月婷婷综合在线 | 天天插天天 | 日本中文不卡 | 国产精品1区2区3区 久久免费视频7 | 超碰人人91| 国产精品免费不卡 | 欧美日韩一级久久久久久免费看 | 又黄又爽免费视频 | 97免费在线观看视频 | 日韩欧美视频二区 | 国产理论影院 | 亚洲国产经典视频 | 国产黄在线看 | 精品福利在线观看 | 欧美性久久久久久 | 国产精品久久久久久69 | 日本公乱妇视频 | 中文字幕韩在线第一页 | 欧美日韩网址 | 国产五月婷 | 麻豆影视在线免费观看 | 国内精品久久久久久久久久久 | 久久国产精品久久国产精品 | 探花视频免费观看高清视频 | 91中文字幕在线视频 | 免费在线观看中文字幕 | 中文字幕日韩无 | 中文字幕成人 | 日本精品一二区 | 国产在线观看你懂得 | 国产.精品.日韩.另类.中文.在线.播放 | 国产精品亚州 | 黄色片网站大全 | 久久久久久毛片精品免费不卡 | 日韩一区二区在线免费观看 | 久久久久久电影 | 99爱在线观看 | 色综合天天| 欧美激情第八页 | 午夜精品久久久久久久久久久 | av免费看在线 | 国产亚洲视频在线免费观看 | 日韩精品视频第一页 | 97视频精品 | 操久久免费视频 | av九九| 91禁在线观看 | 久久免费大片 | 国产精品99精品久久免费 | 亚洲日本激情 | 成人国产在线 | 91视频国产高清 | 伊人国产在线播放 | 日韩一级片大全 | 久久久999免费视频 日韩网站在线 | 国产91学生粉嫩喷水 | 99这里只有精品视频 | 国产精品男女啪啪 | 天天干天天操天天干 | 成人天堂网 | 国产精品a久久久久 | 久草久热 | 91精品在线免费视频 | 国产视频不卡一区 | av色影院 | 天天色天天上天天操 | 激情动态 | 日韩免费一区二区在线观看 | 91色在线观看 | 日韩理论在线视频 | 国产在线播放一区二区 | 精品国产亚洲在线 | 国产美女网站在线观看 | 国产欧美精品一区二区三区四区 | 成人免费观看视频网站 | 国产精品免费在线播放 | 中文字幕在线看 | 国产一级不卡视频 | 青青五月天 | 超碰av免费 | а中文在线天堂 | 精品国产一区二区三区久久久久久 | 国产亚洲婷婷免费 | 欧美成亚洲 | 激情av资源 | www.夜夜操.com| 九色精品在线 | 黄视频网站大全 | 日韩伦理一区二区三区av在线 | 500部大龄熟乱视频使用方法 | 日日碰狠狠添天天爽超碰97久久 | 精品女同一区二区三区在线观看 | 一级欧美日韩 | 91豆花在线 | 国产精品网红福利 | 成人免费观看av | 久久69精品久久久久久久电影好 | 黄色av影院 | 99久久99久久免费精品蜜臀 | 在线a人v观看视频 | 久久免费一 | 中国一 片免费观看 | 国产成人综 | 久久视频在线观看中文字幕 | 91桃色在线观看视频 | 在线色亚洲 | 亚洲v欧美v国产v在线观看 | 中文字幕乱视频 | 国产精品一区二区久久久 | 视频二区在线 | 韩国av免费在线 | 亚洲天堂网在线播放 | 久久久午夜剧场 | 国产在线精品一区二区 | av高清在线 | www亚洲一区 | 午夜精品一区二区三区免费视频 | 国产精品你懂的在线观看 | 香蕉视频免费在线播放 | 国产视频精选在线 | 免费在线一区二区三区 | 麻豆国产在线播放 | 免费精品国产va自在自线 | 月丁香婷婷 | 18岁免费看片 | 婷婷精品国产欧美精品亚洲人人爽 | 特级毛片爽www免费版 | 99免费精品| 成人一区电影 | 性色在线视频 | 国产精品网在线观看 | 韩国视频一区二区三区 | 色综合www| 欧洲一区二区在线观看 | 在线免费视 | 欧美日韩国语 | 91在线日韩 | 毛片随便看 | 久草精品在线 | 日日夜夜噜噜噜 | 玖玖国产精品视频 | 麻豆久久久 | 国产精品s色 | 97视频免费在线观看 | 精品在线视频播放 | 草久久久久久 | 久久久精品网站 | 成人免费视频播放 | 欧美日韩久久一区 | 欧美日韩精品电影 | 国产九九九视频 | www.精选视频.com | 久久综合婷婷综合 | 免费观看性生交大片3 | 亚洲欧洲精品一区二区 | 精品毛片一区二区免费看 | 久99视频| 国产精品麻豆99久久久久久 | 亚洲黄色影院 | 99福利片 | 在线黄色观看 | 国产精品黄色在线观看 | www成人精品 | 日韩视 | free,性欧美| 久久久国产99久久国产一 | 国产手机av | 99久久久久久国产精品 | 97人人模人人爽人人喊网 | 欧美一区二区视频97 | 热久久精品在线 | 成人久久久精品国产乱码一区二区 | 国产视频资源 | 日韩激情视频 | 久久系列| 久久夜av | 久久久久国产视频 | 国产精品美女www爽爽爽视频 | 黄视频色网站 | 欧美另类巨大 | 精品少妇一区二区三区在线 | 国内精品久久久久影院一蜜桃 | 国产裸体永久免费视频网站 | 久久视频在线观看免费 | 18岁免费看片 | 日韩精品不卡在线 | 国产资源免费 | 久久免费看a级毛毛片 | 在线免费观看不卡av | 免费特级黄色片 | 国产成人亚洲精品自产在线 | 久久久久国产一区二区三区四区 | 国产福利在线免费 | 久草在线视频资源 | 午夜精品久久久久99热app | 久久综合网色—综合色88 | 色多多污污在线观看 | 日韩国产欧美在线视频 | 日韩在线高清免费视频 | 亚洲精品视频免费在线观看 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 热久久电影 | 在线性视频日韩欧美 | 成人黄色电影在线观看 | 亚洲自拍av在线 | 国产流白浆高潮在线观看 | 香蕉影视在线观看 | av怡红院 | 五月婷婷综合久久 | 中文字幕第一 | 在线国产福利 | 欧美精品中文 | 日韩电影中文字幕在线 | 伊人宗合| 久久欧美在线电影 | 中文字幕一区二区三区乱码不卡 | 国产精品一区二区精品视频免费看 | 亚洲精品天天 | 91视频最新网址 | 香蕉色综合 | 天天干天天干天天干天天干天天干天天干 | 97在线播放视频 | 国内精品久久久久国产 | 日韩成人免费电影 | 久久区二区 | 色婷婷成人网 | 操操操天天操 | 探花视频在线版播放免费观看 | 久久99免费 | 亚洲精品美女视频 | 激情av资源 | 久久夜靖品 | 精产嫩模国品一二三区 | 国产经典 欧美精品 | 久久视频在线视频 | 欧美一级片在线观看视频 | 亚洲欧美乱综合图片区小说区 | 精选久久| 综合网色| 日本一区二区不卡高清 | 久产久精国产品 | 久久五月激情 | 国产打女人屁股调教97 | 成人app在线免费观看 | 成人全视频免费观看在线看 | 开心色激情网 | 91在线看免费 | 日韩精品专区在线影院重磅 | 欧美日韩国内在线 | 99热这里只有精品久久 | 精品美女国产在线 | 97麻豆视频 | 毛片.com| 久久五月婷婷丁香 | 亚洲第一区在线观看 | 手机在线免费av | 国产亚洲精品成人av久久ww | 免费久久久 | 日本性动态图 | 成年人视频在线观看免费 | 日本精品一区二区在线观看 | 亚洲一级影院 | 五月婷婷在线视频观看 | 亚洲精品66 | 在线观看精品一区 | 草久在线视频 | 99久高清在线观看视频99精品热在线观看视频 | 女人18精品一区二区三区 | 免费观看一级一片 | 黄色99视频 | 国产精品日韩欧美一区二区 | 国产欧美在线一区二区三区 | 91精品一区在线观看 | 国产成人精品免费在线观看 | 2021国产精品视频 | 中文字幕在线播出 | 色婷婷激情网 | 天天综合色 | 中文字幕在线免费 | 精品在线视频一区二区三区 | 中文字幕色婷婷在线视频 | 成人精品在线 | 精品 激情 | 手机看片国产日韩 | 色综合色综合色综合 | 亚洲涩综合 | 国产区欧美 | 在线观看91 | 99国产视频 | 狠狠干狠狠色 | 91在线区 | 成人av手机在线 | 亚洲精品一区二区精华 | 精品国产一区二区三区四区在线观看 | 人人爽人人爽人人片 | 干天天 | www.777奇米| 久久免费视频网站 | 日日日干 | 在线视频一二区 | 中文字幕欧美三区 | 精品一区二区三区久久 | 黄色电影网站在线观看 | 日韩动态视频 | 欧美在线91 | 91精品导航 | 久插视频 | 97网| 黄色大片免费网站 | 色99在线| 超碰在线免费福利 | 美女国产在线 | 黄色成人av在线 | 午夜精品久久久 | 91在线观看视频 | 欧美视频99 | 91手机视频在线 | 午夜色场 | 亚洲欧美日韩精品久久久 | 亚洲精品国产视频 | 97视频在线 | 久久99最新地址 | 婷婷激情5月天 | 91日韩精品一区 | 国产成人性色生活片 | 精品99久久 | 欧美va天堂va视频va在线 | 国产成人精品久久久 | 在线看一区 | 日韩精品在线看 | 不卡av在线 | 国产一级免费在线 | 五月色婷 | a特级毛片| 天天天干天天天操 | 国产一区二区高清不卡 | 亚洲国产三级在线观看 | 久久精品人人做人人综合老师 | 免费高清在线一区 | 成人免费看片网址 | 亚洲精品在线观看av | 婷婷成人在线 | 日韩在线一区二区免费 | 成人av在线看 | 日韩高清在线一区二区三区 | av一区二区三区在线观看 | av免费网页| 日韩精品网址 | 日日弄天天弄美女bbbb | 亚洲精品88欧美一区二区 | 九九九热精品免费视频观看 | 国产精品9999 | 最新av在线网址 | 久久精品久久精品久久精品 | 五月婷婷丁香激情 | 久草电影免费在线观看 | 精品国产乱码久久久久久浪潮 | 国产正在播放 | 国产亚洲午夜高清国产拍精品 | 麻豆免费看片 | 天天色天天射天天综合网 | 日韩一区二区三区高清在线观看 | 成人免费在线观看入口 | 中文字幕在线影院 | av大全在线免费观看 | 手机在线日韩视频 | 成年人视频免费在线播放 | 97在线播放 | 一区二区三区在线电影 | 黄色99视频| 成人免费xxx在线观看 | 高清久久久久久 | 91亚洲精品久久久中文字幕 | 亚洲免费av一区二区 | freejavvideo日本免费 | 久久99日韩 | 亚洲视频,欧洲视频 | 在线高清一区 | 天天天天射 | 超碰在线日本 | 久草综合在线观看 | 久久久久免费电影 | 欧美精品乱码久久久久久 | www欧美日韩 | 欧美一级日韩免费不卡 | 美女黄频在线观看 | 国产精品24小时在线观看 | 久久a v电影 | 97超碰人人模人人人爽人人爱 | av成人亚洲 | 丁香婷婷激情啪啪 | 久久久久亚洲精品中文字幕 | 国产一在线精品一区在线观看 | 久艹视频免费观看 | 天天色天天射天天干 | 精品国产一区二区三区久久久久久 | 欧美性一级观看 | 香蕉久草| 国产在线1区 | 99精品久久99久久久久 | 人人干干人人 | 免费久久精品视频 | 国产精品二区三区 | 蜜臀久久99静品久久久久久 | 97在线看片 | 国产做a爱一级久久 | 西西大胆免费视频 | 国产91勾搭技师精品 | 亚洲精品成人 | 免费a网站| 亚洲码国产日韩欧美高潮在线播放 | 免费看一级黄色 | 97超碰人人模人人人爽人人爱 | 少妇高潮流白浆在线观看 | 国产1级视频 | 久久综合久久久久88 | 视频一区二区在线 | 在线看不卡av | 精品福利网 | 精品中文字幕在线播放 | 亚洲人在线7777777精品 | av在线网站观看 | 99久久精品视频免费 | 国产精品高清在线 | 成人在线免费看 | av免费福利 | 亚洲综合视频在线 | 国产精品高潮呻吟久久久久 | 99草在线视频| 91色综合| 久久看片网站 | 婷婷色5月 | 久久男人影院 | 中文字幕在线乱 | 美女一级毛片视频 | 丁香花中文在线免费观看 | 午夜手机电影 | 一区二区精品在线观看 | 美女视频是黄的免费观看 | 久久99电影 | 天天爱天天操 | 97人人澡人人爽人人模亚洲 | 国产精品视频app | 日韩亚洲精品电影 | 视频成人永久免费视频 | 狠狠干2018| 91超级碰 | 91精品国产自产老师啪 | 在线观看一级视频 | 天天操天天爱天天爽 | 精品久久影院 | 96亚洲精品久久久蜜桃 | 日韩精品在线视频免费观看 | 天天插天天干天天操 | 色婷婷导航| 国产精品对白一区二区三区 | 国产精品99久久久久久有的能看 | 激情网五月婷婷 | 国产色拍拍拍拍在线精品 | 国产系列在线观看 | 美女国产在线 | 国产精品久久精品 | 色婷婷亚洲 | 国产精品永久免费在线 | 亚洲激情p | 欧美日韩在线看 | 日产av在线播放 | 亚洲黄色小说网 | 久久这里只有精品23 | 亚洲女欲精品久久久久久久18 | 色婷婷电影| a天堂在线看 | 人人狠狠综合久久亚洲 | 成人av电影在线 | h动漫中文字幕 | 亚洲影院色| 五月天久久综合网 | 久久亚洲日本 | 国产精品久久影院 | 国产免费又爽又刺激在线观看 | 婷婷视频在线观看 | 免费久久久久久久 | 欧美成人基地 | 婷婷婷国产在线视频 | 亚洲女裸体| 精品国产一区二区三区日日嗨 | 免费观看日韩av | 在线视频 亚洲 | 精品影院一区二区久久久 | 久久久午夜影院 | 91av在线精品| 99在线精品视频观看 | 久久99婷婷| 99色国产 | 久久国产精品视频观看 | 久久九九精品久久 | 成人在线免费小视频 | 在线视频观看你懂的 | 高清不卡一区二区在线 | 毛片播放网站 | 青青河边草观看完整版高清 | 国内精品久久久久久久久久久久 | 美女视频国产 | 干亚洲少妇 | 91chinese在线| 国产亚洲午夜高清国产拍精品 | 91在线国内视频 | 五月婷婷中文 | 999国产 | 在线看不卡av | 国产无吗一区二区三区在线欢 | 欧美一区二区在线看 | 亚洲视频456 | 色五月色开心色婷婷色丁香 | 91天天视频 | 综合久久久久久久久 | 久久久久久国产精品 | 91女子私密保健养生少妇 | 久久手机免费观看 | 婷婷伊人五月 | 亚洲午夜精 | 天天爽天天爽天天爽 | 日韩免费精品 | 天堂在线一区二区 | 中文字幕黄色av | 欧美精品二 | 四虎影视久久久 | 亚洲电影一区二区 | 日日爱夜夜爱 | 在线久久| 91成人精品在线 | www.亚洲精品 | 亚洲精品福利在线 | 日韩精品免费一线在线观看 | 久久久久久电影 | 99在线热播精品免费 | 激情av一区二区 | 免费中文字幕在线观看 | 国产不卡一区二区视频 | 国产视频不卡一区 | 免费热情视频 | 超碰在线日韩 | 久插视频 | 在线免费视频 你懂得 | 九九视频免费观看视频精品 | 日本三级在线观看中文字 | 91精品国产九九九久久久亚洲 | 正在播放亚洲精品 | 久久影院亚洲 | 国产精品毛片一区二区三区 | 国产成人免费网站 | 国产99在线免费 | 色婷婷精品大在线视频 | 91av视频网 | 九九热精品视频在线观看 | 成人影视片| 999ZYZ玖玖资源站永久 | 91探花视频 | 不卡的av片 | 中文字幕一区二区三 | 日韩电影在线一区二区 | 亚洲欧美日韩精品久久奇米一区 | 欧美人zozo| 日韩精品免费在线观看视频 | 国产九九热 | 奇米影音四色 | 成人毛片在线观看 | 在线国产精品视频 | 狠狠色丁香婷婷综合橹88 | 亚洲第一中文网 | 2019天天干天天色 | 九九视频精品免费 | 视频一区亚洲 | 国产在线精品观看 | 天天做天天爽 | 亚洲黄色av一区 | 99精品在线免费在线观看 | 在线观看亚洲国产精品 | www.国产高清 | 亚洲女在线 |