Mongodb联合查询
Mongodb使用联合查询的重点需要添加@DBref 这样的话不会将整个文档保存,只会保存关联集合的id
- package com.java.web;
- import java.util.List;
- import org.mongodb.framework.pojo.GeneralBean;
- import org.springframework.data.mongodb.core.mapping.DBRef;
- import org.springframework.data.mongodb.core.mapping.Document;
- @Document
- public class Clazzes extends GeneralBean {
- /**
- *
- */
- private static final long serialVersionUID = -1151165767494158740L;
- private String classRoom;
- private String classTeacher;
- @DBRef
- private List<Student> student;
- public String getClassRoom() {
- return this.classRoom;
- }
- public void setClassRoom(String classRoom) {
- this.classRoom = classRoom;
- }
- public String getClassTeacher() {
- return this.classTeacher;
- }
- public void setClassTeacher(String classTeacher) {
- this.classTeacher = classTeacher;
- }
- public List<Student> getStudent() {
- return this.student;
- }
- public void setStudent(List<Student> student) {
- this.student = student;
- }
- }
- package com.java.web;
- import org.mongodb.framework.dao.GeneralDao;
- public interface ClazzesDao extends GeneralDao<Clazzes>{
- }
- package com.java.web;
- import org.mongodb.framework.dao.GeneralDaoImpl;
- import org.springframework.stereotype.Repository;
- @Repository
- public class ClazzesDaoImpl extends GeneralDaoImpl<Clazzes> implements ClazzesDao{
- @Override
- protected Class<Clazzes> getEntityClass() {
- // TODO Auto-generated method stub
- return Clazzes.class;
- }
- }
- package com.java.web;
- import org.mongodb.framework.service.GeneralServiceImpl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.data.mongodb.core.query.Criteria;
- import org.springframework.data.mongodb.core.query.Query;
- import org.springframework.stereotype.Service;
- import com.java.manage.pojo.User;
- @Service
- public class ClazzesService extends GeneralServiceImpl<Clazzes> {
- @Autowired
- private ClazzesDao clazzDao;
- /**
- * 根据用户id查询用户
- *
- * @param id
- * @return
- * @throws Exception
- */
- public Clazzes findClazzById(String id) throws Exception {
- Query query = new Query();
- query.addCriteria(Criteria.where("_id").is(id));
- // User user= this.userDao.findOneById(id);
- Clazzes clazz = this.clazzDao.findOneByQuery(query);
- if (clazz != null)
- return clazz;
- else
- return null;
- }
- }
- package com.java.web;
- import org.mongodb.framework.pojo.GeneralBean;
- import org.springframework.data.mongodb.core.mapping.DBRef;
- import org.springframework.data.mongodb.core.mapping.Document;
- @Document
- public class Student extends GeneralBean {
- /**
- *
- */
- private static final long serialVersionUID = 5697238875408915428L;
- /**
- *
- */
- private String name;
- private int age;
- private String enterYear;
- @DBRef
- private Clazzes clazzes;
- public String getName() {
- return this.name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return this.age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getEnterYear() {
- return this.enterYear;
- }
- public void setEnterYear(String enterYear) {
- this.enterYear = enterYear;
- }
- public Clazzes getClazzes() {
- return this.clazzes;
- }
- public void setClazzes(Clazzes clazzes) {
- this.clazzes = clazzes;
- }
- }
- package com.java.web;
- import org.mongodb.framework.dao.GeneralDao;
- public interface StudentDao extends GeneralDao<Student>{
- }
- package com.java.web;
- import org.mongodb.framework.dao.GeneralDaoImpl;
- import org.springframework.stereotype.Repository;
- @Repository
- public class StudentDaoImpl extends GeneralDaoImpl<Student> implements StudentDao{
- @Override
- protected Class<Student> getEntityClass() {
- // TODO Auto-generated method stub
- return Student.class;
- }
- }
- package com.java.web;
- import org.mongodb.framework.dao.GeneralDaoImpl;
- import org.springframework.stereotype.Repository;
- @Repository
- public class StudentDaoImpl extends GeneralDaoImpl<Student> implements StudentDao{
- @Override
- protected Class<Student> getEntityClass() {
- // TODO Auto-generated method stub
- return Student.class;
- }
- }
上面贴的都是基本的代码,下面进行junit测试
- package org.java.test;
- import java.util.ArrayList;
- import java.util.List;
- import org.junit.Before;
- import org.junit.Test;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.transaction.annotation.Transactional;
- import com.java.web.Clazzes;
- import com.java.web.ClazzesService;
- import com.java.web.Student;
- import com.java.web.StudentDao;
- import com.java.web.StudentService;
- public class TestInertStudentClass {
- ApplicationContext ac=null;
- @Before
- public void befort(){
- ac=new ClassPathXmlApplicationContext(new String[]{"application-config.xml","dispatcher-servlet.xml","dispatcher-shiro.xml"});
- }
- /**
- * 添加学生并且绑定班级
- * @throws Exception
- */
- @Test
- public void InsertStudent() throws Exception {
- StudentDao studentdao=(StudentDao) ac.getBean("studentDaoImpl");
- List<Student> studentList = new ArrayList<Student>();
- ClazzesService clazzService = (ClazzesService)ac.getBean("clazzesService");
- Clazzes clazz =clazzService.findClazzById("59658fd4d724ccce5ee5cc5b");
- if(clazz!=null){
- for(int i=0;i<10;i++){
- Student student = new Student();
- student.setAge(11);
- student.setClazzes(clazz);
- student.setEnterYear("2015");
- student.setName("学生"+i);
- studentdao.insert(student);
- studentList.add(student);
- }
- clazz.setStudent(studentList);
- clazzService.save(clazz);
- }
- }
- /**
- * 初始化一个班级
- * @throws Exception
- */
- @Test
- public void InsertClazz() throws Exception{
- ClazzesService clazzService = (ClazzesService)ac.getBean("clazzesService");
- Clazzes c = new Clazzes();
- c.setClassRoom("2014年1班");
- c.setClassTeacher("Mrs zhang");
- c.setStudent(new ArrayList());
- clazzService.insert(c);
- }
- /**
- * 通过联合查询获取班级下的所有学生信息
- * @throws Exception
- */
- @Test
- public void getAllClazz() throws Exception{
- ClazzesService clazzService = (ClazzesService)ac.getBean("clazzesService");
- Clazzes c = clazzService.findClazzById("59658fd4d724ccce5ee5cc5b");
- for(Student s :c.getStudent()){
- System.out.println("联合查询学生姓名:"+s.getName());
- }
- }
- /*
- * 通过学生的id获取学生的班级
- */
- @Test
- public void findAllStudent() throws Exception{
- StudentService s = (StudentService)ac.getBean("studentService");
- Student ss = s.findUserById("59658831d724a1cb751c3ef8");
- //通过联合查询获取班级信息
- System.out.println(ss.getClazzes().getClassRoom());
- }
- /**
- * 删除学生的时候执行联合删除班级中的学生
- * @throws Exception
- */
- @Test
- public void deleteStudent() throws Exception{
- StudentService s = (StudentService)ac.getBean("studentService");
- ClazzesService clazzService = (ClazzesService)ac.getBean("clazzesService");
- Student ss = s.findUserById("596591e1d7241f4590bddef5");
- List<Student> list= ss.getClazzes().getStudent();
- List<Student> listnew = new ArrayList<Student>();
- for(Student stu:list){
- if(!stu.getId().equals("596591e1d7241f4590bddef5")){
- listnew.add(stu);
- }
- }
- Clazzes c = ss.getClazzes();
- c.setStudent(listnew);
- clazzService.save(c);
- s.remove(ss);
- }
- }
Mongodb联合查询的更多相关文章
- MongoDB联合查询 -摘自网络
1.简单手工关联 首先将结果查询出来放到一个变量里面,然后再查询 u = db.user.findOne({author:"wangwenlong"}); for(var p = ...
- Spring DATA MongoDB @DBref查询,or和and联合查询
@DBref文档关联,在按该类型查询的时候,在字段名后加上关联表的字段名即可,如: Criteria.where("bloggroup.$id"), $id代表关联表的oid字段. ...
- mongodb中查询返回指定字段
mongodb中查询返回指定字段 在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段. ...
- TODO:MongoDB的查询更新删除总结
TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...
- SQL联合查询:子表任一记录与主表联合查询
今天有网友群里提了这样一个关于SQL联合查询的需求: 一.有热心网友的方案: 二.我的方案: select * from ( select a.*,(select top 1 Id from B as ...
- SQL 语句与性能之联合查询和联合分类查询
select * from t1 left join t2 on t2.sysno =t1.ASysNo left join t3 on t3.sysno =t2.ASysNo left join t ...
- myBatis中 collection 或 association 联合查询 中column 传入多个参数值
下面是一个树形结构表自连接 联合查询 Demo <resultMap id="BaseResultMap" type="com.maidan.daas.entit ...
- EF联合查询,如何设置条件过滤从表数据
最近在使用EF进行联合查询过程中,遇到了一件不开心的事情. 已禁用懒加载 var post = await _repository.GetMyPostById(blogId, postId).AsNo ...
- 【转】Mysql联合查询union和union all的使用介绍
Mysql的联合查询命令UNION和UNION ALL,总结了使用语法和注意事项,以及学习例子和项目例子,需要的朋友可以参考下 一.UNION和UNION ALL的作用和语法 UNION 用于合... ...
随机推荐
- oracle 例外
一.例外分类oracle将例外分为预定义例外.非预定义例外和自定义例外三种.1).预定义例外用于处理常见的oracle错误.2).非预定义例外用于处理预定义例外不能处理的例外.3).自定义例外用于处理 ...
- GitHub使用(四) - 关于分支Branch
1. 什么是分支Branch? 我初步的理解为:GitHub仓库默认有一个master的分支,当我们在master分支开发过程中接到一个新的功能需求,我们就可以新建一个分支同步开发而互不影响,开发完成 ...
- java从命令行接收多个数字,求和程序分析
问题:编写一个程序,此程序从命令行接收多个数字,求和之后输出结果. 1.设计思想 (1)声明两个变量接收输入的字符串 (2)将字符串转换成int类型 (3)输出求和 2.程序流程图 3.源程序代码 i ...
- 二、js的控制语句
二.流程控制语句 ECMA-262规定了一组流程控制语句.语句定义了ECMAScript中的主要语法,语句通常由一个或者多个关键字来完成给定的任务.诸如:判断.循环.退出等. 语句的定义 在E ...
- spring 内部工作机制(一)
Spring内部机制的内容较多,所以打算多分几个阶段来写. 本章仅探索Spring容器启动做了哪些事: 前言: 都说Spring容器就像一台构造精妙的机器,此话一点不假,我们通过配置文件向机器传达控制 ...
- Android 导入引用第三方项目
环境:Android Studio 1.4 1 以源工程形式导入 第一步,导入项目 File--New--Import Module--->设置导入后的项目名称 第二部,在自己工程中添加Depe ...
- Win CE 6.0 获取手持机GPS定位1----基础知识 (C#)
一.GPS全球定位系统的组成 (1)GPS卫星(空间部分) 由沿接近环形的地球轨道运行的24颗卫星组成,位于距地表20200千米的高空,均匀分布在6个轨道面上(每个轨道面4颗),轨道倾角55度.此外, ...
- Jquery实现鼠标移到某个对象,弹出显示层。
/** * 鼠标移上去显示层 * @param divId 显示的层ID * @returns */ $.fn.myHoverTip = function(divId) { var div = $(& ...
- 深入理解计算机系统(4.1)------Y86指令集体系结构
本章我们将进入处理器体系结构介绍的神秘海洋中,我们熟悉的手机,电脑等设备的核心硬件都离不开处理器.处理器可以称的上是人类创造的最复杂的系统之一,一块手指大小的硅片,可以容纳一个完整的高性能处理器.大的 ...
- JMS 基础
1. JMS基本概念 JMS(Java Message Service) 即Java消息服务.它提供标准的产生.发送.接收消息的接口简化企业应用的开发. 它支持两种消息通信模型:点到点(point-t ...