亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

hibernate 命名查詢如何實現

2019-11-26 16:17:26
字體:
來源:轉載
供稿:網友
什么是命名查詢?
Hibernate允許在映射文件中定義字符串形式的查詢語句,這種查詢方式成為命名查詢
使用命名查詢有什么好處?
由于使用Hibernate的HQL常常需要在Java代碼中寫字符串查詢語句,HQL混雜在代碼之間,破壞代碼可讀性,通過使用命名查詢,可以使業務邏輯和查詢語句分離,使您專注于查詢,而避免了 SQL 或者 HQL 代碼分散于整個應用程序中的情況。
可以應用命名查詢做復雜查詢的處理
命名查詢如何實現?
介紹下面幾種方式:
方法一:在配置文件中<class/>標記的下面,聲明查詢語句
復制代碼 代碼如下:

<hibernate-mapping>
<class name="com.test.bean.Student" table="student" catalog="users">
<id name="id" type="integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="11" />
</property>
<property name="age" type="integer">
<column name="age" />
</property>
<property name="sex" type="string">
<column name="sex" length="2" />
</property>
</class>
<!-- 定義查詢語句 -->
<query name="findStudentByName">
<![CDATA[from Student where name = :name]]>
</query>
</hibernate-mapping>

備注:<![CDATA[ ]]>是什么意思?
標明是純文本的,沒有這個的話 < > & 字符是不能直接存入XML的,需要轉義,而用這個標記則不需要轉義而將這些符號存入XML文檔??梢员苊馕搭A料的特殊符號導致XML解析出錯。
復制代碼 代碼如下:

public List<Student> query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName");
q.setString("name", "zhangsan");
List<Student> list = q.list();
return list;
}

方法二:也可以在配置文件中<class/>標記的里面,聲明查詢語句, 但是java代碼調用時需要指定(包+類+配置名)
復制代碼 代碼如下:

<hibernate-mapping>
<class name="com.test.bean.Student" table="student" catalog="users">
<id name="id" type="integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="11" />
</property>
<property name="age" type="integer">
<column name="age" />
</property>
<property name="sex" type="string">
<column name="sex" length="2" />
</property>
<!-- 定義查詢語句 -->
<query name="findStudentByName">
<![CDATA[from Student where name = :name]]>
</query>
</class>
</hibernate-mapping>
public List<Student> query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("com.test.bean.Student.findStudentByName");
q.setString("name", "zhangsan");
List<Student> list = q.list();
return list;
}

方法三:使用原生sql查詢<sql-query>,使用此種方式必須把表所有的列寫全才可以,否則會出現‘列名無效'的錯誤 ,除非你使用return-scalar來設置字段類型。
復制代碼 代碼如下:

<hibernate-mapping>
<class name="com.test.bean.Student" table="student" catalog="users">
<id name="id" type="integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="11" />
</property>
<property name="age" type="integer">
<column name="age" />
</property>
<property name="sex" type="string">
<column name="sex" length="2" />
</property>
</class>
<!-- 定義查詢語句 -->
<sql-query name="findStudentByName">
<return alias="s" class="com.test.bean.Student">
</return>
<![CDATA[select {s.*} from student s where s.name = :name]]>
</sql-query>
</hibernate-mapping>

備注:也可以在<return/>標記里面應用<return-property/>標記將表的所有字段列出來,與上面描述的方法一樣,都是查詢出來所有列。
復制代碼 代碼如下:

public List<Student> query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName");
q.setString("name", "zhangsan");
List<Student> list = q.list();
return list;
}

方法四:使用原生sql查詢<sql-query>, 如果應用return-scalar來設置字段類型, 就可以實現查詢部分字段。
復制代碼 代碼如下:

<hibernate-mapping>
<class name="com.test.bean.Student" table="student" catalog="users">
<id name="id" type="integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name" length="11" />
</property>
<property name="age" type="integer">
<column name="age" />
</property>
<property name="sex" type="string">
<column name="sex" length="2" />
</property>
</class>
<!-- 定義查詢語句 -->
<sql-query name="findStudentByName">
<return-scalar column="name" type="string"/>
<return-scalar column="age" type="integer"/>
<![CDATA[select s.name , s.age from student s where s.name = :name]]>
</sql-query>
</hibernate-mapping>
public List<Object[]> query(){
Session session = HibernateSessionFactory.getSession();
Query query = session.getNamedQuery("findStudentByName");
query.setString("name", "zhangsan");
List<Object[]> list = query.list();
return list;
}

或者
復制代碼 代碼如下:

