java操作mongodb的增、删、改、查操作。

来源:互联网 发布:新速特软件手机应用 编辑:程序博客网 时间:2024/05/19 15:19

建议用一个数据库连接对象操作数据库,如果需要多个,可以初始化多个实例。

使用单例模式保持一个数据库连接:

public class MongoDb {private static MongoDb instance;private DB db;private MongoDb(){//MongoClient mongoClient = new MongoClient();//MongoClient mongoClient = new MongoClient( "localhost" );//MongoClient mongoClient = new MongoClient( "localhost" , 27017 );MongoClient mongoClient;try {mongoClient = new MongoClient("192.168.0.228", 27017);//mongoClient = new MongoClient(Arrays.asList(new ServerAddress("192.168.0.228", 27017)));db = mongoClient.getDB("simulator");} catch (UnknownHostException e) {e.printStackTrace();}}public static MongoDb getInstance(){if(instance == null){instance = new MongoDb();}return instance;}public DB getDb(){return this.db;}}
DAO层的代码如下:

public class PlanDao {/** * 新增一个计划 * @param plan */public ObjectId add(Plan plan){DB db = MongoDb.getInstance().getDb();DBCollection coll = db.getCollection(SimulatorConstant.COLL_PLAN);DBObject object = DBObjectUtil.getDBObjectByPlan(plan);coll.insert(object);return (ObjectId)object.get("_id");}/** * 通过ID获得一个plan对象 * @param id */public Plan getById(String id){DB db = MongoDb.getInstance().getDb();DBCollection coll = db.getCollection(SimulatorConstant.COLL_PLAN);DBObject object = coll.findOne(new BasicDBObject("_id", new ObjectId(id)));return DBObjectUtil.getPlanByDBObject(object);}/** * 删除一个对象 * @param id */public void delete(String id){DB db = MongoDb.getInstance().getDb();DBCollection coll = db.getCollection(SimulatorConstant.COLL_PLAN);coll.remove(new BasicDBObject("_id", new ObjectId(id)));}/** * 获得所有的plan对象 * @return */public List<Plan> getAll(){List<Plan> planList = new ArrayList<Plan>();DB db = MongoDb.getInstance().getDb();DBCollection coll = db.getCollection(SimulatorConstant.COLL_PLAN);DBCursor cursor = coll.find();try {   while(cursor.hasNext()) {   DBObject object = cursor.next();   planList.add(DBObjectUtil.getPlanByDBObject(object));   }} finally {   cursor.close();}return planList;}/** * 修改一个方案 * @param plan */public void modify(Plan plan){DB db = MongoDb.getInstance().getDb();DBCollection coll = db.getCollection(SimulatorConstant.COLL_PLAN);coll.update(new BasicDBObject("_id", new ObjectId(plan.getId())), DBObjectUtil.getDBObjectByPlan(plan));}}

SimulatorConstant.COLL_PLAN
就是collection的名字。

model层的代码如下:

public class Plan {//方案的idprivate String id;//方案名称private String name;public Plan(){}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getId() {return id;}public void setId(String id) {this.id = id;}}

工具类,实现模型层和数据库之间的对应:

/** * @author hadoop * */public class DBObjectUtil {/** * 通过Plan获得BasicDBObject对象 * @param mac */public static BasicDBObject getDBObjectByPlan(Plan plan){ObjectId id;String sId = plan.getId();if(sId == null || sId.length() != 24){id = new ObjectId();} else {id = new ObjectId(sId);}BasicDBObject doc = new BasicDBObject("_id", id);doc.append("name", plan.getName());return doc;}/** * 通过BasicDBObject获得Plan对象 * @param object */public static Plan getPlanByDBObject(DBObject object){Plan plan = new Plan();plan.setId(((ObjectId)object.get("_id")).toString());plan.setName((String)object.get("name"));return plan;}}
驱动可以在我上传的资源中找到。




原创粉丝点击