SpringBoot整合MongoDB实现增删改查、复合查询 绝地灬酷狼 2022-01-14 12:55 276阅读 0赞 **1、向pom.xml中添加依赖包** <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> **2、编辑application.yml** spring: data: mongodb: host: 192.168.58.129 //IP地址 database: studentdb //数据库名 **3、编写实体类** 解释一下以下用到的的几个注解: `@Id` :文档的唯一标识,在mongodb中为ObjectId,它是唯一的,通过时间戳+机器标识+进程ID+自增计数器(确保同一秒内产生的Id不会冲突)构成。 `@Document` :把一个java类声明为mongodb的文档,可以通过collection参数指定这个类对应的文档。@Document(collection=”mongodb”) mongodb对应表 /** * 学生类 */ @Document(collection = "student") //指定对应的表名 public class Student implements Serializable { @Id private Integer id; private String name; private Integer age; private Integer gradeId; private Grade grade; public Grade getGrade() { return grade; } public void setGrade(Grade grade) { this.grade = grade; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Integer getGradeId() { return gradeId; } public void setGradeId(Integer gradeId) { this.gradeId = gradeId; } @Override public String toString() { return getId()+getName()+getAge()+getGradeId(); } } /** * 年级类 */ public class Grade implements Serializable { private Integer id; private String gradeName; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getGradeName() { return gradeName; } public void setGradeName(String gradeName) { this.gradeName = gradeName; } } **4、StudentDao接口** 提供增删改查 MongoDB 接口 public interface StudentDao { //查询所有 List<Student> findAll(); //增加 void add(Student student); //删除 void delete(Integer id); //修改 void update(Student student); //符合查询——两表联查 List<Map> fuhefind(); } **5、StudentDaoImpl实现类** @Component public class StudentDaoImpl implements StudentDao { @Autowired private MongoTemplate mongoTemplate; @Override public List<Student> findAll() { return mongoTemplate.findAll(Student.class); } @Override public void add(Student student) { mongoTemplate.save(student); } @Override public void delete(Integer id) { Student student=mongoTemplate.findById(1,Student.class); mongoTemplate.remove(student); } @Override public void update(Student student) { //修改的条件 Query query = new Query(Criteria.where("id").is(student.getId())); //修改的内容 Update update = new Update(); update.set("name",student.getName()); mongoTemplate.updateFirst(query,update,Student.class); } @Override public List<Map> fuhefind() { LookupOperation lookupOperation=LookupOperation.newLookup().from("grade").localField("_id").foreignField("_id").as("grade"); Aggregation aggregation=Aggregation.newAggregation(lookupOperation); List<Map> result=mongoTemplate.aggregate(aggregation,"student",Map.class).getMappedResults(); return result; } } **6、单元测试** @RunWith(SpringRunner.class) @SpringBootTest public class SpringbootMongdbApplicationTests { @Autowired private StudentDao studentDao; @Test public void findAll() { List<Student> students=studentDao.findAll(); System.out.println("查询到的数据的条数:"+students.size()); for (Student st:students ) { System.out.println(st.toString()); } } @Test public void add(){ Student student=new Student(); student.setId(4); student.setName("李名明"); student.setAge(19); student.setGradeId(3); studentDao.add(student); findAll(); } @Test public void delete(){ studentDao.delete(4); findAll(); } @Test public void update(){ Student student=new Student(); student.setId(2); student.setName("王麻子"); student.setAge(15); student.setGradeId(1); studentDao.update(student); findAll(); } @Test public void fehefind(){ List<Map> maps = studentDao.fuhefind(); for (Map map:maps ) { System.out.println(map); } } } 然后就自己去琢磨吧! ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI1MzI4Ng_size_16_color_FFFFFF_t_70] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzI1MzI4Ng_size_16_color_FFFFFF_t_70]: /images/20220114/66425c26ed64475185b55509953de256.png
还没有评论,来说两句吧...