精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hibernate中Criteria的用法

開發(fā) 后端
本文講述Hibernate中Criteria的完整用法。作者最近在項(xiàng)目中使用 Spring 和 Hibernate 進(jìn)行開發(fā),有感于 Criteria 比較好用,對 Hibernate的Criteria 的用法進(jìn)行了總結(jié)。

最近在項(xiàng)目中使用 Spring 和 Hibernate 進(jìn)行開發(fā),有感于 Criteria 比較好用,在查詢方法設(shè)計(jì)上可以靈活的根據(jù) Criteria 的特點(diǎn)來方便地進(jìn)行查詢條件的組裝。現(xiàn)在對 Hibernate的Criteria的用法進(jìn)行總結(jié):

Hibernate 設(shè)計(jì)了 CriteriaSpecification 作為 Criteria 的父接口,下面提供了 Criteria和DetachedCriteria 。

Criteria 和 DetachedCriteria 的主要區(qū)別在于創(chuàng)建的形式不一樣, Criteria 是在線的,所以它是由 Hibernate Session 進(jìn)行創(chuàng)建的;而 DetachedCriteria 是離線的,創(chuàng)建時(shí)無需Session,DetachedCriteria 提供了 2 個(gè)靜態(tài)方法 forClass(Class) 或 forEntityName(Name)進(jìn)行DetachedCriteria 實(shí)例的創(chuàng)建。 Spring 的框架提供了getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根據(jù)DetachedCriteria 來返回查詢結(jié)果。

Criteria 和 DetachedCriteria 均可使用 Criterion 和 Projection 設(shè)置查詢條件。可以設(shè)置 FetchMode( 聯(lián)合查詢抓取的模式 ) ,設(shè)置排序方式。對于 Criteria 還可以設(shè)置 FlushModel(沖刷 Session 的方式)和 LockMode (數(shù)據(jù)庫鎖模式)。

下面對 Criterion 和 Projection 進(jìn)行詳細(xì)說明。

Criterion 是 Criteria 的查詢條件。Criteria 提供了 add(Criterion criterion) 方法來添加查詢條件。

Criterion 接口的主要實(shí)現(xiàn)包括: Example 、 Junction 和 Simpl********** 。而Junction 的實(shí)際使用是它的兩個(gè)子類 conjunction 和 disjunction ,分別是使用 AND 和 OR 操作符進(jìn)行來聯(lián)結(jié)查詢條件集合。

Criterion 的實(shí)例可以通過 Restrictions 工具類來創(chuàng)建,Restrictions 提供了大量的靜態(tài)方法,如 eq (等于)、 ge (大于等于)、 between 等來方法的創(chuàng)建 Criterion 查詢條件(Simpl********** 實(shí)例)。除此之外, Restrictions 還提供了方法來創(chuàng)建 conjunction 和disjunction 實(shí)例,通過往該實(shí)例的 add(Criteria) 方法來增加查詢條件形成一個(gè)查詢條件集合。

至于 Example 的創(chuàng)建有所不同, Example 本身提供了一個(gè)靜態(tài)方法 create(Objectentity) ,即根據(jù)一個(gè)對象(實(shí)際使用中一般是映射到數(shù)據(jù)庫的對象)來創(chuàng)建。然后可以設(shè)置一些過濾條件:

  1. Example exampleUser =Example.create(u)  
  2. .ignoreCase() // 忽略大小寫  
  3. .enableLike(MatchMode.ANYWHERE);  
  4. // 對 String 類型的屬性,無論在那里值在那里都匹配。相當(dāng)于 %value% 

Project 主要是讓 Criteria 能夠進(jìn)行報(bào)表查詢,并可以實(shí)現(xiàn)分組。 Project 主要有SimpleProjection 、 ProjectionList 和 Property 三個(gè)實(shí)現(xiàn)。其中SimpleProjection 和ProjectionList 的實(shí)例化是由內(nèi)建的 Projections 來完成,如提供的 avg 、 count 、 max 、min 、 sum 可以讓開發(fā)者很容易對某個(gè)字段進(jìn)行統(tǒng)計(jì)查詢。

Property 是對某個(gè)字段進(jìn)行查詢條件的設(shè)置,如通過Porperty.forName(“color”).in(new String[]{“black”,”red”,”write”}); 則可以創(chuàng)建一個(gè) Project 實(shí)例。通過criteria 的 add(Project) 方法加入到查詢條件中去。

