hibernate 3.0 多條件查詢方法

此方法可多條件查詢且能夠根據關聯的表條件進行查詢
如查詢某個商品:
表結構以下:
goods(商品表)
goodsid(商品id) goodsname(名稱) typeid(分類-外鍵)  supplierid(供應商-外鍵)session

type(分類表)
typeid(id主鍵)   typename(分類名稱)對象

supplier(供應商表)
supplierid(ID主鍵)   suppliername( 供應商名稱)get

你可建一個查詢條件的類,裏面包括你要查詢的全部字段
如: public class Query{
    private String suppliername;
    private String goodsname;
    private String typename;
..................
get/set方法................
}it

獲得查詢條件後,能夠把此類的一個對象傳入本身作的方法,此方法能夠根據條件的個數及是否輸入條件進行查詢:
public static List query_goods(Query query){
        Session session = SessionFactory.getSession();
        Criteria criteria = session.createCriteria(Goods.class);
        Criteria type = criteria.createCriteria("type");
        Criteria  supplier= criteria.createCriteria("supplier");
        if(null!=query.getGoodsname() && !"".equels(query.getGoodsname() ))
            criteria.add(Restrictions.like("goodsname","%"+query.getGoodsname()+"%"));
       if(null!=query.getSuppliername() && !"".equels(query.getSuppliername() ))
            supplier.add(Restrictions.like("suppliername","%"+query.getSuppliername()+"%"));io

        if(null!=query.getTypename() && !"".equels(query.getTypename() ))
            type.add(Restrictions.like("typename","%"+query.getTypename+"%"));
        List list = criteria.list();
        session.clear();
        session.close();
        return list;
    }class

以上方面還可多層的嵌套,如type裏還有外鍵,能夠按照以上方法進行嵌套。注意,查詢時全部涉及到的數據都將一次性寫入類的屬性中,包括有關聯的,即此時goods的關聯延遲加載無效,我以爲這一點很是的好。呵呵,有什麼好處,能夠本身好好的想一想。
有許多人曾經提到過用Example,就不用本身判斷了,若是沒有關聯條件查詢的話,確實是好,可它的缺點就是不能查詢關聯中的條件。 List

相關文章
相關標籤/搜索