Db4o 新建、查询、更新、删除操作
生活随笔
收集整理的這篇文章主要介紹了
Db4o 新建、查询、更新、删除操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Db4o一個輕巧的、面向對象的數據庫。為了方便調用,將新建、查詢、更新、刪除操作封裝到了Db4oUtil工具類,懶人可一鍵調用哦哈哈哈
import com.db4o.Db4o; import com.db4o.ObjectContainer; import com.db4o.query.Query; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component;import java.lang.reflect.Field; import java.util.*;/*** @Author: yuc* @Description:* @Date: */@Component public class Db4oUtil {private static Logger logger = LoggerFactory.getLogger(Db4oUtil.class);// 通過此方式向靜態變量賦值@Value("${db4o.database.name}")private void setDatabaseName(String databaseName) {Db4oUtil.databaseName = databaseName;}private static String databaseName;/*** 條件查詢** @param clazz* @param descend* @param constrain* @param <T>* @return*/public synchronized static <T> List<T> searchLimit(Class clazz, String descend, String constrain) {ObjectContainer db = null;try {db = Db4o.openFile(databaseName);Query query = db.query();query.constrain(clazz);query.descend(descend).constrain(constrain);List<T> results = query.execute();if (results == null || results.size() <= 0) {return null;} else {return new ArrayList<>(results);}} catch (Exception e) {logger.error("查詢操作失敗", e);return null;} finally {if (db != null)db.close();}}/*** 普通查詢** @param clazz* @param <T>* @return*/public synchronized static <T> List<T> search(Class clazz) {ObjectContainer db = null;try {db = Db4o.openFile(databaseName);Query query = db.query();query.constrain(clazz);List<T> results = query.execute();if (results == null || results.size() <= 0) {return null;} else {return new ArrayList<>(results);}} catch (Exception e) {logger.error("查詢操作失敗", e);return null;} finally {if (db != null)db.close();}}/*** 創建對象** @param T* @return*/public synchronized static <T> boolean create(T T) {ObjectContainer db = null;try {db = Db4o.openFile(databaseName);db.store(T);db.commit();return true;} catch (Exception e) {logger.error("創建操作失敗", e);return false;} finally {if (db != null)db.close();}}/*** 更新對象** @param clazz* @param descend* @param constrain* @param map* @param <T>* @return*/public synchronized static <T> boolean updateLimit(Class clazz, String descend, String constrain, Map<Object, Object> map) {ObjectContainer db = null;try {db = Db4o.openFile(databaseName);Query query = db.query();query.constrain(clazz);query.descend(descend).constrain(constrain);List<T> results = query.execute();if (results == null || results.size() <= 0) {return false;} else {Object object = results.get(0);Set<Map.Entry<Object, Object>> entries = map.entrySet();for (Map.Entry entry : entries) {Field declaredField = clazz.getDeclaredField(entry.getKey().toString());declaredField.setAccessible(true);declaredField.set(object, entry.getValue());}db.store(object);db.commit();return true;}} catch (Exception e) {logger.error("更新操作失敗", e);return false;} finally {if (db != null)db.close();}}/*** 刪除對象并校驗** @param clazz* @param descend* @param constrain* @param confirmFiledName* @param confirmData* @param <T>* @return*/public synchronized static <T> boolean delete(Class clazz, String descend, String constrain, String confirmFiledName, String confirmData) {ObjectContainer db = null;try {db = Db4o.openFile(databaseName);Query query = db.query();query.constrain(clazz);query.descend(descend).constrain(constrain);List<T> results = query.execute();if (results == null || results.size() <= 0) {return false;} else {Object object = results.get(0);Field declaredField = clazz.getDeclaredField(confirmFiledName);declaredField.setAccessible(true);if (declaredField.get(object).equals(confirmData)) {db.delete(object);db.commit();return true;} elsereturn false;}} catch (Exception e) {logger.error("刪除操作失敗", e);return false;} finally {if (db != null)db.close();}} }總結
以上是生活随笔為你收集整理的Db4o 新建、查询、更新、删除操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: n维椭球体积公式_洛氏硬度、布氏硬度、维
- 下一篇: 如何从信息化、数字化迈向智能工厂?