使用 Criteria 進(jìn)行查詢,主要要清晰的是 Hibernate 提供了那些類和方法來滿足開發(fā)中查詢條件的創(chuàng)建和組裝,下面介紹幾種用法:

1. 創(chuàng)建一個(gè)Criteria 實(shí)例

org.hibernate.Criteria接口表示特定持久類的一個(gè)查詢。Session是 Criteria實(shí)例的工廠。

  1. Criteria crit = sess.createCriteria(Cat.class);  
  2. crit.setMaxResults(50);  
  3. List cats = crit.list(); 

2. 限制結(jié)果集內(nèi)容

一個(gè)單獨(dú)的查詢條件是org.hibernate.criterion.Criterion 接口的一個(gè)實(shí)例。

  1. org.hibernate.criterion.Restrictions類 定義了獲得某些內(nèi)置Criterion類型的工廠方法。  
  2. List cats = sess.createCriteria(Cat.class)  
  3. .add( Restrictions.like("name""Fritz%") )  
  4. .add( Restrictions.between("weight", minWeight, maxWeight) )  
  5. .list(); 

約束可以按邏輯分組。

  1. org.hibernate.criterion.Restrictions類 定義了獲得某些內(nèi)置Criterion類型的工廠方法。  
  2. List cats = sess.createCriteria(Cat.class)  
  3. .add( Restrictions.like("name""Fritz%") )  
  4. .add( Restrictions.between("weight", minWeight, maxWeight) )  
  5. .list(); 

Hibernate提供了相當(dāng)多的內(nèi)置criterion類型(Restrictions 子類), 但是尤其有用的是可以允許你直接使用SQL。

  1. List cats = sess.createCriteria(Cat.class)  
  2. .add( Restrictions.sql("lower({alias}.name) like lower(?)""Fritz%",  
  3.  
  4. Hibernate.STRING) )  
  5. .list();  

{alias}占位符應(yīng)當(dāng)被替換為被查詢實(shí)體的列別名。

Property實(shí)例是獲得一個(gè)條件的另外一種途徑。你可以通過調(diào)用Property.forName() 創(chuàng)建一個(gè)Property。

  1. Property age = Property.forName("age");  
  2. List cats = sess.createCriteria(Cat.class)  
  3. .add( Restrictions.disjunction()  
  4. .add( age.isNull() )  
  5. .add( age.eq( new Integer(0) ) )  
  6. .add( age.eq( new Integer(1) ) )  
  7. .add( age.eq( new Integer(2) ) )  
  8. ) )  
  9. .add( Property.forName("name").in( new String[] { "Fritz""Izi""Pk" } ) )  
  10. .list(); 

3. 結(jié)果集排序

