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 新建、查询、更新、删除操作相关推荐

  1. WEB数据库管理平台kb-dms:数据库查询+更新+删除操作【六】

    数据库查询+更新+删除操作 kb-dms平台为用户提供了命令行窗口执行的功能可以进行查询等操作,还提供了快捷键的方式及在线编辑的功能等. 窗口命令行操作数据库 命令行窗口有表名提示功能及sql关键字提 ...

  2. 关于Adapter对数据库的查询、删除操作

    先来看清空号码操作(第一个选项是清空所有.下面的是popupwindow动态填充电话号码.为清空单个号码通话记录) /** 查询到单个号码的Sipaccount*/if (mContactDailDe ...

  3. Hibernate插入、查询、删除操作 HQL or SQL

    http://adoze.bokee.com/viewdiary.25672393.html Hibernate的所有的操作都是通过Session完成的. 基本步骤如下: 1:通过配置文件得到Sess ...

  4. mongoDB常用查询更新删除语句

    mongo常用查询.更新.删除等语句 注意:文中的所有 collection 代表 mongo 表名称 常用条件操作符:$gt(>).$lt(<).$gte(>=).$lte(< ...

  5. .net读写 更新 删除(操作)xml文件

    读写xml文件 已知有一个XML文件(bookstore.xml)如下: <?xml version="1.0" encoding="gb2312"?&g ...

  6. 转载:LINQ to SQL更新数据库操作

    翻译整理ScottGu的关于LINQ to SQL的Part 4: Updating our Database .该Post讲解了如何使用LINQ to SQL更新数据库,以及如何整合业务逻辑和自定义 ...

  7. Linq学习——更新数据库操作

    用LINQ to SQL建模Northwind数据库 在这之前一起学过LINQ to SQL设计器的使用,下面就使用如下的数据模型: 当使用LINQ to SQL设计器设计以上定义的五个类(Produ ...

  8. 手把手教你使用C#操作SQLite数据库,新建数据库,创建表,插入,查询,删除,运算符,like(持续更新)...

     有问题欢迎留言!!!  目录: 一.新建项目,添加引用 二.创建数据库 三.创建表 四.插入数据  五.查询数据  六.删除数据  七.运算符 八.like语句 我的环境配置:windows 64, ...

  9. 31-32 python mysql-connector创建数据、crud,where,排序,删除等。PyMSQL驱动,插入操作、查询操作、更新操作、删除操作、执行

    31Python MysSQL - mysql-connector驱动 使用pip命令安装mysql-connector: python -m pip install mysql-connector ...

  10. 手把手教你使用C#操作SQLite数据库,新建数据库,创建表,插入,查询,删除,运算符,like...

    目录: 一.新建项目,添加引用 二.创建数据库 三.创建表 四.插入数据  五.查询数据  六.删除数据  七.运算符 八.like语句 我的环境配置:windows 64,VS,SQLite(点击下 ...

最新文章

  1. LTE: UE特定的参考信号
  2. JavaScript函数与Window对象
  3. 使用python来访问Hadoop HDFS存储实现文件的操作
  4. 请问知识图谱有哪些研究点是可以进行深入研究的?
  5. false shell 判断_Shell 流程控制
  6. DOM-14 【实战】解决事件代理和鼠标移动事件的窘态
  7. 细数开源历史上的十个重大事件
  8. redis-数据类型-列表list类型
  9. 【leetcode刷题笔记】Sqrt(x)
  10. 通过DMVS采集并存储SQL Server性能计数器数据
  11. centos7下mongoDB安装和配置
  12. RealVIZ Stitcher Unlimited v5.5.1 1CD
  13. 中国移动加快自主创新推动我国主导4G标准引领国际
  14. 打造一款CPS返佣小程序之创建淘宝联盟账号及获取饿了么佣金路径《二》
  15. java计算机毕业设计学术会议信息网站源码+mysql数据库+lw文档+系统+调试部署
  16. Java面试宝典!java除法保留小数点后两位
  17. 【cudaMemcpy】
  18. 计算机课授课方法有哪些,计算机课程教学模式与方法
  19. js 与 asp.net 验证控件冲突解决方法
  20. 批量修改本地文件.bat命令使用与node.js批量修改文件

热门文章

  1. 罗技鼠标驱动怎么下载?
  2. WEB开发常用软件集合
  3. fireworks CS6安装教程
  4. LTE:资源调度(5)
  5. 【STM32】Keil v5下载与安装
  6. SQL中使用正则表达式
  7. 迅雷for linux centos,在CentOS6.6(32位)下配置迅雷远程成功
  8. potplayer如何设置以一帧一帧的逐帧播放播放?
  9. 一文掌握面向Windows平台的深度学习工控程序开发(使用Paddle Inference部署MFC、C#程序,内含完整代码链接)
  10. 人口各省预测模型matlab_基于MATLAB的人口预测模型