mongo-orm
主要基于javax.persistence规范实现字段的映射和集合的映射,借助mogodb-java-driver提供的默认DocumentCodec实现自定义编解码器的功能
- 驼峰字段自动映射
 在业务中我们通常会把实体的字段声明成驼峰形式,而表结构会设计成小写字母和下滑线的形式,要做到字段的关联就需要手动做一个字段的映射,mongo-orm会自动映射驼峰字段
- 自定义字段名称
 可通过@Column自定义映射字段名称
@Column(name = "just_test")
private String justForTest;
- 自定义剔除不需映射的字段
 可通过@Transient注解排除无需持久化的字段
@Transient
private String test;
- 支持@Table关联实体和集合
@Table(name = "t_comment")
public class Comment {} 
-  快速生成自定义解码器 
 通过继承BeanCodec即完成自定义codec
-  支持多数据源 
快速上手
- 添加依赖
<dependency>
    <groupId>top.newleaf</groupId>
    <artifactId>mongo-orm</artifactId>
    <version>1.0.0</version>
</dependency>
-  初始化mongo-orm MongoFactory.getInstatnce().init(confPath);
-  按照需要使用javax.persistence注解注释字段和实体(暂时只限上述介绍的功能) 
@Table(name = "t_comment")
public class Comment {
    private Long id;
    private String content;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    @Override
    public String toString() {
        return "Comment{" +
                "id=" + id +
                ", content='" + content + '\'' +
                '}';
    }
} 
- 继承BeanCodec传入实体泛型
public class CommentCodec extends BeanCodec<Comment> {
}
 
- 配置uri、name、扫描路径、默认库
<?xml version="1.0" encoding="UTF-8" ?>
<mongo>
    <packages>
        <package>top.newleaf.test</package>
        <package>top.newleaf.codec</package>
    </packages>
    <connections>
        <connection>
            <uri><![CDATA[mongodb://user:url:port/dbname1?replicaSet=port&authSource=admin&journal=true]]></uri>
            <db>dbname1</db>
            <name>db1</name>
            <isDefault>true</isDefault>
        </connection>
        <connection>
            <uri><![CDATA[mongodb://user:url:port/dbname2?replicaSet=port&authSource=admin&journal=true]]></uri>
            <db>dbname2</db>
            <name>db2</name>
        </connection>
    </connections>
</mongo> 
- 愉快的使用
public class CommentDAO {
    private MongoDB mongoDB = MongoFactory.getDb();
    
    public Comment getComment(long id) {
        return mongoDB.getCollection(Comment.class).find(Filters.eq("id", id)).first();
    }
    
    public void insert(Comment comment) {
        mongoFactory.getCollection(Comment.class).insertOne(comment);
    }
    
    public void update(Comment comment) {
        mongoDB.getCollection(Comment.class).replaceOne(Filters.eq("id", comment.getId()), comment);
    }
} 
 JarCasting
 JarCasting