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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

idea mybatis plus 代码生成插件_妙啊,Mybatis从浅入深-Plus(IDEA版通俗易懂)

發布時間:2023/11/27 生活经验 91 豆豆
生活随笔 收集整理的這篇文章主要介紹了 idea mybatis plus 代码生成插件_妙啊,Mybatis从浅入深-Plus(IDEA版通俗易懂) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

01.使用注解開發

引入:

大家之前都學過面向對象編程,也學習過接口,但在真正的開發中,很多時候我們會選擇面向接口編程

根本原因∶解耦,可拓展,提高復用,分層開發中,上層不用管具體的實現,大家都遵守共同的標準,使得開發變得容易,規范性更好

在一個面向對象的系統中,系統的各種功能是由許許多多的不同對象協作完成的。在這種情況下,各個對象內部是如何實現自己的,對系統設計人員來講就不那么重要了;

而各個對象之間的協作關系則成為系統設計的關鍵。小到不同類之間的通信,大到各模塊之間的交互,在系統設計之初都是要著重考慮的,這也是系統設計的主要工作內容。面向接口編程就是指按照這種思想來編程。
關于接口的理解

接口從更深層次的理解,應是定義(規范,約束)與實現(名實分離的原則)的分離。-接口的本身反映了系統設計人員對系統的抽象理解。

接口應有兩類:

第一類是對一個個體的抽象,它可對應為一個抽象體(abstract class);

第二類是對一個個體某一方面的抽象,即形成一個抽象面(interface) ;

一個體有可能有多個抽象面。抽象體與抽象面是有區別的。

三個面向的區別:

面向對象是指,我們考慮問題時,以對象為單位,考慮它的屬性及方法.

面向過程是指,我們考慮問題時,以一個具體的流程(事務過程)為單位,考慮它的實現.

接口設計與非接口設計是針對復用技術而言的,與面向對象(過程)不是一個問題.更多的體現就是對系統整體的架構

使用注解開發:

它們映射的語句可以不用 XML 來配置,而可以使用 Java 注解來配置。比如,上面的 XML 示例可以被替換成如下的配置:

package org.mybatis.example;
public interface BlogMapper {@Select("SELECT * FROM blog WHERE id = #{id}")Blog selectBlog(int id);
}

使用注解來映射簡單語句會使代碼顯得更加簡潔,但對于稍微復雜一點的語句,Java 注解不僅力不從心,還會讓你本就復雜的 SQL 語句更加混亂不堪。 因此,如果你需要做一些很復雜的操作,最好用 XML 來映射語句。

選擇何種方式來配置映射,以及認為是否應該要統一映射語句定義的形式,完全取決于你和你的團隊。 換句話說,永遠不要拘泥于一種方式,你可以很輕松的在基于注解和 XML 的語句映射方式間自由移植和切換。

1.注解在接口上實現

*** 接口操作user表*/
public interface UserMapper {@Select("select * from user")List<User> selectUser();
}

2.需要在核心配置文件中綁定接口。

<!--綁定接口--><mappers><mapper class="com.mengyangchen.dao.UserMapper"/></mappers>

測試:

