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

簡述Hibernate的復合查詢

開發 后端
Hibernate復合查詢主要是處理,具有關聯關系的兩個實體怎樣進行關聯查詢,比如User實體對象與Addres實體對象具有一對多的關聯關系。

Hibernate復合查詢主要是處理,具有關聯關系的兩個實體怎樣進行關聯查詢,比如User實體對象與Addres實體對象具有一對多的關聯關系。
 
Hibernate復合查詢相關:
1. Hibernate
2.Hibernate QBC查詢
QBC查詢:
QBC查詢就是通過使用Hibernate提供的Query By Criteria API來查詢對象,這種API封裝了SQL語句的動態拼裝,對查詢提供了更加面向對象的功能接口。我們看下面的示例程序:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. criteria.add(Expression.eq(“name”,”zx”));  
  3. criteria.add(Expression.eq(“age”,new Integer(27));  
  4. List list=criteria.list(); 

當執行criteria.list()時會生成類似這樣的SQL語句:Select * from user where name=’zx’ and age=27;所以在這里我們可以看出,Criteria實際上是一個查詢容器,它對查詢條件表達式的添加進行了封裝,具體的查詢條件是通過add()方法添加的,而且具體的查詢條件的表達式運算是通過Expression指定的。Hibernate在運行期會根據Criteria指定的表達式條件來添加查詢條件,并且生成查詢語句。這種方式非常符合Java以及所有面向對象編程語言的編程方式,所以大多數的持久層框架都提供了對這種方式查詢的支持。下面我們講解這種查詢方式的各個技術細節。

1、Criteria查詢表達式:

正如我們所見,Expression對查詢語句的表達式進行了封裝和限制,下表列出了Expression所有的方法,以及每個方法所對應的查詢表達式及其限制。

方法

描述

Expression.eq

對應SQL“field=value”表達式

如:Expression.eq(“name”,”zx”);

Expression.allEq

方法的參數為一個Map類型對象,包含多個名/值對對應關系,相當于多個Expression.eq的疊加

Expression.gt

對應SQL“field>value”表達式

Expression.ge

對應SQL“field>=value”表達式

Expression.lt

對應SQL“field”表達式

Expression.le

對應SQL“field<=value”表達式

Expression.between

對應SQL語句的between表達式,如:查詢年齡在2127歲之間的用戶,可以寫成Expression.between(“age”,new Integer(21),new Integer(27));

Expression.like

對應SQL語句的”field like value”表達式

Expression.in

對應SQL語句的“field in(……)”表達式

Expression.eqProperty

用于比較兩個屬性值,對應”field=field”SQL表達式

Expression.gtProperty

用于比較兩個屬性值,對應”field>field”SQL表達式

Expression.geProperty

用于比較兩個屬性值,對應”field>=field”SQL表達式

Expression.ltProperty

用于比較兩個屬性值,對應”field表達式

Expression.leProperty

用于比較兩個屬性值,對應”field<=field”SQL表達式

Expression.and

對應SQL語句的And關系組合,如:Expression.and(Expression.eq(“name”,”zx”),Expression.eq(“sex”,”1”));

Expression.or

對應SQL語句的Or關系組合,如:Expression.or(Expression.eq(“name”,”zx”),Expression.eq(“name”,”zhaoxin”));

Expression.sql

作為補充這個方法提供了原生SQL語句查詢的支持,在執行時直接通過原生SQL語句進行限定,如:Expression.sql(“lower({alias}.name) like (?)”,“zhao%”,Hibernate.STRING) ;在運行時{ alias }將會由當前查詢所關聯的實體類名替換,()中的?將會由”zhao%”替換,并且類型由Hibernate.STRING指定。

注意:Expression各方法中的屬性參數(各方法中的***個參數)所指定的屬性名稱(如:name,sex),并不是數據庫表中的實際字段名稱,而是實體對象中映射實際數據表字段的類屬性名稱。
 
2、示例查詢:
示例查詢是通過Example類來完成的,Example類實現了Criterion接口,可以用作Criteria查詢條件,Example類的作用是:根據已有對象,查詢屬性值與之相同的其他對象。如下代碼所示:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. User exampleuser=new User(“zx”);  
  3. criteria.add(Example.create(exampleuser));  
  4. List list=criteria.list();  
  5. for(int i=0;i   
  6.    User user=(User)list.get(i);  
  7.    System.out.println(user.getName()+”\n”);  
  8. }  

在Hibernate中隊示例查詢,默認情況下會排除掉示例對象中屬性值為空的屬性,還可以調用Example.excludeNone(排除空串值)/excludeZeros(排除零值),或者調用Example.excludeProperty方法來指定排除特定屬性。示例查詢主要應用于組合查詢中,比如根據用戶輸入的查詢條件動態生成最終的查詢語句,通過使用示例查詢,可以避免由于查詢條件過多而寫的大量if判斷語句。

3、復合查詢:
復合查詢主要是處理,具有關聯關系的兩個實體怎樣進行關聯查詢,比如User實體對象與Addres實體對象具有一對多的關聯關系,我們可以如下構造符合查詢:

  1. Criteria criteria=session.createCriteria(User.class);  
  2.    Criteria addcriteria=criteria.createCriteria(“addresses”);(1)  
  3.    addcriteria.add(Express.like(“address”,”%tianjin%”));  
  4.   List list=criteria.list();  
  5.    for(int i=0;i   
  6.      User user=(User)list.get(i);  
  7.      System.out.println(user.getName()+”\n”);  
  8.      Set addresses=user.getAddresses();  
  9.      Iterator it=addresses.iterator();  
  10.      while(it.hasNext(){  
  11.       Address address=(Address)it.next();  
  12.       System.out.println(address.getAddress()+”\n”);  
  13.      }  
  14.    }  

當執行到了(1)處時,表明要針對User對象的addresses屬性添加新的查詢條件,因此當執行criteria.list()時,Hibernate會生成類似如下的SQL語句:
Select * from user inner join address on user.id=address.id where address.address like ‘%shanghai%’;
正如我們所見,我們可以通過向Criteria中添加保存關聯對象的集合屬性(addresses屬性保存與User對象相關聯的Address對象),來構造復合查詢,在數據庫一端是通過內連接查詢來實現。
 
4、Criteria的高級特性:
A、限定返回記錄條數:
 我們可以通過利用Criteria.setFirstResult/setMaxResult方法來限定返回某一次查詢的記錄數,如下代碼:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. criteria.setFirstResult(100);  
  3. criteria.setMaxResult(200);  

通過以上代碼可以設定該次查詢返回user表中的從第100條記錄開始直到第200條記錄結束的100條記錄。
B、對查詢結果進行排序:
可通過使用net.sf.hibernate.expression.Order類可以對查詢結果集進行排序,如下面代碼:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. criteria.add(Expression.eq(“groupid”,”2”);  
  3. criteria.addOrder(Order.asc(“name”));  
  4. criteria.addOrder(Order.desc(“groupid”));  
  5. List list=criteria.list();  

通過使用Order類的asc()/desc()方法,可以指定針對某個字段的排序邏輯,如果執行上述代碼,會生成類似如下的SQL語句:

  1. Select * from user where groupid=’2’ order by name asc,groupid desc 

C、分組與統計:
在Hibernate3中,對Criteria又增添了新功能,可以支持分組與統計功能,在Hibernate3中增加了Projections以及ProjectionList類,這兩個類對分組與統計功能進行了封裝,如下代碼:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. criteria.setProjection(Projections.groupProperty(“age”));(1)  
  3. List list=criteria.list();  
  4. Iterator it=list.iterator();  
  5. while(it.hasNext()){  
  6.  System.out.println(it.next());  
  7. }  

通過(1)處的代碼,我們通過Projections類指定了用于分組的目標屬性,當進行檢索時Hibernate會生成類似如下的SQL語句:

  1. Select age from user group by age;  

還可以通過使用Projections的avg()/rowCount()/count()/max()/min()/countDistinct()等方法來實現統計功能,如下面的代碼示例:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. criteria.setProjection(Projections.avg(“age”));(1)  
  3. List list=criteria.list();  
  4. Iterator it=list.iterator();  
  5. while(it.hasNext()){  
  6.  System.out.println(it.next());  
  7. }  

通過(1)處的代碼,我們實現了對用戶平均年齡的統計,當進行檢索時,Hibernate會生成類似如下的SQL語句:

  1. Select avg(age) from user; 

另外,在SQL語句中的多條件分組與統計功能,可以利用ProjectionList類來實現,如下面代碼所示:

  1. Criteria criteria=session.createCriteria(User.class);  
  2. ProjectionList prolist=Projections.projectionList();  
  3. prolist.add(Projections.groupProperty(“age”));  
  4. prolist.add(Projections.rowCount());  
  5. criteria.setProjection(prolist);  
  6. List list=criteria.list();  

通過以上代碼,實現了對不同年齡人員數量的分組統計,當進行檢索時,Hibernate會生成類似如下的SQL語句:

  1. Select age,count(*) from user group by age;  

5、DetachedCriteria:
在Hibernate2中,Criteria實例是與創建它的Session實例具有相同的生命周期的,也就是說,Session實例是它所創建的Criteria實例的宿主,當Session關閉時,寄生于Session實例的Criteria都將失效。這就對Criteria的重用造成了困難,為了實現Criteria實例的重用,在Hibernate3中提供了一個DetachedCriteria類,DetachedCriteria實例的生命周期與Session實例的生命周期無關,我們可以利用DetachedCriteria對一些常用的Criteria查詢條件進行抽離,當需要進行檢索時再與Session實例關聯,從而獲得運行期的Criteria實例。如下面的代碼所示:

  1. DetachedCriteria dcDetachedCriteria.forClass(User.class);  
  2.    dc.add(Expression.eq(“name”,”zhaoxin”));  
  3.    dc.add(Expression.eq(“sex”,”1”));  
  4.    Criteria criteria=dc.getExecutableCriteria(session);  
  5.    Iterator it=criteria.list().iterator();  
  6.    while(it.hasNext()){  
  7.      User user=(User)it.next();  
  8.      System.out.println(user.getName());  
  9.    }  

正如我們所見,DetachedCriteria的生存周期與session實例無關,當需要進行檢索時,通過getExecutableCriteria(session)方法,與當前的Session實例關聯并獲得運行期的Criteria實例,完成檢索。
DetachedCriteria也可以用于完成子查詢功能,如下代碼所示:

  1. DetachedCriteria dcDetachedCriteria.forClass(User.class);  
  2. dc.setProjection(Projections.avg(“age”));  
  3. Criteria criteria=session.createCriteria(User.class);  
  4. criteria.add(Subqueries.propertyGt(“age”,dc));  
  5. List list=criteria.list();  

通過Subqueries類,實現了添加子查詢的功能,我們將DetachedCriteria所設定的查詢條件,當作子查詢添加到了運行時Criteria實例的查詢條件中,當執行檢索時Hibernate會生成類似如下的SQL語句:

【編輯推薦】

  1. 生成Hibernate Mapping文件的分析
  2. 對Hibernate中get()與load()不同點分析
  3. Struts-Spring-Hibernate案例
  4. 簡述Hibernate配置連接池
  5. 對Hibernate中get()與load()不同點分析
責任編輯:仲衡 來源: blogjava
相關推薦

2009-09-24 10:35:10

Hibernate查詢

2009-09-24 10:15:37

Hibernate查詢

2009-09-24 11:17:32

Hibernate查詢

2009-09-25 16:57:49

Hibernate查詢

2009-09-29 16:41:58

Hibernate S

2012-02-03 10:07:04

HibernateJava

2009-09-29 17:22:30

Hibernate S

2009-09-25 12:31:13

Hibernate映射

2009-09-28 13:45:59

Hibernate歷史

2009-09-29 15:58:22

Hibernate映射

2009-09-28 11:12:52

Hibernate O

2009-09-29 10:37:29

Hibernate持久

2011-03-24 11:37:41

Hibernate

2009-09-25 14:04:09

Hibernate eHibernate h

2009-09-22 16:04:50

Hibernate連接

2009-06-01 12:11:31

hibernatejpa復合主鍵

2009-06-26 10:01:00

Hibernate的查

2009-09-23 15:25:08

Hibernate 3

2009-09-24 17:28:29

Hibernate S

2009-09-29 09:44:52

Hibernate事務
點贊
收藏

51CTO技術棧公眾號

日本新janpanese乱熟| 国产精品一区二区免费看| 国产亚洲精品久久久久久豆腐| 久久免费资源| 亚洲午夜免费视频| 四虎影院一区二区三区| 草草视频在线播放| 日韩福利视频网| 欧美日韩成人网| 人妻少妇无码精品视频区| 日韩成人视屏| 欧美影院一区二区| 青草视频在线观看视频| av色图一区| 99久久婷婷国产综合精品| 国产精品天天狠天天看 | 中文字幕欧美日本乱码一线二线| 91最新在线免费观看| 欧美亚洲精品天堂| 欧美国产三级| 自拍偷拍亚洲区| 亚洲狠狠婷婷综合久久久久图片| 视频二区欧美| 欧美精品乱码久久久久久按摩 | 日本一区视频在线观看免费| www.热久久| 老司机免费视频一区二区| 91国在线精品国内播放| 国产va在线播放| 欧美亚洲国产激情| 日韩精品视频在线观看网址| 日本高清免费观看| 久久麻豆视频| 欧美视频自拍偷拍| 91n.com在线观看| 在线精品亚洲欧美日韩国产| 亚洲成人午夜电影| 免费cad大片在线观看| 麻豆网站在线观看| 国产精品视频九色porn| 欧美在线激情| 欧美在线观看在线观看| 99精品国产99久久久久久白柏| 99精品国产一区二区| 国产三级伦理片| 久久99精品国产.久久久久久| 国产精品久久精品| 国产真人无遮挡作爱免费视频| 亚洲免费网站| 情事1991在线| 日本中文字幕第一页| 亚洲欧美久久久| 91精品成人久久| 日本一二三区视频| av成人毛片| 2019中文字幕全在线观看| 国产系列精品av| 夜夜嗨一区二区| 97国产精品免费视频| 韩国av免费观看| 香蕉久久a毛片| 国产成人欧美在线观看| 波多野结衣一区二区三区在线| 久久亚洲图片| 国产精品一二三在线| 国产精品一区二区人人爽| 精东粉嫩av免费一区二区三区| 成人网在线免费看| 亚洲精品911| 99久久综合精品| 青青草久久网络| 91精彩视频在线观看| 亚洲欧美日韩综合aⅴ视频| 8x8ⅹ国产精品一区二区二区| 青青草原av在线| 视频在线这里都是精品| 欧美在线综合| 国产精品99久久99久久久二8| 91丨九色丨海角社区| 久久国内精品视频| 51午夜精品| 天天综合网在线| 国产日韩欧美亚洲| 国产女人18毛片| 国产一二三在线| 欧美日韩一区三区四区| 三上悠亚 电影| 任你躁在线精品免费| 中文日韩在线视频| 久久久精品人妻一区二区三区四 | 国产精品网站免费| 电影在线观看一区二区| 日韩一区二区三区在线| 韩国黄色一级片| 欧美日中文字幕| 久久久久久久国产| 羞羞色院91蜜桃| 高清视频一区二区| 欧洲精品国产| 四虎影院观看视频在线观看| 色偷偷久久一区二区三区| 亚洲高清av一区二区三区| 男男gay无套免费视频欧美| 久久午夜a级毛片| 国产精品100| 国产福利不卡视频| 偷拍视频一区二区| 爱啪视频在线观看视频免费| 欧美日韩不卡在线| 成人免费av片| 亚洲欧美伊人| 国产免费一区二区三区在线观看| 日韩一卡二卡在线| 亚洲欧洲另类国产综合| 国产精品动漫网站| 88久久精品| 久久在线视频在线| 懂色av蜜臀av粉嫩av喷吹| av在线不卡免费看| 亚洲国产精品影视| 亚洲成人av观看| 亚洲国产日韩欧美在线图片| 波多野结衣爱爱视频| 免费不卡在线视频| 日本黄网免费一区二区精品| 91资源在线观看| 欧美一区二区免费视频| 黄色av片三级三级三级免费看| 午夜宅男久久久| 国产亚洲一区二区三区在线播放| 成人三级网址| 5月丁香婷婷综合| 网站永久看片免费| 日韩av中文在线观看| 欧美日韩在线不卡一区| 在线天堂资源| 日韩国产精品视频| 尤物视频在线观看国产| 白白色亚洲国产精品| 日韩激情视频一区二区| 深夜福利一区二区三区| 久久777国产线看观看精品| 99国产精品欲| 亚洲精品国久久99热| www.日本久久| 久久精品免费一区二区三区| 91精品在线观| 成人免费网址| 日韩一区二区三区四区| 久操视频免费在线观看| 风间由美性色一区二区三区| 欧美狂野激情性xxxx在线观| 国产欧美一区二区三区米奇| 久久免费成人精品视频| 欧洲av在线播放| 精品久久久国产| 亚洲精品午夜视频| 免费精品视频在线| 中文字幕久久综合| 欧美三级一区| 久久久久久久久亚洲| 人妻与黑人一区二区三区| 五月婷婷久久丁香| 国产亚洲无码精品| 日本不卡在线视频| 中文字幕中文字幕99| 欧美影院在线| 午夜精品美女自拍福到在线| 头脑特工队2在线播放| 色激情天天射综合网| 久久久免费看片| 国产在线麻豆精品观看| 国产手机免费视频| 免费精品国产| 国产日韩欧美日韩大片| 欧美日韩在线视频免费观看| 精品粉嫩超白一线天av| 久久久久在线视频| 综合中文字幕亚洲| 午夜男人的天堂| 日欧美一区二区| 黄色a级在线观看| 国产乱论精品| 国产精品色悠悠| 色av手机在线| 国产亚洲精品久久久久久| 国产精品久久777777换脸| 亚洲一区二区视频在线| 毛片网站免费观看| 国产一区二区三区四| 欧美日本视频在线观看| 色综合久久网| 精品蜜桃传媒| 未满十八勿进黄网站一区不卡| 国模视频一区二区| 午夜激情视频在线| 日韩www在线| 精品人妻一区二区三区换脸明星| 欧美日韩一区二区三区在线免费观看| 国产精品视频看看| 26uuu亚洲综合色| 91 视频免费观看| 亚洲欧美视频| 欧美日韩激情四射| 第九色区aⅴ天堂久久香| 国产一区免费观看| 成人自拍视频| 国产精品久久久久久久久久99| 美足av综合网| 久久久av电影| 91网页在线观看| 日韩精品视频免费专区在线播放 | 在线视频精品一| 黄色av中文字幕| 欧美一区二区视频在线观看| 欧美成人精品网站| 欧美日韩中文在线| 精品无码一区二区三区电影桃花| 国产精品毛片a∨一区二区三区| 午夜一区二区三区免费| 成人美女视频在线看| 伊人五月天婷婷| 中文字幕在线欧美| 国产一区二区导航在线播放| 日韩一级片播放| 久久国产精品久久w女人spa| 夜夜添无码一区二区三区| 亚洲自拍偷拍网| 亚洲日本精品| 久久人人99| 午夜视频久久久| 欧美亚洲在线日韩| 日韩视频专区| 欧美限制电影| 色一情一区二区三区四区 | 亚洲精品日韩精品| 国产精品嫩草影院在线看| 久久久久久国产精品一区| 国产精品15p| 国产在线欧美日韩| 国内毛片久久| 精品国产乱码久久久久久蜜柚| 成人三级av在线| 国产综合色一区二区三区| 亚洲日本va中文字幕| 91久色国产| 91亚洲无吗| 国产精品久久久久久久久婷婷 | 1级黄色大片儿| 亚洲电影一级黄| 国产成人一区二区三区影院在线| 精品久久久久久中文字幕一区奶水| 日韩欧美一区二区一幕| 亚洲v精品v日韩v欧美v专区| 久久夜色精品亚洲| 色天使久久综合网天天| 丰满人妻一区二区三区四区| 欧美日韩高清一区二区三区| 国产绿帽一区二区三区| 日韩精品专区在线| 午夜视频免费在线| 亚洲人成在线观看网站高清| 福利片在线观看| www.日韩.com| 日韩精品卡一| 91sa在线看| 国产成人77亚洲精品www| 91欧美激情另类亚洲| 澳门成人av| 欧美久久在线| 天天av综合| 免费看欧美一级片| 日韩精品乱码av一区二区| 日本77777| 99riav一区二区三区| 国产91丝袜美女在线播放| 国产精品成人网| 精品久久免费视频| 欧美在线免费观看亚洲| 精品人妻aV中文字幕乱码色欲| 亚洲第一国产精品| 成人18在线| 色综合色综合网色综合| 激情都市亚洲| 51精品国产人成在线观看| 美女少妇全过程你懂的久久| 国产成人三级视频| 欧美亚洲网站| 日本少妇一区二区三区| 久久久精品天堂| 国产av无码专区亚洲av毛网站| 色综合久久久久久久| 99精品国产99久久久久久97| 亚洲欧美日韩成人| 中文av资源在线| 青草青草久热精品视频在线网站| 欧美成人高清视频在线观看| 国内精品一区二区| 91精品福利| 国产一级片黄色| 快she精品国产999| 人妻互换一二三区激情视频| 中文一区二区完整视频在线观看| 九热这里只有精品| 欧美乱妇20p| 黄色小视频在线观看| 欧美激情精品在线| 欧美午夜三级| 欧美一区二区三区四区在线观看地址| 欧美a级在线| 在线观看免费视频高清游戏推荐| 91蜜桃传媒精品久久久一区二区| 国产大片免费看| 欧美探花视频资源| 你懂的在线观看视频网站| 久久久噜噜噜久久中文字免| 亚洲青青一区| 亚洲激情一区二区三区| 久久福利影视| 可以直接看的无码av| 亚洲图片欧美一区| 国产成人精品a视频| 最近2019中文免费高清视频观看www99| 僵尸再翻生在线观看免费国语| 91视频网页| 欧美一区高清| 三级黄色片免费看| 成人欧美一区二区三区白人| 中文字幕日本人妻久久久免费| 亚洲人高潮女人毛茸茸| 久久毛片亚洲| 免费在线观看一区二区| 国产欧美激情| 国产毛片毛片毛片毛片毛片毛片| 亚洲午夜av在线| 亚洲成人中文字幕在线| 欧美区二区三区| 麻豆国产一区| 国产又粗又猛又爽又黄的网站 | 91亚色免费| 91精品国产91久久综合| 伊人精品视频在线观看| 亚洲欧美另类久久久精品| 国产一区二区小视频| 俺去啦;欧美日韩| 亚洲精品三区| 美女黄色片网站| 国产精品自在在线| 久操免费在线视频| 亚洲精品国产综合区久久久久久久 | 中国丰满人妻videoshd | 日本不卡一二区| 欧美精品18+| 色婷婷在线播放| 极品校花啪啪激情久久| 性一交一乱一区二区洋洋av| 国产美女永久免费无遮挡| 欧美午夜一区二区三区免费大片| 91精彩视频在线观看| 亚洲最大福利网站| 99热免费精品| 无码人妻精品一区二区中文| 欧美日韩日本视频| 成人福利片网站| 国产一区免费| 免费成人在线影院| 毛片aaaaa| 精品亚洲aⅴ在线观看| 日韩成人av电影| 在线日韩av永久免费观看| 国产成人午夜视频| 亚洲 欧美 视频| 日韩中文字幕不卡视频| 欧美三级一区| wwwxxx黄色片| 亚洲欧洲精品成人久久奇米网| 亚洲成人av综合| 国产精品久久久久久久av电影| 在线成人直播| 久久精品国产亚洲av久| 在线综合亚洲欧美在线视频| 国产三线在线| 五月天久久综合网| 国产成人无遮挡在线视频| 国产污视频网站| 欧美老少配视频| 国产一区二区三区电影在线观看 | 日本美女高潮视频| 亚洲精品久久嫩草网站秘色| 日本一卡二卡四卡精品| 91久久久在线| 鲁大师成人一区二区三区| 九九这里只有精品视频| 日韩电影第一页| 2019中文亚洲字幕| 男人天堂网视频| 亚洲五月六月丁香激情| 天天综合视频在线观看| 久久这里精品国产99丫e6| 国产一区二区按摩在线观看|