你可以使用org.hibernate.criterion.Order來為查詢結(jié)果排序。

  1. List cats = sess.createCriteria(Cat.class)  
  2. .add( Restrictions.like("name""F%")  
  3. .addOrder( Order.asc("name") )  
  4. .addOrder( Order.desc("age") )  
  5. .setMaxResults(50)  
  6. .list();  
  7.  
  8. List cats = sess.createCriteria(Cat.class)  
  9. .add( Property.forName("name").like("F%") )  
  10. .addOrder( Property.forName("name").asc() )  
  11. .addOrder( Property.forName("age").desc() )  
  12. .setMaxResults(50)  
  13. .list();  

4. 關(guān)聯(lián)

你可以使用createCriteria()非常容易的在互相關(guān)聯(lián)的實(shí)體間建立約束。

  1. List cats = sess.createCriteria(Cat.class)  
  2. .add( Restrictions.like("name", "F%")  
  3. .createCriteria("kittens")  
  4. .add( Restrictions.like("name", "F%")  
  5. .list(); 

注意第二個(gè) createCriteria()返回一個(gè)新的 Criteria實(shí)例,該實(shí)例引用kittens 集合中的元素。接下來,替換形態(tài)在某些情況下也是很有用的。

  1. List cats = sess.createCriteria(Cat.class)  
  2. .createAlias("kittens", "kt")  
  3. .createAlias("mate", "mt")  
  4. .add( Restrictions.eqProperty("kt.name", "mt.name") )  
  5. .list(); 

(createAlias()并不創(chuàng)建一個(gè)新的 Criteria實(shí)例。)

Cat實(shí)例所保存的之前兩次查詢所返回的kittens集合是 沒有被條件預(yù)過濾的。如果你希望只獲得符合條件的kittens, 你必須使用returnMaps()。

  1. List cats = sess.createCriteria(Cat.class)  
  2. .createCriteria("kittens", "kt")  
  3. .add( Restrictions.eq("name", "F%") )  
  4. .returnMaps()  
  5. .list();  
  6. Iterator iter = cats.iterator();  
  7. while ( iter.hasNext() ) {  
  8. Map map = (Map) iter.next();  
  9. Cat cat = (Cat) map.get(Criteria.ROOT_ALIAS);  
  10. Cat kitten = (Cat) map.get("kt");  

5. 動(dòng)態(tài)關(guān)聯(lián)抓取

你可以使用setFetchMode()在運(yùn)行時(shí)定義動(dòng)態(tài)關(guān)聯(lián)抓取的語義。

  1. List cats = sess.createCriteria(Cat.class)  
  2. .add( Restrictions.like("name", "Fritz%") )  
  3. .setFetchMode("mate", FetchMode.EAGER)  
  4. .setFetchMode("kittens", FetchMode.EAGER)  
  5. .list(); 

這個(gè)查詢可以通過外連接抓取mate和kittens。

6. 查詢示例

org.hibernate.criterion.Example類允許你通過一個(gè)給定實(shí)例 構(gòu)建一個(gè)條件查詢。

  1. Cat cat = new Cat();  
  2. cat.setSex('F');  
  3. cat.setColor(Color.BLACK);  
  4. List results = session.createCriteria(Cat.class)  
  5. .add( Example.create(cat) )  
  6. .list(); 

版本屬性、標(biāo)識符和關(guān)聯(lián)被忽略。默認(rèn)情況下值為null的屬性將被排除。可以自行調(diào)整Example使之更實(shí)用。

  1. Example example = Example.create(cat)  
  2. .excludeZeroes() //exclude zero valued properties  
  3. .excludeProperty("color") //exclude the property named "color"  
  4. .ignoreCase() //perform case insensitive string comparisons  
  5. .enableLike(); //use like for string comparisons  
  6. List results = session.createCriteria(Cat.class)  
  7. .add(example)  
  8. .list(); 

甚至可以使用examples在關(guān)聯(lián)對象上放置條件。

  1. List results = session.createCriteria(Cat.class)  
  2. .add( Example.create(cat) )  
  3. .createCriteria("mate")  
  4. .add( Example.create( cat.getMate() ) )  
  5. .list(); 

7. 投影(Projections)、聚合(aggregation)和分組(grouping)

org.hibernate.criterion.Projections是 Projection 的實(shí)例工廠。我們通過調(diào)用setProjection()應(yīng)用投影到一個(gè)查詢。

  1. List results = session.createCriteria(Cat.class)  
  2. .setProjection( Projections.rowCount() )  
  3. .add( Restrictions.eq("color", Color.BLACK) )  
  4. .list();  
  5.  
  6. List results = session.createCriteria(Cat.class)  
  7. .setProjection( Projections.projectionList()  
  8. .add( Projections.rowCount() )  
  9. .add( Projections.avg("weight") )  
  10. .add( Projections.max("weight") )  
  11. .add( Projections.groupProperty("color") )  
  12. )  
  13. .list();  

在一個(gè)條件查詢中沒有必要顯式的使用 "group by" 。某些投影類型就是被定義為 分組投影,他們也出現(xiàn)在SQL的group by子句中。

可以選擇把一個(gè)別名指派給一個(gè)投影,這樣可以使投影值被約束或排序所引用。下面是兩種不同的實(shí)現(xiàn)方式:

  1. List results = session.createCriteria(Cat.class)  
  2. .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) )  
  3. .addOrder( Order.asc("colr") )  
  4. .list();  
  5.  
  6.  
  7.     
  8. List results = session.createCriteria(Cat.class)  
  9. .setProjection( Projections.groupProperty("color").as("colr") )  
  10. .addOrder( Order.asc("colr") )  
  11. .list();  

alias()和as()方法簡便的將一個(gè)投影實(shí)例包裝到另外一個(gè) 別名的Projection實(shí)例中。簡而言之,當(dāng)你添加一個(gè)投影到一個(gè)投影列表中時(shí) 你可以為它指定一個(gè)別名:

  1. List results = session.createCriteria(Cat.class)  
  2. .setProjection( Projections.projectionList()  
  3. .add( Projections.rowCount(), "catCountByColor" )  
  4. .add( Projections.avg("weight"), "avgWeight" )  
  5. .add( Projections.max("weight"), "maxWeight" )  
  6. .add( Projections.groupProperty("color"), "color" )  
  7. )  
  8. .addOrder( Order.desc("catCountByColor") )  
  9. .addOrder( Order.desc("avgWeight") )  
  10. .list();  
  11.  
  12.  
  13. List results = session.createCriteria(Domestic.class, "cat")  
  14. .createAlias("kittens", "kit")  
  15. .setProjection( Projections.projectionList()  
  16. .add( Projections.property("cat.name"), "catName" )  
  17. .add( Projections.property("kit.name"), "kitName" )  
  18. )  
  19. .addOrder( Order.asc("catName") )  
  20. .addOrder( Order.asc("kitName") )  
  21. .list();  

也可以使用Property.forName()來表示投影:

  1. List results = session.createCriteria(Cat.class)  
  2. .setProjection( Property.forName("name") )  
  3. .add( Property.forName("color").eq(Color.BLACK) )  
  4. .list();  
  5. List results = session.createCriteria(Cat.class)  
  6. .setProjection( Projections.projectionList()  
  7. .add( Projections.rowCount().as("catCountByColor") )  
  8. .add( Property.forName("weight").avg().as("avgWeight") )  
  9. .add( Property.forName("weight").max().as("maxWeight") )  
  10. .add( Property.forName("color").group().as("color" )  
  11. )  
  12. .addOrder( Order.desc("catCountByColor") )  
  13. .addOrder( Order.desc("avgWeight") )  
  14. .list(); 

8. 離線(detached)查詢和子查詢

DetachedCriteria類使你在一個(gè)session范圍之外創(chuàng)建一個(gè)查詢,并且可以使用任意的 Session來執(zhí)行它。

  1. DetachedCriteria query = DetachedCriteria.forClass(Cat.class)  
  2. .add( Property.forName("sex").eq('F') );  
  3. //創(chuàng)建一個(gè)Session  
  4. Session session = .;  
  5. Transaction txn = session.beginTransaction();  
  6. List results = query.getExecutableCriteria(session).setMaxResults(100).list();  
  7. txn.commit();  
  8. session.close(); 

DetachedCriteria也可以用以表示子查詢。條件實(shí)例包含子查詢可以通過 Subqueries或者Property獲得。

  1. DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)  
  2. .setProjection( Property.forName("weight").avg() );  
  3. session.createCriteria(Cat.class)  
  4. .add( Property.forName("weight).gt(avgWeight) )  
  5. .list();  
  6. DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)  
  7. .setProjection( Property.forName("weight") );  
  8. session.createCriteria(Cat.class)  
  9. .add( Subqueries.geAll("weight", weights) )  
  10. .list(); 

相互關(guān)聯(lián)的子查詢也是有可能的:

  1. DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")  
  2. .setProjection( Property.forName("weight").avg() )  
  3. .add( Property.forName("cat2.sex").eqProperty("cat.sex") );  
  4. session.createCriteria(Cat.class, "cat")  
  5. .add( Property.forName("weight).gt(avgWeightForSex) )  
  6. .list(); 

 

責(zé)任編輯:book05 來源: 百度博客
相關(guān)推薦

2009-06-18 10:07:03

CriteriaHibernate

2009-06-17 14:17:40

Criteria條件查Hibernate

2009-09-24 13:03:38

Hibernate C

2009-09-28 12:57:54

Hibernate C

2009-06-30 16:46:45

Criteria進(jìn)階查

2009-06-30 16:44:10

Criteria基本查

2009-06-30 16:55:19

2009-06-18 12:59:39

Criteria Qu深入淺出Hiberna

2009-09-21 17:46:25

Hibernate數(shù)據(jù)

2009-06-17 16:08:58

Hibernate C

2009-09-22 15:26:30

Hibernate多表

2009-06-29 08:59:05

hbm的generat

2009-06-26 10:19:00

Clob字段Hibernate

2009-06-30 16:57:21

Criteria查詢

2009-06-12 14:52:21

cascadeinverseHibernate

2012-05-17 10:16:00

HibernateJavamerge

2009-06-29 18:32:30

Hibernate

2009-06-03 10:20:11

Hibernate事務(wù)管理配置

2009-07-02 09:32:47

generator子元Hibernate

2009-06-24 08:02:15

Hibernateupdate與save
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

九九这里只有精品视频| 欧美激情视频在线观看| av免费在线播放网站| 成人不用播放器| 久久97超碰国产精品超碰| 欧美大片免费观看| 欧洲美一区二区三区亚洲| 国产精品日本一区二区不卡视频| 亚洲妇女屁股眼交7| 日韩在线三区| 蜜臀久久久久久999| 丝袜美腿亚洲色图| 久久久久久亚洲精品| 人人妻人人澡人人爽| 国产色婷婷在线| 久久精品一区四区| 欧美一区第一页| 我要看黄色一级片| 国产99久久久国产精品成人免费 | 岛国精品在线播放| 日韩视频欧美视频| 国产色视频一区二区三区qq号| 国产精品日本一区二区三区在线| 精品久久久久久久久久久久| 好色先生视频污| 国产免费永久在线观看| av网站免费线看精品| 欧美老女人第四色| 日韩写真欧美这视频| 国产日韩三区| 国产美女三级无套内谢| 日韩和欧美一区二区| 久久久久久香蕉网| 黄色一级视频免费观看| 91精品短视频| 欧美精品一卡两卡| 中文字幕国内自拍| 久久野战av| 国产精品天天摸av网| 国产欧美一区二区三区另类精品 | 毛片av中文字幕一区二区| 欧美一区二区.| 久久精品视频9| 午夜国产欧美理论在线播放 | h片在线观看下载| 亚洲美女屁股眼交| 欧洲金发美女大战黑人| www红色一片_亚洲成a人片在线观看_| 国产精品美女久久久久久久久久久 | 自拍偷自拍亚洲精品播放| 亚洲国产一区二区精品视频 | 亚洲欧美在线视频观看| 亚洲自拍的二区三区| 日本中文字幕视频在线| 久久国产精品露脸对白| 国产精品美乳在线观看| 中文在线字幕免费观| 强制捆绑调教一区二区| 国产精品久久久久aaaa九色| 亚洲欧美另类在线视频| 丝袜亚洲另类欧美| 国产精品旅馆在线| 91麻豆国产视频| 国产精品12区| 国产成人鲁鲁免费视频a| 日韩精品国产一区二区| 国产免费成人| 超碰日本道色综合久久综合| 亚洲综合久久av一区二区三区| 欧美电影免费| 免费不卡在线观看av| 欧美精品欧美极品欧美激情| 99久久综合国产精品二区| 欧美一a一片一级一片| 日韩一区二区三区不卡视频| 天堂综合在线播放| 欧美成人女星排名| 国产精品无码在线| 精品理论电影在线| 亚洲成人1234| 国产熟妇搡bbbb搡bbbb| 日韩不卡一区| 欧美精品video| 欧美超碰在线观看| 狠狠色丁香久久婷婷综合丁香| av一区二区三区四区电影| 无码精品一区二区三区在线| 国产乱淫a∨片免费视频| 成人精品三级| 欧美肉大捧一进一出免费视频| 男女羞羞视频在线观看| 午夜国产不卡在线观看视频| 精品久久久久久久久久中文字幕| 可以在线观看的av网站| 欧美国产国产综合| 日韩视频一二三| 性感女国产在线| 欧美日韩高清在线播放| 国产伦精品一区二区三区88av| 综合综合综合综合综合网| 日韩中文字幕亚洲| 日韩成人免费在线视频| 蜜桃传媒麻豆第一区在线观看| 亚洲一区二区日本| 中文字幕欧美色图| 高清国产午夜精品久久久久久| 久久久精品国产一区二区三区| 幼a在线观看| 婷婷国产v国产偷v亚洲高清| 蜜臀一区二区三区精品免费视频| 精品欠久久久中文字幕加勒比| 综合国产在线观看| 日韩毛片无码永久免费看| 亚洲色图插插| 国产97色在线| 欧美视频xxx| 综合电影一区二区三区 | 最新黄网在线观看| 91福利精品视频| 国产精品久久无码| 欧美成人亚洲| 成人国产精品日本在线| 天堂视频中文在线| 亚洲第一主播视频| 人妻精品久久久久中文字幕69| 欧美日韩国产在线观看网站| 午夜精品福利在线观看| 九九热精品免费视频| 日本不卡在线视频| 在线亚洲观看| 欧美高清不卡在线| 国产精品嫩草影院精东| 国产三级久久久| 成人免费观看视频在线观看| 成人h动漫精品一区二区器材| 日韩综合视频在线观看| 91麻豆精品在线| 久久久久久电影| www一区二区www免费| 99ri日韩精品视频| 美女久久久久久久| 97精品久久人人爽人人爽| 国产精品无圣光一区二区| 99蜜桃臀久久久欧美精品网站| 国产精品调教视频| 91精品国产一区| 黄色小视频免费在线观看| 国产91丝袜在线18| 亚洲小视频在线播放| 蝌蚪视频在线播放| 色综合色狠狠综合色| 国产全是老熟女太爽了| 天堂一区二区在线| 视频一区免费观看| 久久久久黄色| 久久精品青青大伊人av| 日本一区二区网站| 成人国产在线观看| 亚洲欧美久久234| gogo亚洲高清大胆美女人体| 亚洲小视频在线观看| 中文字幕免费高清网站| 国内自拍亚洲| www成人在线观看| 男人天堂999| 久久亚洲在线| 99久久免费国| 亚洲精品mv| 中文字幕日韩欧美精品在线观看| 一本色道久久综合亚洲| 最近日韩中文字幕| 国产精品果冻传媒| 美女诱惑一区| 成人性做爰片免费视频| 99re8这里有精品热视频免费 | 久久一区二区三区超碰国产精品| 日韩一区二区电影在线观看| 四虎国产精品成人免费影视| 九九视频直播综合网| 午夜视频福利在线| 欧美色男人天堂| 草视频在线观看| 91亚洲国产成人精品一区二三| 男人天堂999| 亚洲乱码电影| 美女被啪啪一区二区| 欧美成人福利| 亚州欧美日韩中文视频| 国产免费a∨片在线观看不卡| 在线播放国产精品二区一二区四区| 国产亚洲精品久久久久久打不开| 久久久噜噜噜久久人人看| 国产欧美一区二| 夜夜躁狠狠躁日日躁2021日韩| 国产美女精品免费电影| 欧美xxxx做受欧美88bbw| 精品呦交小u女在线| 精品肉丝脚一区二区三区| 99精品一区二区三区| 亚洲国产日韩欧美在线观看| 欧美日韩 国产精品| 精品国产一区二区三区免费| 日韩有码欧美| 热99久久精品| 爱情岛论坛亚洲品质自拍视频网站| 亚洲午夜未满十八勿入免费观看全集| 精品国产九九九| 欧美综合欧美视频| 日本五十熟hd丰满| 综合在线观看色| 欧美图片一区二区| 成人永久免费视频| 亚洲欧美偷拍另类| 水野朝阳av一区二区三区| 国产专区在线视频| 日韩精品一级| 国产精品久久久久久久av电影 | 国产精品成人一区二区三区吃奶| 亚洲第一图区| 久久精品视频在线播放| 国产一级免费在线观看| 色婷婷久久久亚洲一区二区三区| 欧美又粗又大又长| 《视频一区视频二区| 欧美日韩中文字幕视频| 99精品在线免费| 成熟妇人a片免费看网站| 国产九九视频一区二区三区| 亚洲欧美国产日韩综合| 美女日韩在线中文字幕| 女人天堂av手机在线| 亚洲经典在线看| youjizz.com在线观看| 亚洲成人三区| 中文字幕剧情在线观看一区| 成人在线日韩| 国产精品视频久| 免费观看成人性生生活片 | 日日夜夜狠狠操| 懂色av影视一区二区三区| 国产乡下妇女做爰毛片| 亚洲永久免费av| 久久久美女视频| 亚洲自拍偷拍欧美| 久久精品国产亚洲av香蕉| 亚洲一区二区三区在线看| 久久久91视频| 亚洲电影在线免费观看| 亚洲欧美在线观看视频| 午夜精品一区二区三区电影天堂 | 色呦呦一区二区三区| 欧美日韩一级黄色片| 日本久久一区二区三区| 亚洲精品国产无码| 欧美性做爰猛烈叫床潮| 中文字幕资源网| 欧美二区三区91| 成人av无码一区二区三区| 欧美xxxxxxxx| 午夜视频福利在线| 亚洲人免费视频| 黄网站免费在线播放| 欧美日本高清一区| 国产不卡人人| 国产精品 欧美在线| 日本久久二区| 国产精品国产精品国产专区蜜臀ah| 精品福利一区| 日韩精品一线二线三线| 婷婷综合五月| 国产精品污网站| 色婷婷综合网站| 国产乱码精品一区二区三区忘忧草| 韩国av中国字幕| 久久亚洲综合av| 久久久久麻豆v国产| 亚洲一区二区高清| 欧美日韩综合一区二区三区| 欧美视频一区在线| 国产福利免费视频| 亚洲欧美另类人妖| 黄色在线视频网站| 8x海外华人永久免费日韩内陆视频| 成人自拍视频网| 波多野结衣一区二区三区在线观看| 日韩美脚连裤袜丝袜在线| 性高潮久久久久久久久| 国产精品mv在线观看| 青青青国产在线视频| 国产成人精品三级| 天天躁夜夜躁狠狠是什么心态| 亚洲免费观看高清完整| 精品免费囯产一区二区三区 | 精品日本美女福利在线观看| 黄色片在线观看网站| 午夜电影网亚洲视频| 在线视频 91| 精品国产凹凸成av人导航| 日本1级在线| 九九热精品视频国产| 黑人巨大亚洲一区二区久| 92福利视频午夜1000合集在线观看| 久久综合另类图片小说| 亚洲成人18| 国产一区91| 又黄又爽又色的视频| 国产欧美日韩精品一区| 亚洲一区二区三区四区av| 国产午夜精品理论片a级大结局| 丁香花五月激情| 欧美系列日韩一区| 天天操天天干天天干| 超碰97人人做人人爱少妇| 免费观看成人性生生活片| 国内成+人亚洲| 中文无码久久精品| 五月婷婷六月丁香激情| 91日韩一区二区三区| 免费无遮挡无码永久在线观看视频| 欧美午夜精品久久久久久孕妇| 天天摸夜夜添狠狠添婷婷| 精品视频9999| 91成人小视频| 亚洲一区3d动漫同人无遮挡| 媚黑女一区二区| 国产ts丝袜人妖系列视频| 亚洲一级在线观看| 99久久精品日本一区二区免费| 在线视频亚洲欧美| 日韩欧美一区二区三区免费观看| 韩国成人动漫在线观看| 亚洲无吗在线| 精品人妻一区二区免费| 亚洲激情第一区| www男人的天堂| 美日韩精品免费观看视频| 亚洲男女网站| 中文字幕人成一区| 久久国产精品72免费观看| 91视频免费看片| 夜夜精品视频一区二区 | 热久久一区二区| 91成人破解版| 在线观看日产精品| 国产精品视频二区三区| 国产精品wwwwww| 欧美系列电影免费观看| 欧美 国产 精品| 精品亚洲免费视频| 久艹在线观看视频| 91精品福利在线一区二区三区| 韩国av免费在线观看| 欧美老女人性视频| 视频在线观看免费影院欧美meiju| 欧美xxxx吸乳| 粉嫩久久99精品久久久久久夜| 国产一级在线视频| 日韩精品极品在线观看| 免费观看一级欧美片| 欧美日韩中文国产一区发布| 天堂资源在线中文精品| 日本在线观看网址| 日韩欧美一区二区久久婷婷| 成人影音在线| 美女黄毛**国产精品啪啪| 青青草国产成人av片免费| 国内毛片毛片毛片毛片毛片| 7777精品伊人久久久大香线蕉完整版| 黄色av网站在线播放| 成人av免费看| 午夜一级久久| 在线免费看av网站| 欧美v亚洲v综合ⅴ国产v| 日本三级一区| 亚洲sss综合天堂久久| 好看不卡的中文字幕| 三级黄色片网站| 欧美日韩三级一区| 青春草视频在线| 欧美综合77777色婷婷| 精品一区二区国语对白| 欧美成人黄色网| 亚洲欧洲av一区二区| 久久三级毛片| 成人午夜精品久久久久久久蜜臀| 国产网站一区二区| 国产不卡精品视频| 欧美专区中文字幕| 国产精品久久久久久久久久10秀| 免费看黄色片的网站| 欧美亚洲丝袜传媒另类| 色婷婷av在线| 日韩.欧美.亚洲| 国产91富婆露脸刺激对白| 波多野结衣爱爱| 欧美极品美女视频网站在线观看免费| 国产精品最新| 欧美极品jizzhd欧美仙踪林| 欧美视频中文字幕| 成人免费网站观看|