Hibernate屬性查詢(xún)簡(jiǎn)單講述
本文向大家介紹Hibernate屬性查詢(xún),可能好多人還不了解Hibernate屬性查詢(xún),沒(méi)有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。
今天說(shuō)一下Hibernate屬性查詢(xún):使用HQL的時(shí)候并不是把 hbm.xml 里面的所有屬性取出來(lái),只取出有用的屬性便可以了,舉個(gè)例子:
- List list =session.createQuery
("select user.name,user.age from TUSER user").list();- Iterator it = list.iterator();
- while(it.hasNext())
- ...{
- Object[] results = (Object[])it.next();
- System.out.println(results[0]);
- System.out.println(results[1]);
- }
如果覺(jué)得返回?cái)?shù)組的方式不夠符合面向?qū)ο蟮娘L(fēng)格,也可以使用構(gòu)造對(duì)象實(shí)例的方法對(duì)數(shù)組進(jìn)行封裝:
- List list = this.session.createQuery
(" select new TUser(user.name,user.age) from TUser as user").list();- Iterator if = list.iterator();
- while(it.hasNext())
- ...{
- TUser user = (TUser)it.next();
- System.out.println(user.getName());
- }
著愛(ài)與那個(gè)就比較形象化一些,但是有一點(diǎn)要注意的是這個(gè)查詢(xún)結(jié)果的TUser對(duì)象僅僅是一普通的 java 對(duì)象,進(jìn)用于對(duì)查詢(xún)結(jié)果的封裝,除了在構(gòu)造是賦予的屬性值外,其他屬性均為未賦值狀態(tài),這就意味著,我們無(wú)法通過(guò) Session 對(duì)此對(duì)象進(jìn)行更新,如果企圖對(duì) user 對(duì)象更新將導(dǎo)致向數(shù)據(jù)庫(kù)插入一條新的記錄,而不是更新原有記錄:
- while(it.hasNext())
- ...{
- TUser user = (TUser)it.next();
- user.setName("test");
- session.saveOrUpdate(user);
- //這里將導(dǎo)致一次 insert 操作,而非 update
- }
也可以使用像 SQL 那樣的統(tǒng)計(jì)函數(shù),比如:
- selet count(*),min(user.age) from TUser as user
- select upper(user.name) from TUser as user
- select distinct user.name from TUser as user
以上介紹Hibernate屬性查詢(xún)。
【編輯推薦】