国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Hibernate QBC查詢
Hibernate QBC語言
文章分類:Java編程
節(jié) 8.01    基本查詢
以下是HQL/QBC/Native SQL三種查詢策略
HQL策略:

Java代碼
session.createQuery("FROM Category c where c.name like 'Laptop%'"); 

session.createQuery("FROM Category c where c.name like 'Laptop%'"); 

QBC策略:

Java代碼
session.createCriteria(Category.class).add(Restrictions.like("name", "Laptop%")); 

session.createCriteria(Category.class).add(Restrictions.like("name", "Laptop%")); 

Native SQL策略

Java代碼
session.createSQLQuery("select {c.*} from CATEGORY {c} where NAME like 'Laptop%'").  
addEntity("c",Category.class); 

session.createSQLQuery("select {c.*} from CATEGORY {c} where NAME like 'Laptop%'").
addEntity("c",Category.class); 

節(jié) 8.02    分頁查詢

Java代碼
Criteria criteria = session.createCriteria(Category.class)  
.add(Restrictions.like("name", "Laptop%"));  
criteria.addOrder(Order.asc("name"));  
criteria.setFirstResult(0);//初始行數(shù)  
criteria.setMaxResults(20);//每頁顯示行數(shù) 

Criteria criteria = session.createCriteria(Category.class)
.add(Restrictions.like("name", "Laptop%"));
criteria.addOrder(Order.asc("name"));
criteria.setFirstResult(0);//初始行數(shù)
criteria.setMaxResults(20);//每頁顯示行數(shù) 

節(jié) 8.03    數(shù)據(jù)過濾
方法                      說明   
Restrictions.eq         =  
Restrictions.allEq      利用Map來進行多個等于的限制   
Restrictions.gt         >   
Restrictions.ge         >=   
Restrictions.lt         < 
Restrictions.le         <=   
Restrictions.between    BETWEEN  
Restrictions.like       LIKE  
Restrictions.in         in  
Restrictions.and        and  
Restrictions.or         or  
Restrictions.sqlRestriction     用SQL限定查詢
(a)    應用限制

Java代碼
Criterion emailEq = Restrictions.eq("email", "w@163.com");  
Criteria criteria = session.createCriteria(User.class);  
criteria.add(emailEq);  
User user = (User)criteria.uniqueResult(); 

Criterion emailEq = Restrictions.eq("email", "w@163.com");
Criteria criteria = session.createCriteria(User.class);
criteria.add(emailEq);
User user = (User)criteria.uniqueResult(); 

(b)    比較表達式

Java代碼
Restrictions.between("amount", new BigDecimal(100), new BigDecimal(200));  
Restrictions.gt("amount", new BigDecimal(100));  
Restrictions.in("email", emails);//注:emails為集合  
Restrictions.isNull("email");  
Restrictions.isNotNull("email");  
Restrictions.isEmpty("bids");  
Restrictions.sizeGe("bids", 3);//bids屬性大小 

Restrictions.between("amount", new BigDecimal(100), new BigDecimal(200));
Restrictions.gt("amount", new BigDecimal(100));
Restrictions.in("email", emails);//注:emails為集合
Restrictions.isNull("email");
Restrictions.isNotNull("email");
Restrictions.isEmpty("bids");
Restrictions.sizeGe("bids", 3);//bids屬性大小 

(c)    字符串匹配

Java代碼
Restrictions.like("email", "G%");  
Restrictions.like("email", "G%",MatchMode.START);  
注:MatchMode分為START,END,ANYWHERE,EXACT四種模式  
Restrictions.like("email", "G%").ignoreCase(); 

Restrictions.like("email", "G%");
Restrictions.like("email", "G%",MatchMode.START);
注:MatchMode分為START,END,ANYWHERE,EXACT四種模式
Restrictions.like("email", "G%").ignoreCase(); 

(d)    組合表達式和邏輯操作符

Java代碼
Restrictions.or(  
                Restrictions.and(  
                        Restrictions.like("firstname", "G%"),  
                        Restrictions.like("lastname", "K%")),  
                        Restrictions.in("email",emails)); 

Restrictions.or(
                Restrictions.and(
                        Restrictions.like("firstname", "G%"),
                        Restrictions.like("lastname", "K%")),
                        Restrictions.in("email",emails)); 

(e)    SQL表達式

Java代碼
Restrictions.sqlRestriction("{alias}.name='tie' and {alias}.addr='dalian'");  
Restrictions.sqlRestriction("{alias}.name=?",  "tie", Hibernate.STRING);//姓名為tie的對象  
Restrictions.sqlRestriction("length({alias}.PASSWORD) < ?",5,Hibernate.INTEGER);  
//密碼小于5個字符對象  
Restrictions.sqlRestriction("'100' >all( select b.AMOUNT FROM BID b " +  
                " WHERE b.ITEM_ID = {alias}.ITEM_ID)");//返回出價不大于100 

