Spring和DB4O集成总结<o:p></o:p>
步1。
编写一个包含SETTER,GETTER的POJO类:
package com.model;
/**
* @author gyc
*/
public class ModelBean {
private String msg;
private String name;
private Integer id;
public ModelBean() {
super();
// TODO Auto-generated constructor stub
}
<o:p> </o:p> /**
* @param msg
* @param name
* @param id
*/
public ModelBean(String msg, String name, Integer id) {
super();
this.msg = msg;
this.name = name;
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
<o:p></o:p>
<o:p></o:p>
public void setName(String name) {
this.name = name;
}
<o:p></o:p>
<o:p></o:p>
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
System.out.println("Now in ModelBean's setMsg() method,the msg is-->"+msg);
}
<o:p> </o:p> public void sayHello()
{
System.out.println(msg);
}}
及在Spring初始化配置文件中配置:
<bean id="hello" class="com.model.ModelBean"><o:p></o:p>
<property name="name"><o:p></o:p>
<value>tomvalue><o:p></o:p>
property><o:p></o:p>
<property name="id"><o:p></o:p>
<value>13value><o:p></o:p>
property><o:p></o:p>
<property name="msg"><o:p></o:p>
<value>你好,Tom!value>
property><o:p></o:p>
bean><o:p></o:p>
步2:编写访问DB4O数据库的处理类:
package com.store;
<o:p></o:p>
import java.io.File;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
<o:p></o:p>
import com.db4o.Db4o;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;
import com.model.ModelBean;
import com.store.db4outil.Util;
<o:p></o:p>
/*
* @author gyc
*/
public class AccessDb4oDeal {
<o:p> </o:p> public AccessDb4oDeal() {
// TODO Auto-generated constructor stub
// 打开DB4O对象数据库
// new File(Util.DB4OFILENAME).delete();
// db = Db4o.openFile(Util.DB4OFILENAME);
<o:p> </o:p>
}
<o:p></o:p>
private ObjectContainer db = null;
<o:p></o:p>
private String dbfilename;
<o:p></o:p>
private ModelBean modelbean;
<o:p></o:p>
public ModelBean getModelbean() {
return modelbean;
}
<o:p></o:p>
public void setModelbean(ModelBean modelbean) {
this.modelbean = modelbean;
}
<o:p></o:p>
public String getDbfilename() {
return dbfilename;
}
<o:p></o:p>
public void setDbfilename(String dbfilename) {
this.dbfilename = dbfilename;
}<o:p> </o:p>
// 打开DB4O对象数据库
public void initAndOpenDb4o() {
// new File(Util.DB4OFILENAME).delete();
// db = Db4o.openFile(Util.DB4OFILENAME);
// new File(this.dbfilename).delete();//如果有这条语句,则会先把之前数据删除
// db = Db4o.openFile(this.dbfilename);
db = Util.openLocalDb(db);
System.out.println("Now in AccessDb4oDeal ,initAndOpenDb4o() mehtod!");
}
<o:p></o:p>
public boolean storeObject(Object obj) {
boolean flag = false;
try {
Util.storeObject(db, obj);
System.out.println("Now in AccessDb4oDeal,storeObject Method!");
flag = true;
} catch (Exception ex) {
System.out.println("向DB4O对象数据库插入对象数据发生异常:" + ex);
} finally {
Util.closeDb(db);
}
return flag;
}
// QBE方式检索所有对象数据
public Collection queryAllObjects(Object obj) {
java.util.List list = null;
<o:p></o:p>
try {
ObjectSet os = Util.retrieveAllObjectQBE(db, obj);
list = Util.convertObjectSet(os);
System.out.println("Now in AccessDb4oDeal,queryAllObjects method!");
} catch (Exception ex) {
System.out.println("从对象数据库中检索对象失败: " + ex);
} finally {
Util.closeDb(db);
}
return list;
<o:p></o:p>
}
// 用迭代器遍历集合数据
public void listResult(Collection col) {
System.out.println("Now in AccessDb4oDeal,listResult method!The Result size is --->"+ col.size());
Iterator it = col.iterator();
while (it.hasNext()) {
ModelBean obj = (ModelBean) it.next();
System.out
.println("Now in AccessDb4oDeal,listResult method!The Object's Field Data is -->"
+ obj.getMsg());
}
}
// 从对象数据库(只限本次连接)中检索所有对象数据,返回一个对象集合
public Collection findAllObjects(Object obj) {
java.util.List list = null;
try {
ObjectSet os = Util.retrieveAllObject(db, obj.getClass());
list = Util.convertObjectSet(os);
System.out.println("Now In AccessDb4oDeal,findAllObjects method!");
} catch (Exception ex) {
System.out.println("从对象数据库中检索对象数据失败: " + ex);
} finally {
Util.closeDb(db);
}
return list;
}
/*
* 根据特殊条件检索对象
*/
public Object findObjectByFieldValue(Object obj, String field, String value) {
Object objreturn = null;
try { ObjectSet os = Util.queryObjectQEByFieldPramatersString(db, obj
.getClass(), field, value);
List list = Util.convertObjectSet(os);
Iterator it = list.iterator();
while (it.hasNext()) {
objreturn = it.next();
}
} catch (Exception ex) {
System.out.println("根据字段值条件检索对象失败: " + ex);
} finally {
Util.closeDb(db);
}
return objreturn;
<o:p></o:p>
}
}
<o:p></o:p>
及在Spring初始化配置文件中配置(用于Spring生成访问DB4O数据库的处理类):
<bean id="accessdb4odeal" class="com.store.AccessDb4oDeal"><o:p></o:p>
<property name="dbfilename"><o:p></o:p>
<value>formula1.db4ovalue>property> bean><o:p></o:p>
还有作为TOOLS的DB4O工具类:<o:p></o:p>
package com.store.db4outil;
import java.util.List;
import com.db4o.*;<o:p></o:p>
import com.db4o.query.Constraint;<o:p></o:p>
import com.db4o.query.Query;<o:p> </o:p>
/* @author gyc
*/<o:p></o:p>
public class Util {<o:p></o:p>
public final static String DB4OFILENAME = "formula1.db4o";
// 向对象数据库插入对象<o:p></o:p>
public static void storeObject(ObjectContainer db, Object obj) {db.set(obj);<o:p></o:p>
System.out.println("Stored-->: " + obj);<o:p></o:p>
}
// QBE方式检索对象数据库中所有对象数据<o:p></o:p>
public static ObjectSet retrieveAllObjectQBE(ObjectContainer db, Object obj) {<o:p></o:p>
return db.get(obj);<o:p></o:p>
}
// 遍历对象集<o:p></o:p>
public static void listResult(ObjectSet result) {<o:p></o:p>
System.out.println(result.size());<o:p></o:p>
while (result.hasNext()) {<o:p></o:p>
System.out.println(result.next());<o:p></o:p>
}<o:p></o:p>
} // 遍历LIST对象<o:p></o:p>
public static void listResult(java.util.List result) {<o:p></o:p>
System.out.println(result.size());<o:p></o:p>
for (int x = 0; x < result.size(); x++) {<o:p></o:p>
System.out.println(result.get(x));<o:p></o:p>
}<o:p></o:p>
} // Native Queries方式检索对象数据库中所有对象数据<o:p></o:p>
public static ObjectSet retrieveAllObject(ObjectContainer db, Class xls) {<o:p></o:p>
return db.get(xls);<o:p></o:p>
}