@Testpublic void test(){//1.獲取SqlSession對象SqlSession sqlSession = MybatisUtils.getSqlSession();//方式一:getMapper//2.執行sql,獲取sql,面向接口編程,獲取UserMapper接口(以前是實現接口的實現類,現在是配置文件)UserMapper mapper = sqlSession.getMapper(UserMapper.class);List<User> userList = mapper.selectUser();/*String sqlId = "com.mengyangchen.dao.UserDao"+"."+"selectUser";List<User> userList = sqlSession.selectList(sqlId);*/for(User user:userList){System.out.println(user);}//3.關閉SqlSessionsqlSession.close();}

本質:反射機制實現

底層:動態代理。

Mybatis詳細的執行流程

多debug,多看底層源碼。

注解完成增刪改查

接口:

//方法存在多個參數,所有的參數前面必須加上@Param("id")注解,引用對象不需要寫@Select("select * from user where id=#{id}")User selectUserById(@Param("id") int id);@Insert("insert into user(id,name,pwd) values(#{id},#{name},#{password})")int insertUser(User user);

測試:

@Testpublic void selectUserById(){//1.獲取SqlSession對象SqlSession sqlSession = MybatisUtils.getSqlSession();//方式一:getMapper//2.執行sql,獲取sql,面向接口編程,獲取UserMapper接口(以前是實現接口的實現類,現在是配置文件)UserMapper mapper = sqlSession.getMapper(UserMapper.class);User user = mapper.selectUserById(1);System.out.println(user);sqlSession.close();}@Testpublic void insertUser(){//1.獲取SqlSession對象SqlSession sqlSession = MybatisUtils.getSqlSession();//方式一:getMapper//2.執行sql,獲取sql,面向接口編程,獲取UserMapper接口(以前是實現接口的實現類,現在是配置文件)UserMapper mapper = sqlSession.getMapper(UserMapper.class);int num = mapper.insertUser(new User(3,"meng","123456"));if(num>0){System.out.println("插入成功!");}sqlSession.commit();sqlSession.close();}

#{},${}的區別
#{}可以防止sql注入。

02.Lombok

Lombok項目是一個Java庫,它會自動插入您的編輯器和構建工具中,從而使您的Java更加生動有趣。
永遠不要再寫另一個getter或equals方法,帶有一個注釋的您的類有一個功能全面的生成器,自動化您的日志記錄變量等等。

Lombok是一款Java開發插件,使得Java開發者可以通過其定義的一些注解來消除業務工程中冗長和繁瑣的代碼,尤其對于簡單的Java模型對象(POJO)。在開發環境中使用Lombok插件后,Java開發人員可以節省出重復構建,諸如hashCode和equals這樣的方法以及各種業務對象模型的accessor和ToString等方法的大量時間。對于這些方法,它能夠在編譯源代碼期間自動幫我們生成這些方法,并沒有如反射那樣降低程序的性能。

使用步驟:
1.在idea中安裝Lombok插件

2.在項目中導入Lombokjar包

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version><scope>provided</scope>
</dependency>

Lombok含有的注解:

@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger, @CustomLog
@Data
@Builder
@SuperBuilder
@Singular
@Delegate
@Value
@Accessors
@Wither
@With
@SneakyThrows
@val
@var

結果:

import lombok.Data;@Data
public class User {private Integer id;private String name;private String password;}

自動幫我們寫了getter或equals等方法。

@Data:無參構造,get,set,toString,hashcode,equals

無參和所有參數:

注意:了解即可。

03.多對一處理

多個學生,對應一個老師。對于學生而言:關聯…
多個學生關聯一個老師(多對一)

對于老師而言:
集合

一個老師,有很多學生(一對多)

多對一:
實體類

public class Student {private Integer id;private String name;//學生需要關聯一個老師private Teacher teacher;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 Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + ''' +", teacher=" + teacher +'}';}
}
public class Teacher {private Integer id;private String name;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;}@Overridepublic String toString() {return "Teacher{" +"id=" + id +", name='" + name + ''' +'}';}
}

環境搭建:
1.新建實體類Teacher,Student
2.建立Mapper接口
3.建立Mapper.xml文件
4.在核心配置文件中綁定注冊我們的mapper接口或者文件。
5.測試是否成功。

public interface TeacherMapper {@Select("select * from teacher where id=#{tid}")Teacher selectTeacherById(@Param("tid") int id);
}
<mappers><mapper class="com.mengyangchen.dao.TeacherMapper"/><mapper class="com.mengyangchen.dao.StudentMapper"/>
</mappers>
public class MyTest {@Testpublic void test(){SqlSession sqlSession = MybatisUtils.getSqlSession();TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);Teacher teacher =  mapper.selectTeacherById(1);System.out.println(teacher);sqlSession.close();}
}

嵌套查詢(按照查詢嵌套處理)(子查詢):
select語句的嵌套。
這里測試的時候出現異常:
org.apache.ibatis.binding.bindingexception: invalid bound statement (not found)

問題出在:我在創建包的時候

采用的是:

com.mengyangchen.dao

改為一個一個的創建即可。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--綁定一個對應的Dao/Mapper接口-->
<!--以前是寫一個類實現Dao接口,現在綁定即可-->
<mapper namespace="com.mengyangchen.dao.StudentMapper">
<!--
sql語句嵌套思路:1.查詢所有的學生信息2.根據查詢出來的學生的tid,尋找對應的老師--><resultMap id="studentTeacher" type="student"><result property="id" column="id"/><result property="name" column="name"/><!--復雜的屬性,我們需要單獨處理 對象association 集合collection--><association property="teacher" column="tid" javaType="Teacher" select="selectTeacherById"/></resultMap><select id="selectStudentInfo" resultMap="studentTeacher">select * from student
</select><select id="selectTeacherById" resultType="teacher">select * from teacher where id=#{id}</select>
</mapper>

結果:

聯表查詢(按照結果嵌套處理):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--綁定一個對應的Dao/Mapper接口-->
<!--以前是寫一個類實現Dao接口,現在綁定即可-->
<mapper namespace="com.mengyangchen.dao.StudentMapper">
<!--
sql語句嵌套思路:1.查詢所有的學生信息2.根據查詢出來的學生的tid,尋找對應的老師--><resultMap id="studentTeacher" type="student"><result property="id" column="id"/><result property="name" column="name"/><!--復雜的屬性,我們需要單獨處理 對象association 集合collection--><association property="teacher" column="tid" javaType="Teacher"><result property="name" column="teacherName"/></association></resultMap><select id="selectStudentInfo" resultMap="studentTeacher">select s.id  id, s.name  name,t.name  teacherName from student s inner join teacher t on s.tid = t.id
</select></mapper>

測試:

@Testpublic void studentTest(){SqlSession sqlSession = MybatisUtils.getSqlSession();StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);List<Student> list =  mapper.selectStudentInfo();for (Student student:list) {System.out.println(student);}sqlSession.close();}

04.一對多處理

一個老師對應多個學生
對于老師而言就是一對多。
實體類:

public class Teacher {private Integer id;private String name;//一個老師有多個學生private List<Student> student;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 List<Student> getStudent() {return student;}public void setStudent(List<Student> student) {this.student = student;}@Overridepublic String toString() {return "Teacher{" +"id=" + id +", name='" + name + ''' +", student=" + student +'}';}
}
public class Student {private Integer id;private String name;private Integer tid;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 Integer getTid() {return tid;}public void setTid(Integer tid) {this.tid = tid;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + ''' +", tid=" + tid +'}';}
}

接口:

public interface TeacherMapper {Teacher selectTeacherById(@Param("tid") int id);
}

配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--綁定一個對應的Dao/Mapper接口-->
<!--以前是寫一個類實現Dao接口,現在綁定即可-->
<mapper namespace="com.mengyangchen.dao.TeacherMapper"><!--查詢語句--><!--id相對于以前的書寫,表示重寫的方法名(以前在方法中執行連接數據庫等操作,現在不需要了,只需要執行sql--><!--resultType返回結果--><!--按照結果嵌套查詢-->
<select id="selectTeacherById" resultMap="teacherStudent">select s.id  id, s.name  name,t.name  teacherName from student s inner join teacher t on s.tid = t.id
</select><resultMap id="teacherStudent" type="teacher"><result property="name" column="teacherName"/><collection property="student" ofType="Student"><result property="id" column="id"/><result property="name" column="name"/></collection></resultMap>
</mapper>

05.動態sql

動態 SQL 是 MyBatis 的強大特性之一。如果你使用過 JDBC 或其它類似的框架,你應該能理解根據不同條件拼接 SQL 語句有多痛苦,例如拼接時要確保不能忘記添加必要的空格,還要注意去掉列表最后一個列名的逗號。利用動態 SQL,可以徹底擺脫這種痛苦。

如果你之前用過 JSTL 或任何基于類 XML 語言的文本處理器,你對動態 SQL 元素可能會感覺似曾相識。在 MyBatis 之前的版本中,需要花時間了解大量的元素。借助功能強大的基于 OGNL 的表達式,MyBatis 3 替換了之前的大部分元素,大大精簡了元素種類,現在要學習的元素種類比原來的一半還要少。

if
choose (when, otherwise)
trim (where, set)
foreach

使用動態 SQL 最常見情景是根據條件包含 where 子句的一部分。比如:

<select id="findActiveBlogWithTitleLike"resultType="Blog">SELECT * FROM BLOGWHERE state = ‘ACTIVE’<if test="title != null">AND title like #{title}</if>
</select>

動態sql之if

實現根據不同條件查詢數據!

實體類:

package com.mengyangchen.pojo;import java.util.Date;public class Blog {private String id;private String title;private String author;private Date createTime;//屬性名和字段名不一致private Integer views;public Blog() {}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getCreateTime() {return createTime;}public void setCreateTime(Date createTime) {this.createTime = createTime;}public Integer getViews() {return views;}public void setViews(Integer views) {this.views = views;}@Overridepublic String toString() {return "Blog{" +"id=" + id +", title='" + title + ''' +", author='" + author + ''' +", createTime=" + createTime +", views=" + views +'}';}
}

接口:

package com.mengyangchen.dao;import com.mengyangchen.pojo.Blog;import java.util.List;
import java.util.Map;public interface BlogMapper {/*插入數據*/int insertBlog(Blog blog);/*查詢博客*/List<Blog> queryBlogIf(Map map);
}

配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mengyangchen.dao.BlogMapper"><insert id="insertBlog" parameterType="blog">insert into mybatis.blog (id,title,author,create_time,views) values (#{id},#{title},#{author},#{createTime},#{views});</insert><select id="queryBlogIf" parameterType="map" resultType="blog">select * from mybatis.blog where 1=1<if test="title !=null">and title like "%"#{title}"%"</if><if test="author != null">and author like "%"#{author}"%"</if></select></mapper>

屬性名和字段名不一致,一個是下劃線,一個為駝峰。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!--核心配置文件-->
<configuration>
<!--引入外部配置文件--><properties resource="db.properties"><property name="username" value="root"/><!--一配置文件中為準--><property name="password" value="123456"/></properties><!--標準日志實現--><settings><setting name="logImpl" value="STDOUT_LOGGING"/><!--是否開啟自動駝峰命名規則映射--><setting name="mapUnderscoreToCamelCase" value="true"/></settings><!--別名--><typeAliases><package name="com.mengyangchen.pojo"/></typeAliases><environments default="development"><environment id="development"><!--事務管理--><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><!--&是xml的轉義字符(即為&)--><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments>
<mappers><mapper class="com.mengyangchen.dao.BlogMapper"/></mappers></configuration>

動態sql之trim (where, set)

前面幾個例子已經方便地解決了一個臭名昭著的動態 SQL 問題。現在回到之前的 “if” 示例,這次我們將 “state = ‘ACTIVE’” 設置成動態條件,看看會發生什么。

<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOGWHERE<if test="state != null">state = #{state}</if><if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if>
</select>

如果沒有匹配的條件會怎么樣?最終這條 SQL 會變成這樣:

SELECT * FROM BLOG
WHERE

這會導致查詢失敗。如果匹配的只是第二個條件又會怎樣?這條 SQL 會是這樣:

SELECT * FROM BLOG
WHERE
AND title like ‘someTitle’

這個查詢也會失敗。這個問題不能簡單地用條件元素來解決。這個問題是如此的難以解決,以至于解決過的人不會再想碰到這種問題。

MyBatis 有一個簡單且適合大多數場景的解決辦法。而在其他場景中,可以對其進行自定義以符合需求。而這,只需要一處簡單的改動:

<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG<where><if test="state != null">state = #{state}</if><if test="title != null">AND title like #{title}</if><if test="author != null and author.name != null">AND author_name like #{author.name}</if></where>
</select>

where 元素只會在子元素返回任何內容的情況下才插入 “WHERE” 子句。而且,若子句的開頭為 “AND” 或 “OR”,where 元素也會將它們去除。
上個例子改完后:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mengyangchen.dao.BlogMapper"><insert id="insertBlog" parameterType="blog">insert into mybatis.blog (id,title,author,create_time,views) values (#{id},#{title},#{author},#{createTime},#{views});</insert><select id="queryBlogIf" parameterType="map" resultType="blog">select * from mybatis.blog<where><if test="title !=null">title like "%"#{title}"%"</if><if test="author != null">and author like "%"#{author}"%"</if></where></select></mapper>

如果 where 元素與你期望的不太一樣,你也可以通過自定義 trim 元素來定制 where 元素的功能。比如,和 where 元素等價的自定義 trim 元素為:

<trim prefix="WHERE" prefixOverrides="AND |OR ">...
</trim>

prefixOverrides 屬性會忽略通過管道符分隔的文本序列(注意此例中的空格是必要的)。上述例子會移除所有 prefixOverrides 屬性中指定的內容,并且插入 prefix 屬性中指定的內容。

用于動態更新語句的類似解決方案叫做 set。set 元素可以用于動態包含需要更新的列,忽略其它不更新的列。比如:

解決了最后一個條件不需要,的問題。

<update id="updateAuthorIfNecessary">update Author<set><if test="username != null">username=#{username},</if><if test="password != null">password=#{password},</if><if test="email != null">email=#{email},</if><if test="bio != null">bio=#{bio}</if></set>where id=#{id}
</update>

這個例子中,set 元素會動態地在行首插入 SET 關鍵字,并會刪掉額外的逗號(這些逗號是在使用條件語句給列賦值時引入的)。

來看看與 set 元素等價的自定義 trim 元素吧:

<trim prefix="SET" suffixOverrides=",">...
</trim>

動態sql之choose (when, otherwise)

有時候,我們不想使用所有的條件,而只是想從多個條件中選擇一個使用。針對這種情況,MyBatis 提供了 choose 元素,它有點像 Java 中的 switch 語句。
還是上面的例子,但是策略變為:傳入了 “title” 就按 “title” 查找,傳入了 “author” 就按 “author” 查找的情形。若兩者都沒有傳入,就返回標記為 featured 的 BLOG

<select id="findActiveBlogLike"resultType="Blog">SELECT * FROM BLOG WHERE state = ‘ACTIVE’<choose><when test="title != null">AND title like #{title}</when><when test="author != null and author.name != null">AND author_name like #{author.name}</when><otherwise>AND featured = 1</otherwise></choose>
</select>

與if的區別只會執行一個條件。練習:

<select id="queryBlogChoose" parameterType="map" resultType="blog">select * from blog<where><choose><when test="title != null">title = #{title}</when><when test="author != null">and author = #{author}</when><otherwise>and views= #{views}</otherwise></choose></where></select>
@Testpublic void queryBlogChoose(){SqlSession sqlSession = MybatisUtils.getSqlSession();BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);Map map = new HashMap();map.put("title","Mybatis你好!");map.put("author","夢陽辰");List<Blog> list = mapper.queryBlogChoose(map);for (Blog blog:list) {System.out.println(blog);}}

動態sql之foreach

06.sql片段

將一些通用的sql片段提取出來。實現sql代碼的復用。

07.緩存

1.什么是緩存?
存在內存中的臨時數據。
將用戶經常查詢的數據放在緩存((內存)中,用戶去查詢數據就不用從磁盤上(關系型數據庫數據文件)查詢,從緩存中查詢,從而提高查詢效率,解決了高并發系統的性能問題。

2.為什么使用緩存?
減少和數據庫的交互次數,減少系統開銷,提高系統效率。

3.什么樣的數據能使用緩存?
經常查詢并且不經常改變的數據。

Mybatis緩存

MyBatis包含一個非常強大的查詢緩存特性,它可以非常方便地定制和配置緩存。緩存可以極大的提升查詢效率。

MyBatis系統中默認定義了兩級緩存:一級緩存和二級緩存

默認情況下,只有一級緩存開啟。(SqlSession級別的緩存,也稱為本地緩存)。

二級緩存需要手動開啟和配置,他是基于namespace級別的緩存。

為了提高擴展性,MyBatis定義了緩存接口Cache。我們可以通過實現Cache接口來自定義二級緩存

一級緩存

MyBatis 內置了一個強大的事務性查詢緩存機制,它可以非常方便地配置和定制。 為了使它更加強大而且易于配置,我們對 MyBatis 3 中的緩存實現進行了許多改進。
默認情況下,只啟用了本地的會話緩存,它僅僅對一個會話中的數據進行緩存。

一級緩存也叫本地緩存:SqlSession

與數據庫同一次會話期間查詢到的數據會放在本地緩存中。
以后如果需要獲取相同的數據,直接從緩存中拿,沒必須再去查詢數據庫;

測試步驟:
1.開啟日志!

2.測試在一個Sesion中查詢兩次相同記錄

3.查看日志輸出

映射語句文件中的所有 select 語句的結果將會被緩存。
映射語句文件中的所有 insert、update 和 delete 語句會刷新緩存
緩存會使用最近最少使用算法(LRU, Least Recently Used)算法來清除不需要的緩存。
緩存不會定時進行刷新(也就是說,沒有刷新間隔)。
緩存會保存列表或對象(無論查詢方法返回哪種)的 1024 個引用。
緩存會被視為讀/寫緩存,這意味著獲取到的對象并不是共享的,可以安全地被調用者修改,而不干擾其他調用者或線程所做的潛在修改。

緩存失效的情況:
1.查詢不同的內容

2.增刪改操作,可能會改變原來的數據,所以會刷新緩存。

3.查詢不同的Mapper.xml

4.手動清除緩存。

sqlSession.clearCache();//手動清理緩存

一級緩存存在于sqlsession獲得到關閉,默認開啟(有效期在獲得連接到關閉連接)。

二級緩存

二級緩存也叫全局緩存,一級緩存作用域太低了,所以誕生了二級緩存·

基于namespace級別的緩存,一個名稱空間,對應一個二級緩存;

工作機制
一個會話查詢一條數據,這個數據就會被放在當前會話的一級緩存中;

如果當前會話關閉了,這個會話對應的一級緩存就沒了;但是我們想要的是,會話關閉了,一級緩存中的數據被保存到二級緩存中;

新的會話查詢信息,就可以從二級緩存中獲取內容;

不同的mapper查出的數據會放在自己對應的緩存(map)中;

默認情況下,只啟用了本地的會話緩存(一級緩存),它僅僅對一個會話中的數據進行緩存。 要啟用全局的二級緩存,只需要在你的 SQL 映射文件中添加一行:

<cache/>

緩存只作用于 cache 標簽所在的映射文件中的語句。如果你混合使用 Java API 和 XML 映射文件,在共用接口中的語句將不會被默認緩存。你需要使用 @CacheNamespaceRef 注解指定緩存作用域。

這些屬性可以通過 cache 元素的屬性來修改。比如:

<cacheeviction="FIFO"flushInterval="60000"size="512"readOnly="true"/>

這個更高級的配置創建了一個 FIFO 緩存,每隔 60 秒刷新,最多可以存儲結果對象或列表的 512 個引用,而且返回的對象被認為是只讀的,因此對它們進行修改可能會在不同線程中的調用者產生沖突。

可用的清除策略有:

LRU – 最近最少使用:移除最長時間不被使用的對象。
FIFO – 先進先出:按對象進入緩存的順序來移除它們。
SOFT – 軟引用:基于垃圾回收器狀態和軟引用規則移除對象。
WEAK – 弱引用:更積極地基于垃圾收集器狀態和弱引用規則移除對象。
默認的清除策略是 LRU。

步驟:
1.開啟全局緩存(默認開啟)。

2.在要使用二級緩存的Mapper中開啟

3.問題:我們需要將實體類序列化!否則會報錯。

implements Serializable

只要開啟了二級緩存,在同一個Mapper下就有效。

所有的數據都會先放在一級緩存中。

只有當會話提交,或者關閉的時候,才會提交到二級緩存中!

緩存的原理

自定義緩存

EhCache 是一個純Java的進程內緩存框架,具有快速、精干等特點,是Hibernate中默認的CacheProvider。
1.導包

第三方緩存
<!-- https://mvnrepository.com/artifact/org.mybatis.caches/mybatis-ehcache -->
<dependency><groupId>org.mybatis.caches</groupId><artifactId>mybatis-ehcache</artifactId><version>1.1.0</version>
</dependency>

除了上述自定義緩存的方式,你也可以通過實現你自己的緩存,或為其他第三方緩存方案創建適配器,來完全覆蓋緩存行為。

<cache type="com.domain.something.MyCustomCache"/>

這個示例展示了如何使用一個自定義的緩存實現。type 屬性指定的類必須實現 org.apache.ibatis.cache.Cache 接口,且提供一個接受 String 參數作為 id 的構造器。 這個接口是 MyBatis 框架中許多復雜的接口之一,但是行為卻非常簡單。

public interface Cache {String getId();int getSize();void putObject(Object key, Object value);Object getObject(Object key);boolean hasKey(Object key);Object removeObject(Object key);void clear();
}
放假回家已經好幾天啦,感覺要學習的東西還很多。加油,下一篇spring見!

總結

以上是生活随笔為你收集整理的idea mybatis plus 代码生成插件_妙啊,Mybatis从浅入深-Plus(IDEA版通俗易懂)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

www.com黄色 | 久久精品免费看 | 日本aa在线 | 91精品国产一区二区在线观看 | 亚洲精品乱码久久久久久久久久 | 免费在线观看视频一区 | 久久精品中文视频 | 99精品视频精品精品视频 | 亚洲一区二区三区毛片 | 国内久久久久久 | 天天色天天爱天天射综合 | 国内精品小视频 | 九月婷婷人人澡人人添人人爽 | 九九爱免费视频在线观看 | 欧美地下肉体性派对 | 人人射av| av高清一区 | 日韩av在线免费看 | av片中文 | 色妞久久福利网 | 久久综合狠狠综合久久激情 | 91久久偷偷做嫩草影院 | 香蕉视频免费看 | 国产婷婷一区二区 | 天天做综合网 | 深爱婷婷久久综合 | 亚洲aaa毛片 | 丁香婷婷在线 | 久久国产精品久久精品 | 久久夜夜夜| 色婷五月天 | 国产在线视频一区 | 婷婷丁香狠狠爱 | 九九视频免费 | 99久久99久久综合 | 视频成人永久免费视频 | 久久香蕉国产精品麻豆粉嫩av | 天天操天天弄 | 久草精品视频在线播放 | 亚洲日本成人 | 成人午夜av电影 | 中文字幕在线成人 | 成人av免费在线 | 中文字幕一区在线 | 国产精品av免费观看 | 久久影院亚洲 | 国产精品综合久久 | 黄色网在线免费观看 | 欧美一区二区三区免费看 | 成人超碰97| 全黄网站 | 久久草视频 | 婷婷在线资源 | 亚洲成aⅴ人在线观看 | 色999精品 | 亚洲视频 中文字幕 | 亚洲精品视频在 | 超碰久热 | 天天综合久久综合 | 中文字幕色在线视频 | 在线中文字母电影观看 | 久久久久久不卡 | 99视频在线观看免费 | 国产一区二区三区黄 | 免费亚洲黄色 | 国产成人精品av在线观 | 久久久精品国产免费观看一区二区 | a级免费观看 | av丝袜制服 | 91在线porny国产在线看 | 日韩精品中文字幕在线 | 天天做日日做天天爽视频免费 | 中文字幕在线成人 | 久久精品这里热有精品 | 色婷婷综合视频在线观看 | 超碰最新网址 | 精品久久久久久国产 | 精品婷婷 | 久久专区| 日韩在线国产 | 伊人电影天堂 | 久操综合| 国产亚洲一区二区在线观看 | 99热国内精品 | 国产中文字幕三区 | 久久精品在线免费观看 | 免费裸体视频网 | 欧美日韩久久久 | 午夜精品影院 | 狠狠ri | 成人性生活大片 | 免费99精品国产自在在线 | 国产精品免费观看国产网曝瓜 | 在线不卡中文字幕播放 | 一区二区三区av在线 | 免费人成网 | 国产精品久久二区 | www在线观看视频 | 色激情在线 | 狠狠综合网 | 久久在线免费观看视频 | 久久天堂影院 | 亚洲a资源 | 日韩欧美高清视频在线观看 | 亚洲国产精品传媒在线观看 | 亚洲视频综合 | 999电影免费在线观看 | 99久久99久久免费精品蜜臀 | 色在线中文字幕 | 日韩国产欧美视频 | 91亚洲精品久久久蜜桃 | 久久精品这里热有精品 | 国产这里只有精品 | 日日夜夜91| 欧美日韩二区三区 | 91精品福利在线 | 日韩在线观看视频中文字幕 | 国产精品成人一区二区 | 在线韩国电影免费观影完整版 | 亚洲精品久久久久久久不卡四虎 | 五月婷婷狠狠 | 精品亚洲一区二区 | 国产精品18videosex性欧美 | 激情视频一区二区 | 色婷婷国产精品一区在线观看 | 日本高清免费中文字幕 | 午夜视频在线观看一区 | 中文字幕免费高清在线观看 | 五月激情婷婷丁香 | 伊人夜夜 | 免费观看一区二区 | 国产九九精品视频 | 欧美一级片免费播放 | 免费看片亚洲 | 99视频免费 | 亚洲国产视频网站 | 免费国产亚洲视频 | 88av网站| 五月天伊人| 日韩中文在线播放 | 美女精品网站 | 丁香婷婷深情五月亚洲 | 日本中文字幕系列 | 黄色软件网站在线观看 | 成人在线播放网站 | 色丁香综合 | 久艹在线观看视频 | 伊人久久精品久久亚洲一区 | 国产精品久久中文字幕 | 日韩在线视频精品 | 免费观看的av网站 | 国产精品免费麻豆入口 | zzijzzij日本成熟少妇 | 中文字幕在线播放第一页 | 中文区中文字幕免费看 | 久久精品爱爱视频 | 99视频精品在线 | 色综合天天综合 | 日韩av一区二区三区 | 国产探花在线看 | 天天射天天射天天射 | 国产日韩欧美中文 | 久久精品国产第一区二区三区 | 久久久久久国产精品亚洲78 | 亚洲综合成人婷婷小说 | 色婷婷福利 | 国产九九九视频 | 久久精品国产成人精品 | 国产精品毛片久久久久久久久久99999999 | 日本久久久久久久久 | 国产精品高清一区二区三区 | a级片网站 | 四虎永久免费在线观看 | 在线观看日本高清mv视频 | 一区二区精 | 波多野结衣最新 | 成人性生交大片免费观看网站 | 久久艹免费 | 国产精品成人自产拍在线观看 | 香蕉视频在线网站 | 九九在线高清精品视频 | 亚洲精品在线视频网站 | 日韩xxxbbb | 欧美精品中文在线免费观看 | 一区 二区电影免费在线观看 | 亚洲精品免费播放 | a在线免费观看视频 | 天天干天天射天天爽 | 中文av影院| 2019中文最近的2019中文在线 | 久久成人国产精品 | 久久国产精品久久精品 | 又黄又爽又刺激 | 成人久久久精品国产乱码一区二区 | 久久综合欧美精品亚洲一区 | 一区视频在线 | 91在线视频观看免费 | 国产96精品 | 亚洲国产精品视频在线观看 | 日韩午夜av电影 | 国产视频不卡 | 国产不卡精品 | 婷婷丁香久久五月婷婷 | 在线婷婷 | 91视频啊啊啊| 96精品高清视频在线观看软件特色 | 精品久久久久国产 | 色婷婷狠狠五月综合天色拍 | 四虎影视成人精品 | 国偷自产中文字幕亚洲手机在线 | 97免费在线视频 | 日日激情| 中文字幕在线免费看线人 | 一区二区三区在线免费 | 综合色中文 | 日本精品中文字幕 | 91在线中文字幕 | 日韩成人av在线 | 婷婷深爱五月 | 天堂av最新网址 | 国产精品久久久久久久久久久久午夜片 | 亚洲精品日韩一区二区电影 | 天天躁天天狠天天透 | 久久久久久久综合色一本 | 精品视频免费 | 久久久久国 | 91精品免费在线视频 | 国产日产精品一区二区三区四区的观看方式 | 中文字幕在线播放一区二区 | 久久99在线观看 | av解说在线观看 | 欧美精品乱码久久久久 | 欧美日韩亚洲第一 | 国产对白av| 国产一级免费观看 | 国产免费又粗又猛又爽 | 天天搞天天 | 国产日本在线观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 国产999在线| 中文字幕视频在线播放 | 青春草视频 | 久久99亚洲精品久久 | 国产精品成人久久久久久久 | 亚洲综合黄色 | 日韩免费在线看 | 狠狠插天天干 | 亚洲综合视频在线播放 | 免费观看性生活大片 | 日韩久久精品一区二区三区 | 亚洲国产经典视频 | 国产精品一区二区三区99 | 亚洲另类视频 | 精品美女在线视频 | 激情综合婷婷 | 国产精品专区h在线观看 | 色吊丝av中文字幕 | 麻豆91在线 | 久久久久久久久影院 | 亚洲一区欧美激情 | 日日夜夜天天久久 | 美女亚洲精品 | 日本久久视频 | 国产麻豆电影在线观看 | 久久久久草 | 色多多视频在线 | 久久精品一区二区三区中文字幕 | 91精品久久久久久久91蜜桃 | 极品久久久 | 免费亚洲视频在线观看 | 一区二区久久久久 | 综合色站导航 | 91麻豆精品国产午夜天堂 | 三级黄在线 | 亚洲综合网 | 国产美女黄网站免费 | 天天爱天天舔 | 中文字幕第一页在线 | 人人玩人人添人人澡超碰 | 中文字幕在线乱 | 在线高清一区 | 一区二区三区在线免费观看 | 在线视频日韩一区 | 婷婷久草 | 日韩日韩日韩日韩 | 免费在线观看成人av | 久久国产一区二区三区 | 久久私人影院 | 2019av在线视频 | 国产成人精品免高潮在线观看 | 5月丁香婷婷综合 | 97色资源 | 久久久精品国产一区二区电影四季 | 狠狠色丁香久久婷婷综合丁香 | 视频99爱| 免费高清在线观看成人 | 欧美a级在线免费观看 | 国产精品情侣视频 | 丁香色婷 | 激情欧美丁香 | 亚洲最新在线视频 | 91免费高清在线观看 | 黄色字幕网 | 中文字幕国语官网在线视频 | 天天躁日日躁狠狠 | 9797在线看片亚洲精品 | 国产精品久久久久久久久费观看 | 亚洲春色奇米影视 | 久99久久| 国产一区二区成人 | 亚洲成人精品在线观看 | 黄色av一级片 | 日韩av线观看 | 亚洲精品一区二区久 | 日本午夜在线观看 | 成人宗合网 | 日本精品一区二区三区在线观看 | 中文字幕在线视频国产 | 日韩在线免费观看视频 | 欧美日韩一级视频 | 亚洲精品理论片 | 一级黄色片在线免费观看 | 少妇视频一区 | 99免费观看视频 | 日韩精品一区二区免费 | 九九热精品视频在线播放 | 蜜桃av观看 | 国产精品九九热 | 日本一区二区免费在线观看 | 黄在线| 日韩二区三区 | 久久国产精品第一页 | 国产在线播放观看 | 超碰免费公开 | 国产精品普通话 | 中文字幕在线成人 | 欧美日韩亚洲一 | 免费一级片观看 | 综合视频在线 | 高清久久久 | 日韩av免费观看网站 | 国产成人一区二区啪在线观看 | 国产午夜精品av一区二区 | 国产一区二区在线影院 | 中文字幕精品一区二区精品 | 片网站| 黄色网址中文字幕 | 奇米影音四色 | 特级免费毛片 | 欧美a级在线 | 国产精品自拍av | 久久精品一二三区白丝高潮 | 偷拍福利视频一区二区三区 | 亚洲男男gⅴgay双龙 | 福利视频一二区 | 激情五月***国产精品 | 亚洲区另类春色综合小说 | 久久草草热国产精品直播 | 亚洲不卡av一区二区三区 | 天天久久综合 | 免费看网站在线 | 亚洲乱亚洲乱亚洲 | 狠狠88综合久久久久综合网 | 狠狠色香婷婷久久亚洲精品 | 久久久香蕉视频 | 一区二区三区国产欧美 | 在线国产视频 | 91成人短视频在线观看 | 少妇搡bbb | 久久这里只精品 | 欧美极度另类性三渗透 | 黄色av电影在线观看 | 国产黄a三级三级 | 久久久精品国产免费观看同学 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 日日干天天爽 | 午夜精品久久久久久久99 | 国产午夜精品一区二区三区嫩草 | 久久久亚洲麻豆日韩精品一区三区 | 国产明星视频三级a三级点| 国产大尺度视频 | 日韩午夜在线 | 色综合久久综合 | 97理论片 | 久久久久影视 | 日本一区二区不卡高清 | 精品一区二区影视 | 成人午夜影院 | 日韩激情视频在线观看 | 日日夜夜免费精品 | 亚洲视频免费在线观看 | 在线免费观看的av网站 | 成人黄色电影在线播放 | 日韩中文免费视频 | 国产精品一区二区三区99 | 欧美另类交人妖 | 一区二区精品 | 国产v亚洲v | 成人av电影网址 | 欧美一级看片 | 综合在线亚洲 | 国产精品乱码高清在线看 | 黄色av影视| 亚洲另类人人澡 | 99精品视频在线观看 | 91高清不卡| 色噜噜色噜噜 | 91九色蝌蚪在线 | 国产在线播放一区二区三区 | 久久久精品视频成人 | 欧美激情一区不卡 | 日韩另类在线 | 91手机电视 | 国产一级免费播放 | 久久高清视频免费 | 国产一区二区在线观看视频 | 国产v亚洲v| 久久免费精彩视频 | 亚洲一区视频在线播放 | 免费视频久久久 | 狠狠色丁香婷婷综合视频 | 欧美了一区在线观看 | 永久黄网站色视频免费观看w | 中文字幕在线影院 | 午夜久草 | 国产高清不卡 | 国产福利在线免费观看 | 91麻豆视频网站 | 午夜精品中文字幕 | 欧洲精品码一区二区三区免费看 | 911国产在线观看 | 久久久久久久久久影院 | 91在线视频在线观看 | 最近高清中文字幕在线国语5 | 精品国产成人av在线免 | 黄色成人小视频 | 婷婷在线综合 | 亚洲a在线观看 | 四虎在线视频免费观看 | 奇米网网址| 久草色在线观看 | 天天爱天天干天天爽 | 四虎在线免费观看 | 欧美视频99 | 国产精品高潮呻吟久久av无 | 日韩理论片中文字幕 | 欧美色黄| 在线97| 亚州国产精品久久久 | av在线播放一区二区三区 | 精品久久久久久久久中文字幕 | 久久久久久免费 | 国产啊v在线观看 | 中文av不卡 | 国产在线不卡一区 | 在线免费黄 | 午夜成人影视 | 亚洲精品色 | 国产在线久久久 | 香蕉影院在线观看 | 在线观看中文字幕第一页 | 亚洲国产欧美在线人成大黄瓜 | 免费精品久久久 | 国产成人黄色 | 免费色av| 在线播放 日韩专区 | 在线观看播放av | 中文字幕乱在线伦视频中文字幕乱码在线 | 毛片www | 免费成视频 | 亚洲视频在线观看网站 | 亚洲成a人片在线www | 探花视频在线版播放免费观看 | 久久午夜免费观看 | 丁香六月婷婷开心婷婷网 | 久久久久久视频 | 特级毛片aaa | 天堂av网址 | 日韩欧美在线观看一区二区 | 色偷偷男人的天堂av | 午夜精品电影一区二区在线 | 亚洲国产激情 | 国产首页 | 国产成人精品在线 | 99久久精品午夜一区二区小说 | 伊人久操 | 激情丁香综合 | 日韩啪啪小视频 | 色五月激情五月 | 久久免费的精品国产v∧ | 久久伊99综合婷婷久久伊 | 麻豆视频在线免费看 | 成人av电影免费观看 | 日韩有码第一页 | www.大网伊人 | 欧美成人xxxxxxxx | 在线韩国电影免费观影完整版 | 成人h电影在线观看 | 久久精品网站免费观看 | 999国产精品视频 | 人人要人人澡人人爽人人dvd | 国产一级片免费观看 | 午夜在线免费观看 | 国产精品24小时在线观看 | 天天av在线播放 | 色婷婷电影网 | 欧美日本中文字幕 | 精品国产乱码久久久久久天美 | 黄色免费网站下载 | 99热免费在线 | 一区二区三区在线观看免费视频 | 中文字幕免费成人 | 久久xx视频| 日韩一二三 | av在线免费网站 | 成人三级网站在线观看 | 国产高h视频 | 国产精品一区二区吃奶在线观看 | 亚洲最新合集 | 亚洲一区二区三区在线看 | 久久国产精品久久精品国产演员表 | 五月天婷亚洲天综合网精品偷 | 久久久精品电影 | 国产精品区免费视频 | 99精品国产在热久久下载 | 国产精品久久久久久久久久直播 | 国产福利精品视频 | 丁香五月亚洲综合在线 | 色资源二区在线视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 91精品秘密在线观看 | 久久久久看片 | 三级视频国产 | 蜜臀av性久久久久av蜜臀三区 | 国产成人精品久 | 免费又黄又爽 | 天天操天 | 精品久久网 | 丁香五月亚洲综合在线 | 黄色免费大全 | 欧美精选一区二区三区 | 又黄又爽免费视频 | 成人国产精品电影 | 一本大道久久精品懂色aⅴ 五月婷社区 | 午夜男人影院 | 免费在线观看国产精品 | 国产精品国产亚洲精品看不卡15 | 日韩综合在线观看 | 在线成人性视频 | 国产视频在线观看一区二区 | 国外成人在线视频网站 | 中文一二区 | 一区二区三区精品在线视频 | 最新精品国产 | 91网站观看 | 国产麻豆果冻传媒在线观看 | 欧美一区二区精美视频 | 国产精品日韩久久久久 | 麻豆影视网站 | 成年人视频在线 | 亚洲成年人av | 激情综合站| 91x色| 亚洲,国产成人av | 欧美久久久久久久久久久 | 三日本三级少妇三级99 | 成人黄色av免费在线观看 | av片子在线观看 | 免费麻豆视频 | 最新真实国产在线视频 | 国产在线精 | 欧美 亚洲 另类 激情 另类 | av高清在线观看 | avhd高清在线谜片 | 免费三级网 | 中文字幕久久网 | 一区二区三区免费在线观看视频 | 99热 精品在线 | 久久精品8| 欧美日韩精品影院 | 成年人视频在线观看免费 | 四虎影视成人永久免费观看亚洲欧美 | 精品国产乱码久久久久 | 国产96av| 日韩,精品电影 | 亚洲乱码在线 | 丁香久久综合 | 国产精品久久久久久爽爽爽 | 国内精品久久久久影院一蜜桃 | 丁香五月网久久综合 | www黄免费| 久久论理| 福利网在线 | 97精品国产97久久久久久春色 | 超碰久热| 国产精品久久久久一区 | 视频国产一区二区三区 | 午夜精品一区二区三区免费视频 | 国产精品美女久久久久久久久 | 精品在线播放视频 | 狠狠插狠狠干 | 国产亚洲免费的视频看 | 激情婷婷av | 911免费视频 | 18做爰免费视频网站 | 久久尤物电影视频在线观看 | 九9热这里真品2 | 免费在线观看不卡av | 六月丁香在线观看 | 国产精品尤物 | 欧美综合色在线图区 | 香蕉在线播放 | 色综合久久88色综合天天免费 | 欧美日韩中文国产一区发布 | 日韩在线视频精品 | 日韩av在线免费播放 | 一级a性色生活片久久毛片波多野 | 色婷婷久久久 | 久久久国产高清 | 久久任你操 | 欧美成人免费在线 | 国产精品自产拍在线观看桃花 | 韩国精品视频在线观看 | 久久不射影院 | 欧美亚洲免费在线一区 | 99综合影院在线 | 国产精品色婷婷视频 | 日韩精品久久久久久 | 天天躁日日躁狠狠躁 | 99久久成人| 亚洲最快最全在线视频 | 色综合久久久网 | 亚洲 欧美 变态 国产 另类 | 九九国产视频 | 久热久草在线 | 亚洲成人精品国产 | av一区二区三区在线播放 | 国产99在线播放 | 国产一线二线三线性视频 | 999久久久国产精品 高清av免费观看 | 久久这里只有精品9 | 日韩精品一区二区三区免费视频观看 | 黄色片免费电影 | 91色亚洲 | 视频一区二区在线观看 | 玖玖玖国产精品 | 亚洲日本国产精品 | 中文在线 | 久久色视频 | 最新av在线网站 | 日日干夜夜爱 | 久久国产视屏 | 五月婷婷黄色网 | 欧美久久成人 | 欧美精品九九99久久 | 偷拍视频一区 | 国产精品一区二区三区在线看 | 免费91在线观看 | 日韩视频一区二区三区在线播放免费观看 | 免费av电影网站 | 欧美一级免费 | 婷久久 | 免费看国产黄色 | 亚洲一区二区三区91 | 亚洲乱码精品久久久 | 成人va天堂 | 日韩在线精品一区 | 成人免费精品 | h久久| 日韩精品久久久久久久电影99爱 | 日韩三级视频 | 欧美一区二区三区特黄 | 91亚洲精品国偷拍自产在线观看 | 久久精品看片 | 在线午夜电影神马影院 | 啪啪精品 | 在线看片成人 | 国产a免费| 99久久免费看 | 日韩网站中文字幕 | 国产色啪 | 国产精品成久久久久三级 | 精品国产伦一区二区三区观看体验 | 国产视频黄 | 久久久网址 | 黄色大全免费网站 | 99久久99| 99re视频在线观看 | 五月婷婷综 | 最近中文字幕在线播放 | 久久精品日产第一区二区三区乱码 | 在线成人免费电影 | 成人三级网址 | 亚洲黄色av一区 | 夜夜躁狠狠躁日日躁 | 人人添人人 | 91亚色视频| 国产在线观看a | 国内精品久久久久久久久久久久 | av网站在线观看免费 | 国产免费一区二区三区最新6 | aⅴ精品av导航 | 中文字幕一区2区3区 | 九九精品视频在线观看 | 日韩女同一区二区三区在线观看 | 91人人澡人人爽人人精品 | 在线精品视频免费播放 | 国产精品色婷婷视频 | 国产高清视频免费最新在线 | 96久久欧美麻豆网站 | av成年人电影 | 在线看毛片网站 | 不卡的av电影 | 免费一级片在线观看 | 999久久国精品免费观看网站 | 69精品在线 | 午夜视频在线观看一区 | 色干干 | 在线视频 日韩 | 国外调教视频网站 | 伊人五月天综合 | 在线观看亚洲国产 | 国产成人高清av | 国产精品永久免费视频 | 国产亚洲精品成人av久久影院 | 毛片一区二区 | 首页av在线 | 成人黄色在线看 | 丁香五月亚洲综合在线 | 日日操操 | 国内精品久久久久影院日本资源 | 久av电影| 337p欧美 | 国产精品一区久久久久 | 国产精品一区二区久久精品 | 久久怡红院 | 日韩无在线 | 国产精品成人一区二区 | 一区二区三区电影大全 | 日韩久久一区 | 久久免费视频4 | 在线免费av观看 | 久久视频免费在线 | 蜜臀av麻豆 | 免费av黄色 | 91视频在线免费观看 | 久草在线费播放视频 | 亚洲国产三级在线观看 | 黄色亚洲大片免费在线观看 | 国内精品久久久久影院一蜜桃 | 中文字幕av日韩 | 国产一级片久久 | 久久久亚洲精品 | 国产午夜剧场 | 亚洲乱码在线观看 | 成人午夜网 | 久久99精品久久久久婷婷 | 九九九免费视频 | 在线看福利av | 波多野结衣视频一区 | 日日爽天天 | 国产视频一区在线免费观看 | 在线视频免费观看 | 免费在线色电影 | 亚洲成人一二三 | 国产美女精品人人做人人爽 | 在线观看黄网站 | 一区二区久久久久 | 91精品国产综合久久久久久久 | 亚洲精品动漫久久久久 | 一区二区三区在线观看 | 国产手机在线观看视频 | 日本特黄一级片 | 一区二区观看 | 国产色在线,com | 久草电影免费在线观看 | 丰满少妇对白在线偷拍 | 亚洲少妇久久 | 久久久精品99 | 精品久久久久一区二区国产 | 亚洲精品中文在线观看 | 最近最新最好看中文视频 | av片免费播放| 成人av电影在线观看 | 日韩免费电影网站 | 99热最新精品 | 久久精品免费电影 | 亚洲春色综合另类校园电影 | 国产精品美女免费 | 国色天香在线观看 | 国产不卡在线视频 | 欧美一级片在线免费观看 | 在线观看视频免费播放 | 在线成人中文字幕 | 久久国产精品99久久久久 | 国产九九精品视频 | 高清不卡毛片 | 久久久久久久久久影视 | 黄色网www| 黄色av大片 | 精品国产不卡 | 丁香婷婷色综合亚洲电影 | 精品美女在线视频 | 国产69精品久久99不卡的观看体验 | 2019中文字幕第一页 | 国产精品九九视频 | 成人久久18免费 | 五月丁婷婷 | 91精品国产欧美一区二区成人 | 九九九热精品免费视频观看网站 | 亚洲三级性片 | 国产精品区免费视频 | 日本aaaa级毛片在线看 | 911香蕉视频 | 国产精品爽爽久久久久久蜜臀 | 亚洲精品国产精品乱码不99热 | 一区二区视频播放 | 亚洲激情网站免费观看 | 中文字幕电影网 | 久久国产免 | 国产成人综合精品 | av电影在线播放 | 亚洲伦理电影在线 | 久久精品一二三 | 亚洲黄色小说网 | 国产福利一区在线观看 | 亚洲国产精品推荐 | 探花视频在线观看 | 97视频网址 | 欧美大片在线观看一区 | 日韩精品免费一区二区 | 国产精品久久久久久久午夜片 | 国产最新视频在线观看 | 欧美精品天堂 | 久久成人欧美 | 国产自在线观看 | 成人在线观看免费 | 欧美综合国产 | 91在线精品观看 | 免费看一级特黄a大片 | 日日夜夜精品免费视频 | 欧美一二三区在线观看 | 久久国产精品视频观看 | 99精品国产高清在线观看 | 韩日av在线 | 久久一精品 | 久久手机视频 | 久草在线视频新 | 麻豆精品在线视频 | 色多多视频在线观看 | 激情影音先锋 | 日产中文字幕 | 一区二区三区在线影院 | 在线播放精品一区二区三区 | 99久精品视频 | 久久午夜电影院 | 欧美一性一交一乱 | 国产日产精品一区二区三区四区的观看方式 | 欧美一级视频在线观看 | 亚洲一区二区三区在线看 | 久久99国产精品久久99 | 精品久久久久久久久久岛国gif | 日韩有码专区 | 成人丝袜 | 99精品区 | 人人躁 | 天天爱天天 | 国产精品免费在线播放 | 一二区电影 | 久久人人插 | 中文字幕在线看视频 | av导航福利 | 久久夜色电影 | 91中文字幕在线播放 | 97福利在线 | 欧美日韩中文另类 | 午夜10000 | 91av手机在线 | 久久香蕉电影网 | 国产高清在线 | 国产精品久久久久婷婷二区次 | 中文有码在线视频 | 久久成人黄色 | 干 操 插 | 97视频亚洲 | 四虎www | 久久av网址 | 啪啪肉肉污av国网站 | 久久精品1区 | 久久久穴 | 日韩成人邪恶影片 | 激情综合五月天 | 二区中文字幕 | 一级免费片| 日本免费久久高清视频 | 国产精品久久久久久久久久 | 国产高清视频免费观看 | 激情在线网站 | 一区 在线观看 | 免费看一及片 | 青青河边草观看完整版高清 | 日本黄色免费电影网站 | 色黄www小说 | 黄网站色视频 | 在线视频在线观看 | 91在线播放视频 | 在线探花| 日日夜夜精品网站 | 黄色成人毛片 | 成人va天堂| 日韩免费高清在线观看 | 精品国产_亚洲人成在线 | 中文十次啦| 视频国产 | 国产成人精品一区一区一区 | 99成人免费视频 | 91成人免费视频 | 国产精品成人国产乱 | 免费中文字幕在线观看 | 欧美一级xxxx| 在线免费视频 你懂得 | 91黄色影视 | 精品国产成人在线 | 色香蕉网 | 久草网站在线观看 | 不卡的av电影 | 美女久久网站 | 日本精品视频一区二区 | 成人午夜精品 | 天天干 夜夜操 | 欧美精彩视频在线观看 | 成人夜晚看av| 国产高清在线a视频大全 | 91精品免费在线视频 | 天天伊人网 | 亚洲视频专区在线 | 欧洲精品在线视频 | 在线日韩亚洲 | 超碰人人草 | 最近中文字幕大全中文字幕免费 | 婷婷色5月 | av电影免费在线播放 | 中文国产在线观看 | 人人爽人人爽 | 亚洲精品一区二区18漫画 | 免费成人av网站 | 韩国在线一区二区 | 免费在线观看污网站 | 久久久久久国产精品免费 | 99国内精品久久久久久久 | 伊人夜夜| av免费在线网 | 97色视频在线 | 一区二区三区视频 | 国产日韩欧美中文 | 国产成人精品久久亚洲高清不卡 | 日韩国产精品毛片 | 超碰人人在线观看 | 日韩在线观看 | 久草精品在线 | 国产精品自产拍在线观看网站 | av中文天堂| 91精品91| 久久女同性恋中文字幕 | 中文字幕日韩一区二区三区不卡 | 日韩一区二区久久 | 久久久免费精品 | 国产精品一区二区视频 | 免费看黄色91| 日韩电影久久 | 激情网在线观看 | 日本一区二区三区视频在线播放 | 久久久精品综合 | 久久国产精品免费 | 成人性生交大片免费观看网站 | 亚洲精品视频在线看 | 国产高清在线不卡 | 日韩欧美在线国产 | 成人作爱视频 | 在线免费av播放 | 九九免费观看全部免费视频 | 亚洲人久久久 | 亚洲精品国内 | 国产xx视频 | 激情综合网在线观看 | 五月天堂色 | 在线观看中文字幕网站 | 二区三区视频 | 国产手机在线观看视频 | 日批网站免费观看 | 伊人小视频 | 国产精品日韩久久久久 | 亚洲日本欧美 | 国产免费大片 | 久久97久久97精品免视看 | 色综合天天综合网国产成人网 | 久久久久国产成人免费精品免费 | 青青河边草免费观看完整版高清 |