文档章节

mongo多态保存

go4it
 go4it
发布于 2016/10/06 19:41
字数 280
阅读 18
收藏 0

##Org

public class Org {

    @Id
    private String id;

    private String name;

    private Set<Employee> employees;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Set<Employee> getEmployees() {
        return employees;
    }

    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }
}

##employee

public abstract class Employee {

    protected String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

##leader

public class Leader extends Employee{

    private String address;

    private String title;

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}

##worker

public class Worker extends Employee{

    private String mobile;

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
}

##保存实例

@Test
	public void testPolymorphic() {
		Org org = new Org();
		org.setName("tech");

		Leader leader = new Leader();
		leader.setName("leader");
		leader.setAddress("fj");
		leader.setTitle("vp");

		Worker worker = new Worker();
		worker.setName("worker");
		worker.setMobile("15909898989");

		Set<Employee> employees = new HashSet<>();
		employees.add(leader);
		employees.add(worker);

		org.setEmployees(employees);
		orgDao.save(org);
	}

##mongo里的数据保存了class

{
    "_id" : ObjectId("57f635e0af7b3807e8101884"),
    "_class" : "com.codecraft.demo.model.Org",
    "name" : "tech",
    "employees" : [ 
        {
            "mobile" : "15909898989",
            "name" : "worker",
            "_class" : "com.codecraft.demo.model.Worker"
        }, 
        {
            "address" : "fj",
            "title" : "vp",
            "name" : "leader",
            "_class" : "com.codecraft.demo.model.Leader"
        }
    ]
}

##取数据

@Test
	public void testFind(){
		Org org = orgDao.findOne("57f635e0af7b3807e8101884");
		Set<Employee> employees = org.getEmployees();
		for(Employee emp : employees){
			if(emp instanceof Leader){
				System.out.println(emp);
			}else if(emp instanceof Worker){
				System.out.println(emp);
			}
		}
	}

##docs

© 著作权归作者所有

共有 人打赏支持
go4it
粉丝 70
博文 820
码字总数 692724
作品 0
深圳
私信 提问
mongo主库地址变更,从库修改数据源IP

杀mongo进程时请不要kill -9!!!你可以多kill几次 ,或kill -2 同步时间:/usr/sbin/ntpdate pool.ntp.org 1. 切换到mongo用户,修改配置文件, 注释 #slave=true #source= 旧IPx.x.x.x:270...

beck_716
2016/11/24
0
0
Python搭建BT资源搜索站

通过前面四篇文章,我们已经采集到了N多BT种子,并且已经将种子中包含的一些信息保存在Mongo数据库中,接下来就是如何将Mongo中的数据通过WEB服务器提供给搜索引擎,提供给一些浏览者。即,如...

mickelfeng
01/12
0
0
利用scrapy 爬取OSChina全站URL

以 oschina 为例: 生成项目 配置 编辑 settings.py, 加入以下(主要是User-agent和piplines): 编辑 items.py, 内容如下: 编辑 pipelines.py, 内容如下: 生成模板spider然后修改: 编辑 spider...

巴鲁
2016/06/15
262
0
使用 Kafka 和 MongoDB 进行 Go 异步处理

在我前面的博客文章 “我的第一个 Go 微服务:使用 MongoDB 和 Docker 多阶段构建” 中,我创建了一个 Go 微服务示例,它发布一个 REST 式的 http 端点,并将从 HTTP POST 中接收到的数据保存...

作者: Melvin Vivas
08/17
0
0
scrapy 爬取全站URL

以 oschina 为例: 生成项目 配置 编辑 settings.py, 加入以下(主要是User-agent和piplines): 编辑 items.py, 内容如下: 编辑 pipelines.py, 内容如下: 生成模板spider然后修改: 编辑 spider...

好铁
2016/04/14
1K
2

没有更多内容

加载失败,请刷新页面

加载更多

AutoCAD_系统变量

https://baike.sogou.com/v53561514.htm?fromTitle=cad%E5%8F%98%E9%87%8F lunits 设置线性单位。1 科学 2 小数 3 工程 4 建筑 5 分数 6 windesk...

一个小妞
11分钟前
2
0
点播转码相关常见问题及排查方式

概述: 点播转码目前涉及用户上传自动触发转码、通过SubmitTranscodeJobs接口触发转码等方式,会出现用户转码失败的情况,这当中有用户源片的问题、也有用户设置转码参数的原因以及相关资源性...

阿里云云栖社区
13分钟前
1
0
图片base64预览及上传PHP处理

1、前端代码 <div id="img"/> <input type="file" id="img-select"/> <input type='button' id='submit'/> var newUrl; function imgPreview() {//将图片转成base64,实现预览效果 var file......

葬-花
15分钟前
0
0
Iris框架

1、安装iris: $ go get -u github.com/kataras/iris 2、golang iris web项目热重启 # 安装rizla包 $ go get -u github.com/kataras/rizla # 热重启方式启动iris项目 $ rizla main.go......

Liens
23分钟前
3
0
初探sentinel实践思考

简单说下, sentinel的优势: 友好的控制面板,支持实时监控 多种限流。支持QPS限流,线程数限流,多种限流策略,如:直接拒绝,匀速模式(漏斗),冷启动(如设置限制1000,延迟10秒,那第一...

爱吃大肉包
24分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部