Restrictions.sqlRestriction("{alias}.name='tie' and {alias}.addr='dalian'");
Restrictions.sqlRestriction("{alias}.name=?",  "tie", Hibernate.STRING);//姓名為tie的對象
Restrictions.sqlRestriction("length({alias}.PASSWORD) < ?",5,Hibernate.INTEGER);
//密碼小于5個字符對象
Restrictions.sqlRestriction("'100' >all( select b.AMOUNT FROM BID b " +
                " WHERE b.ITEM_ID = {alias}.ITEM_ID)");//返回出價不大于100 


(f)    子查詢

節(jié) 8.04    表關聯(lián)
(a)    隱式關聯(lián)
隱式關聯(lián)有兩種方法:
1、    Criteria接口的createCriteria()方法:

Java代碼
session.createCriteria(Item.class)  
.add(Restrictions.like("description", "Foo",MatchMode.ANYWHERE))  
.createCriteria("bids")  
.add(Restrictions.gt("amount",new BigDecimal(100)));  
 
session.createCriteria(Item.class)  
            .createCriteria("seller")  
            .add(Restrictions.like("email", "%@")); 

session.createCriteria(Item.class)
.add(Restrictions.like("description", "Foo",MatchMode.ANYWHERE))
.createCriteria("bids")
.add(Restrictions.gt("amount",new BigDecimal(100)));

session.createCriteria(Item.class)
            .createCriteria("seller")
            .add(Restrictions.like("email", "%@")); 

2、    分配別名:

Java代碼
session.createCriteria(Item.class)  
            .createAlias("bids","b")  
            .add(Restrictions.like("description", "%Foo%"))  
            .add(Restrictions.gt("b.amount", new BigDecimal(100)));  
 
session.createCriteria(Item.class)  
            .createAlias("seller", "s")  
            .add(Restrictions.like("s.email","%@")); 

session.createCriteria(Item.class)
            .createAlias("bids","b")
            .add(Restrictions.like("description", "%Foo%"))
            .add(Restrictions.gt("b.amount", new BigDecimal(100)));

session.createCriteria(Item.class)
            .createAlias("seller", "s")
            .add(Restrictions.like("s.email","%@")); 

(b)    抓取關聯(lián)

Java代碼
session.createCriteria(Item.class)  
            .setFetchMode("bids",FetchMode.JOIN)  
            .add(Restrictions.like("description", "%Foo%")) 

session.createCriteria(Item.class)
            .setFetchMode("bids",FetchMode.JOIN)
            .add(Restrictions.like("description", "%Foo%")) 



節(jié) 8.05    投影/報表查詢
(a)    簡單投影

Java代碼
session.createCriteria(Item.class)  
        .add(Restrictions.gt("endDate", new Date()))  
        .setProjection(Projections.id());//返回單一屬性  
 
session.createCriteria(Item.class).setProjection(  
Projections.projectionList().add(Projections.id()).  
add(Projections.property("description")));//返回一個Object[] 

session.createCriteria(Item.class)
        .add(Restrictions.gt("endDate", new Date()))
        .setProjection(Projections.id());//返回單一屬性

session.createCriteria(Item.class).setProjection(
Projections.projectionList().add(Projections.id()).
add(Projections.property("description")));//返回一個Object[] 


(b)    統(tǒng)計分組

Java代碼
session.createCriteria(Item.class)  
.setProjection(Projections.rowCount());  
 
session.createCriteria(Item.class)  
            .setProjection(Projections.projectionList()  
            .add(Projections.rowCount())  
            .add(Projections.sum("sales"))  
            .add(Projections.avg("score"))  
            );  
 
    session.createCriteria(Bid.class)  
        .createAlias("bidder", "u")  
        .setProjection(Projections.projectionList()  
                .add(Property.forName("u.id").group())  
                .add(Property.forName("u.username").group())  
                .add(Property.forName("id").count())  
                .add(Property.forName("amount").avg())  
            ); 

session.createCriteria(Item.class)
.setProjection(Projections.rowCount());

session.createCriteria(Item.class)
            .setProjection(Projections.projectionList()
            .add(Projections.rowCount())
            .add(Projections.sum("sales"))
            .add(Projections.avg("score"))
            );

    session.createCriteria(Bid.class)
        .createAlias("bidder", "u")
        .setProjection(Projections.projectionList()
                .add(Property.forName("u.id").group())
                .add(Property.forName("u.username").group())
                .add(Property.forName("id").count())
                .add(Property.forName("amount").avg())
            ); 



(c)    SQL投影

Java代碼
String sqlFragment = "(select count(*) from Item i where i.item_id = item_id) " 
                + " as numofitems";  
        session.createCriteria(Bid.class).createAlias("bidder", "u")  
                .setProjection(  
                        Projections.projectionList().add(  
                                Projections.groupProperty("u.id")).add(  
                                Projections.groupProperty("u.username")).add(  
                                Projections.count("id")).add(  
                                Projections.avg("amount")).add(  
                                Projections.sqlProjection(sqlFragment,  
                                        new String[] { "numofitems" },  
                                        new Type[] { Hibernate.LONG }))  
 
                ); 
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Hibernate---Criteria 查詢
[轉] Hibernate3的DetachedCriteria支持 - 影尋 - 網易博客
hibernate的Criteria條件查詢
Hibernate高級查詢
hibernate Restrictions用法
Hibernate的DetachedCriteria使用(含Criteria)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服