给java mongodb 官方driver 增加bean 操作
package gsralex; import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.net.UnknownHostException; import org.bson.types.ObjectId; import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBObject;
import com.mongodb.Mongo; public abstract class Dao {
private static final ThreadLocal<Mongo> threadLocal = new ThreadLocal<Mongo>(); private static final String connectAddress = "127.0.0.1";
private static final int connectPort = 27017; public static Mongo getMongo()
{
Mongo mongo = threadLocal.get();
if ( mongo == null )
{
try {
mongo = new Mongo( connectAddress, connectPort );
} catch ( UnknownHostException e ) {
/* TODO Auto-generated catch block */
e.printStackTrace();
}
threadLocal.set( mongo );
}
return(mongo);
} public static void close()
{
Mongo mongo = threadLocal.get(); if ( mongo != null )
{
mongo.close();
threadLocal.set( null );
}
} public static DB getDefaultDb()
{
return(getDb( "gsralex" ) );
} public static DB getDb( String dbName )
{
Mongo mongo = getMongo(); if ( mongo != null )
{
return(mongo.getDB( dbName ) );
} return(null);
} public static int insert( Object bean )
{
Class clazz = bean.getClass(); Field[] fields = clazz.getDeclaredFields(); MongoColumn column;
DBObject dbObject = new BasicDBObject(); try {
for ( Field field : fields )
{
column = field.getAnnotation( MongoColumn.class );
if ( column == null )
{
continue;
} Object filedValue = field.get( bean );
dbObject.put( column.name(), filedValue );
}
} catch ( Exception e ) {
/* TODO Auto-generated catch block */
e.printStackTrace();
} MongoCollection collection = (MongoCollection) clazz
.getAnnotation( MongoCollection.class );
return(getDefaultDb().getCollection( collection.name() ).insert( dbObject )
.getN() > 0 ? 0 : -1);
} public static int update( Object obj, String collectionName )
{
Class clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); MongoColumn column;
DBObject dbObject = new BasicDBObject(); try {
for ( Field field : fields )
{
column = field.getAnnotation( MongoColumn.class );
if ( column == null )
{
continue;
} Object filedValue = field.get( obj );
dbObject.put( column.name(), filedValue );
}
} catch ( Exception e ) {
/* TODO Auto-generated catch block */
e.printStackTrace();
} ObjectId _id = getObjectId( obj, clazz );
return(getDefaultDb().getCollection( collectionName ).update(
new BasicDBObject( "_id", _id ), dbObject ).getN() > 0 ? 0 : -1);
} private static ObjectId getObjectId( Object obj, Class clazz )
{
ObjectId _id = null;
try {
_id = (ObjectId) clazz.getField( "_id" ).get( obj );
} catch ( Exception e ) {
/* TODO Auto-generated catch block */
e.printStackTrace();
} return(_id);
} public static Object getBean( DBObject dbObject, Class clazz )
{
if ( dbObject == null )
{
return(null);
} Object obj = null;
try {
obj = clazz.newInstance(); Field[] fields = clazz.getDeclaredFields(); MongoColumn column;
for ( Field field : fields )
{
column = field.getAnnotation( MongoColumn.class ); if ( column == null )
continue; field.setAccessible( true );
Object filedValue = dbObject.get( column.name() );
field.set( obj, filedValue );
}
} catch ( Exception e ) {
e.printStackTrace();
} return(obj);
}
}
package gsralex; import java.lang.annotation.ElementType;
import java.lang.annotation.Target; @Target( { ElementType.TYPE } )
public @interface MongoCollection {
public String name() default "";
} package gsralex; import java.lang.annotation.ElementType;
import java.lang.annotation.Target; @Target( { ElementType.FIELD, ElementType.METHOD } )
public @interface MongoColumn {
public String name() default "";
}
郑州 6月23日 晴
给java mongodb 官方driver 增加bean 操作的更多相关文章
- MongoDB .Net Driver(C#驱动) - 内嵌数组/嵌入文档的操作(增加、删除、修改、查询(Linq 分页))
目录 一.前言 1. 运行环境 二.前期准备工作 1. 创建 MongoDBContext MongoDb操作上下文类 2.创建测试类 3.创建测试代码 三.内嵌数组增加元素操作 1.Update.S ...
- 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类)
近期工作中有使用到 MongoDb作为日志持久化对象,需要实现对MongoDb的增.删.改.查,但由于MongoDb的版本比较新,是2.4以上版本的,网上已有的一些MongoDb Helper类都是基 ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
- MongoDB C Driver使用教程
MongoDB C Driver使用教程 转载请注明出处http://www.cnblogs.com/oloroso/ 本指南提供简介 MongoDB C 驱动程序. 在 C API 的详细信息,请参 ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- [原创]MongoDB C++ 驱动部分问题解决方案(MongoDB C++ Driver)
本文为我长时间开发以及修改MongoDB C++ Driver时的一些问题和解决方案.目前本文所介绍的相关引擎也已经发布闭源版本,请自行下载 库版本以及相关位置:http://code.google. ...
- Java实现单链表的各种操作
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素 4.实现链表的反转 5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在 ...
- 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)
构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...
- Mongodb学习笔记五(C#操作mongodb)
mongodb c# driver(驱动)介绍 目前基于C#的mongodb驱动有两种,分别是官方驱动(下载地址)和samus驱动(下载地址). 本次我们只演示官方驱动的使用方法. 官方驱动文档查看 ...
随机推荐
- SQL链接EXCEL操作
Sub CopyData_5() Set Cnn = CreateObject("ADODB.Connection")With Cnn.Provider = "micro ...
- js里json和eval()
JSON * - JS中的对象只有JS自己认识,其他的语言都不认识 * - JSON就是一个特殊格式的字符串,这个字符串可以被任意的语言所识别, * 并且可以转换为任意语言中的对象,JSON在开发中主 ...
- SQL Server install
{ https://www.cnblogs.com/ios9/p/9527939.html https://www.cnblogs.com/ios9/p/9527815.html //在安装工具中 安 ...
- 阿里云 Aliplayer高级功能介绍(三):多字幕
基本介绍 国际化场景下面,播放器支持多字幕,可以有效解决视频的传播障碍难题,该功能适用于视频内容在全球范围内推广,阿里云的媒体处理服务提供接口可以生成多字幕,现在先看一下具体的效果: WebVTT格式 ...
- dart中extends、 implements、with的用法与区别
一.概述 继承(关键字 extends) 混入 mixins (关键字 with) 接口实现(关键字 implements) 这三种关系可以同时存在,但是有前后顺序: extends -> m ...
- Python 迭代器与生成器及装饰器
1.迭代器(Iterator) 迭代器是访问集合元素的一种方式.有下面特点: 1)每次调用__next__()方法只访问一个元素,而且不能后退,便于循环比较大的数据集合,节省内存:(当容器中没有可访问 ...
- shiro real的理解,密码匹配等
1 .定义实体及关系 即用户-角色之间是多对多关系,角色-权限之间是多对多关系:且用户和权限之间通过角色建立关系:在系统中验证时通过权限验证,角色只是权限集合,即所谓的显示角色:其实权限应该对应到资源 ...
- Java学习之程序运行机制
Java的运行机制是:先编译,后解释. 典型的编译型编程语言是:C和C++. eg:用c语言编写的*.c文件编译生成*.h文件,通过链接将*.h文件链接成*.exe文件,然后就可以运行,编译型的高级语 ...
- 7_2.springboot2.x启动配置原理_2.运行run方法
当创建完SpringApplication对象之后运行run方法 public ConfigurableApplicationContext run(String... args) { StopWat ...
- <每日一题>题目1:简单的注册和登录1.0
#版本1.0,最基本的注册登录'''1.注册,将账号和密码分别写在不同的文档里面2.登录,分别从账户文档和密码文档进行读取并登录''' #注册 Identity = input("请输入您想 ...