MongoDB的薄封装(nutzmongo库)

优质
小牛编辑
127浏览
2023-12-01

MongoDB 驱动的薄封装, 主要是封装Pojo<->BasicDbObject的转换, 支持mongodb java driver 3.0+

项目地址: https://github.com/nutzam/nutzmongo

添加依赖

maven 的配置

    <dependency>
        <groupId>org.nutz</groupId>
        <artifactId>nutzmongo</artifactId>
        <version>1.r.60</version>
    </dependency>
    <!-- 其他依赖 -->

直接下载jar

  • 正式版本: https://jfrog.nutz.cn/artifactory/jcenter/org/nutz/nutzmongo/
  • 快照版本: https://jfrog.nutz.cn/artifactory/snapshots/org/nutz/nutzmongo/

声明Ioc Bean

var ioc={
    // 单机
    zMongo : {
        args : ["127.0.0.1", 27017], // 或者不写参数,默认就是127.0.0.1和27017
        factory : "org.nutz.mongo.ZMongo#me"
    },
    // 集群
    //zMongo : {
    //    args : ["mongodb://root:mypass@192.168.2.199:3717,192.168.2.200:3717/admin?replicaSet=mgset"], // 基于Mongo URI创建ZMongo
    //    factory : "org.nutz.mongo.ZMongo#uri"
    //},
    zMoDB : {
        args : ["nutzbook"], // 数据库名称
        factory : "$zMongo#db"
    },
    // 集合,可以在这里声明,也可以走@Inject注入
    zMoCoUser : {
        args : ["user"],
        factory : "$zMoDB#c"
    }
    /* // 还可以声明几个常用的集合,也可以在Service中生成
    ,zMoCoTopic : {
        args : ["topic", false],
        factory : "$zMoDB#cc"
    },
    zMoCoReply : {
        args : ["reply", false],
        factory : "$zMoDB#cc"
    }
    */
}

Service中的注入和使用

@IocBean
public class XXXService {
    // 按需注入几个核心对象
    @Inject 
    protected ZMongo zmongo;  //注意大小写与配置的名字一致
    @Inject
    protected ZMoDB zMoDB; // 当前数据
    
    @Inject ZMoCo zMoCoUser; // 按js里面的配置取
    
    @Inject("java:$zMoDB.c('role')") // 也可以直接取. 当然了,也可以代码调用zMoDB.c(集合名词)来动态获取
    ZMoCo zMoCoRole;
    
    public void insert(User...users) {
        zMoCoUser.insert(ZMo.toDocArray(users));
    }
    
    public List<User> query(ZMoDoc cnd) {
        List<User> list = new ArrayList<User>();
        DBCursor cursor = MoCoUser.find(cnd);
        if(cursor.hasNext()) {
               DBObject obj = cursor.next();
               list.add(ZMo.me().fromDocToObj(obj, User.class));
        }
        return list;
    }
    
    // ZMoCo还有很多方法哦,请挖掘
}

关于日志

nutzmongo内的日志大部分是ZMoCo输出的, 走的也是nutz的Log接口. 若使用log4j, 下面是参考配置