public List<Student> query(){
Session session = HibernateSessionFactory.getSession();
Query q = session.getNamedQuery("findStudentByName").
setResultTransformer(Transformers.aliasToBean(Student.class));
q.setString("name", "zhangsan");
List<Student> list = q.list();
return list;
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品第一页| 久久成人精品视频| 精品一区二区电影| 色先锋资源久久综合5566| 亚洲欧美激情精品一区二区| 狠狠色香婷婷久久亚洲精品| 国产精品爽黄69天堂a| 国产精品久久久久av| 精品久久久久久久久久久久久久| 久久久久久91香蕉国产| 色婷婷亚洲mv天堂mv在影片| 懂色av中文一区二区三区天美| 日韩av网站大全| 日韩av在线影视| 高清欧美性猛交xxxx| 欧美多人乱p欧美4p久久| 伊人精品在线观看| 日韩欧美在线免费观看| 亚洲xxxx3d| 日韩激情第一页| 伊人激情综合网| 97在线观看视频国产| 久久久久一本一区二区青青蜜月| 亚洲人成伊人成综合网久久久| www.日韩免费| 美女福利精品视频| 欧美成aaa人片免费看| 亚洲一区二区精品| 国产成人综合亚洲| 中文字幕亚洲国产| 欧美视频在线免费| 91影院在线免费观看视频| 日韩精品中文字幕久久臀| 欧美裸体xxxx极品少妇| 欧美大片第1页| 久久免费福利视频| 欧美亚洲成人精品| 欧洲亚洲妇女av| 欧美精品成人91久久久久久久| 欧美成人在线影院| 国产精品羞羞答答| 亚洲一区二区三区xxx视频| 成人午夜两性视频| 国产美女精彩久久| 日韩精品久久久久久久玫瑰园| 欧美日韩在线视频一区二区| 欧美成人剧情片在线观看| 亚洲图片制服诱惑| 两个人的视频www国产精品| 亚洲综合日韩中文字幕v在线| 日韩人在线观看| 久久久欧美一区二区| 久久久999精品视频| 91精品国产高清久久久久久久久| 欧美激情视频播放| 日韩av手机在线| 亚洲欧美一区二区三区情侣bbw| 亚洲а∨天堂久久精品喷水| 国产精品av电影| 亚洲国产精品99久久| 国产精品久久一区主播| 日韩专区中文字幕| 久久99国产精品自在自在app| 国产午夜精品久久久| 欧美性受xxxx黑人猛交| 久久九九国产精品怡红院| 国产精品扒开腿做爽爽爽的视频| 国产日产久久高清欧美一区| 亚洲国产日韩欧美在线99| 国产精品十八以下禁看| 国产精品日韩在线观看| 亚洲欧美日韩一区二区三区在线| 欧美日韩在线第一页| 91久久精品美女高潮| 国产91色在线免费| 国产成人精品优优av| 亚洲 日韩 国产第一| 中文字幕日韩高清| 国产精品旅馆在线| 2018中文字幕一区二区三区| xvideos成人免费中文版| 日韩精品免费在线视频| 26uuu亚洲国产精品| 1769国内精品视频在线播放| 成人国产精品av| 正在播放亚洲1区| 高清日韩电视剧大全免费播放在线观看| 国产精品亚洲第一区| 国产精品成人一区二区三区吃奶| 日韩国产激情在线| 日韩在线免费观看视频| 欧美日韩亚洲精品一区二区三区| 色综合亚洲精品激情狠狠| 欧美美女操人视频| 亚洲综合一区二区不卡| 欧美性xxxx极品hd欧美风情| 久久免费少妇高潮久久精品99| 欧美性20hd另类| 黄色91在线观看| 日韩视频在线免费观看| 亚州欧美日韩中文视频| 精品久久久久久久久久国产| 北条麻妃99精品青青久久| 91亚洲国产成人精品性色| 日韩在线视频中文字幕| 欧美一区二区大胆人体摄影专业网站| 国产精品青青在线观看爽香蕉| 日韩欧亚中文在线| 国产精品视频不卡| 九九热r在线视频精品| 欧美激情亚洲综合一区| 精品亚洲一区二区三区在线观看| 久久成人国产精品| 国产精品69精品一区二区三区| 国产精品爽爽爽| 亚洲日本欧美日韩高观看| 精品亚洲男同gayvideo网站| 亚洲精品av在线播放| 日本久久久久久久久久久| 亚洲在线免费看| 在线观看日韩专区| 国产剧情日韩欧美| 日韩欧美在线看| 欧美又大粗又爽又黄大片视频| 清纯唯美亚洲综合| 国产日产欧美a一级在线| 国产亚洲视频在线| 欧美激情videos| 亚洲视频精品在线| 亚洲综合色av| 26uuu日韩精品一区二区| 亚洲精品在线视频| 97成人精品视频在线观看| 亚洲男人天堂久| 一本大道香蕉久在线播放29| 亚洲国产精品久久| 国产成人精品久久二区二区| 亚洲成人av在线| 川上优av一区二区线观看| 国产亚洲视频中文字幕视频| 亚洲国产成人精品电影| 成人福利网站在线观看11| 中文字幕日韩欧美在线视频| 欧美日韩在线观看视频| 国产成人自拍视频在线观看| 在线观看精品自拍私拍| 高跟丝袜欧美一区| 欧美精品第一页在线播放| 亚洲少妇中文在线| 成人精品一区二区三区| 青青草原成人在线视频| 亚洲久久久久久久久久久| 日韩免费av片在线观看| 亚洲自拍中文字幕| 欧美激情久久久久久| 午夜精品一区二区三区在线播放| 欧美日韩国产黄| 国产美女久久精品香蕉69| 亚洲精品网站在线播放gif| 成人有码在线播放| 亚洲v日韩v综合v精品v| 久久久久久久91| 国产精品观看在线亚洲人成网| 国产suv精品一区二区|