Spring和DB4O集成总结( 入门级B)

  // 根据对象 INT 字段或对象 STRING 字段检索(参数与传过来的 Object 相关) <o:p></o:p>

    public static ObjectSet retrieveObjectByFieldPramaters(ObjectContainer db,<o:p></o:p>

           Object obj) {<o:p></o:p>

<o:p> </o:p>

       ObjectSet os = db.get(obj);<o:p></o:p>

       return os;<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // QE方式根据参数String field(字段名), String str(参数值),查找对象数据<o:p></o:p>

    public static ObjectSet queryObjectQEByFieldPramatersString(<o:p></o:p>

           ObjectContainer db, Class cls, String field, String value) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(cls);<o:p></o:p>

       query.descend(field).constrain(value);<o:p></o:p>

       ObjectSet os = query.execute();<o:p></o:p>

       return os;<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // QE方式根据参数String field(字段名), Integer x(参数值),查找对象数据<o:p></o:p>

    public static ObjectSet queryObjectQEByFieldPramatersInteger(<o:p></o:p>

           ObjectContainer db, Class cls, String field, Integer value) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(cls);<o:p></o:p>

       query.descend(field).constrain(value);<o:p></o:p>

       /*<o:p></o:p>

        * constrain: 词性及解释 Part of speech and defination vt. 强迫, 限制, 关押<o:p></o:p>

        * <o:p></o:p>

        */<o:p></o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // 否定方式QE检索<o:p></o:p>

    public static ObjectSet queryByNegation(ObjectContainer db, Class cls,<o:p></o:p>

           String field, String value) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(cls);<o:p></o:p>

       query.descend(field).constrain(value).not();<o:p></o:p>

       /*<o:p></o:p>

        * descend: 词性及解释 Part of speech and defination vi. 下降, 世代相传, 屈尊, 袭击 vt.<o:p></o:p>

        * 下降 【法】 把财产传给, 遗传<o:p></o:p>

        */<o:p></o:p>

<o:p> </o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // conjunction方式QE检索<o:p></o:p>

    public static ObjectSet retrieveByConjunction(ObjectContainer db,<o:p></o:p>

           Class xls, Object obj1, Object obj2, String f1, String f2) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(xls);<o:p></o:p>

       Constraint constr = query.descend(f1).constrain(obj1);<o:p></o:p>

       query.descend(f2).constrain(obj2).and(constr);<o:p></o:p>

       /*<o:p></o:p>

        * conjunction: 词性及解释 Part of speech and defination n. 连接词, 联合, 结合 【计】<o:p></o:p>

        * 合取<o:p></o:p>

        * <o:p></o:p>

        */<o:p></o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // Disjunction方式QE检索,即相当于SQL中的OR查询<o:p></o:p>

    public static ObjectSet retrieveByDisjunction(ObjectContainer db,<o:p></o:p>

           Class xls, String f1, Object value1, String f2, Object value2) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(xls);<o:p></o:p>

       Constraint constr = query.descend(f1).constrain(value1);<o:p></o:p>

       query.descend(f2).constrain(value2).or(constr);<o:p></o:p>

       /*<o:p></o:p>

        * Disjunction: [] 词性及解释 Part of speech and defination n. 分离, 分裂, 分断<o:p></o:p>

        * <o:p></o:p>

        */<o:p></o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // Comparison方式QE检索,即检索当f1字段值大于value1的对象数据<o:p></o:p>

    public static ObjectSet retrieveByComparison(ObjectContainer db, Class xls,<o:p></o:p>

           String f1, Object value1) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.descend(f1).constrain(value1).greater();<o:p></o:p>

       /*<o:p></o:p>

        * comparison: 词性及解释 Part of speech and defination n. 比较, 对照, 比喻 【经】 比较,<o:p></o:p>

        * 对比<o:p></o:p>

        * <o:p></o:p>

        */<o:p></o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // 默认字段值QE检索<o:p></o:p>

    public static ObjectSet retrieveByDefaultFieldValue(ObjectContainer db,<o:p></o:p>

           Class xls, String f1, Object v1) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(xls);<o:p></o:p>

       query.descend(f1).constrain(v1);<o:p></o:p>

<o:p> </o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // Ascending排序方式检索对象数据库中的所有对象数据<o:p></o:p>

    public static ObjectSet retrieveSortedOrderByAscending(ObjectContainer db,<o:p></o:p>

           Class xls, String f1) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(xls);<o:p></o:p>

       query.descend(f1).orderAscending();<o:p></o:p>

<o:p> </o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // Descending排序方式检索对象数据库中的所有对象数据<o:p></o:p>

    public static ObjectSet retrieveSortedOrderByDescending(ObjectContainer db,<o:p></o:p>

           Class xls, String f1) {<o:p></o:p>

       Query query = db.query();<o:p></o:p>

       query.constrain(xls);<o:p></o:p>

       query.descend(f1).orderDescending();<o:p></o:p>

<o:p> </o:p>

       return query.execute();<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    // 清除对象数据库中所有元对象Class所对应的对象数据<o:p></o:p>

    public static void clearDatabase(ObjectContainer db, Class xls) {<o:p></o:p>

       ObjectSet result = db.get(xls);<o:p></o:p>

       while (result.hasNext()) {<o:p></o:p>

           db.delete(result.next());<o:p></o:p>

       }<o:p></o:p>

    }<o:p></o:p>

<o:p> </o:p>

    /**<o:p></o:p>

     * ObjestSet的对象存储到List<o:p></o:p>

     * <o:p></o:p>

     * @param 结果集<o:p></o:p>

     */<o:p></o:p>

    public static List convertObjectSet(ObjectSet os) {<o:p></o:p>

       java.util.List list = new java.util.ArrayList(os.size());<o:p></o:p>

       while (os.hasNext()) {<o:p></o:p>

           list.add(os.next());<o:p></o:p>

       }<o:p></o:p>

       return list;<o:p></o:p>

<o:p> </o:p>

    }<o:p></o:p>

    <o:p></o:p>

     /**    <o:p></o:p>

      * 打开本地库    <o:p></o:p>

      *    <o:p></o:p>

      */    <o:p></o:p>

     public static ObjectContainer openLocalDb(ObjectContainer db){     <o:p></o:p>

      db = Db4o.openFile(DB4OFILENAME);     <o:p></o:p>

      return db;<o:p></o:p>

     }     <o:p></o:p>

          <o:p></o:p>

     /**    <o:p></o:p>

      * 关闭库    <o:p></o:p>

      *    <o:p></o:p>

      */    <o:p></o:p>

     public static void closeDb(ObjectContainer db){     <o:p></o:p>

      if(db!=null) db.close();     <o:p></o:p>

     }    <o:p></o:p>

<o:p> </o:p>

}<o:p></o:p>

<o:p> </o:p>

3:编写持久化接口:<o:p></o:p>

/**

 *

 */

package com.store;

<o:p> </o:p>

import java.util.Collection;

<o:p> </o:p>

/**

 * @author gyc

 *

 */

public interface DbStoreIf {

       //CRUD方法

       public boolean storeObject(Object obj);

       public boolean deleteObject(Object obj);

       public boolean updateObject(Object obj);

       public Object findObject(Object obj);

      

       public Collection findAllObjects(Object obj);

       /*

        * 根据特殊条件检索对象

   &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值