Springboot最简单的整合使用Mongodb案例

创建一个springboot项目

然后pom.xml文件:(从pom文件里面可以看出,就一个包导入就可以了。)



   4.0.0

   com.jc
   mongodemo
   0.0.1-SNAPSHOT
   jar

   mongodemo
   Demo project for Spring Boot

   
      org.springframework.boot
      spring-boot-starter-parent
      2.0.5.RELEASE
       
   

   
      UTF-8
      UTF-8
      1.8
   

   
      
      
         org.springframework.boot
         spring-boot-starter-data-mongodb
      
      
         org.springframework.boot
         spring-boot-starter-web
      

      
         org.springframework.boot
         spring-boot-starter-test
         test
      
   

   
      
         
            org.springframework.boot
            spring-boot-maven-plugin
         
      
   






然后,yml文件:

spring:
  data:
    mongodb:
      uri: mongodb://IP地址:端口(27017或者你设置的)/(数据库的名称)

到此,配置的条条框框(虽然没啥)已经搞完,那么我们开始进入使用环节。

第一步是干嘛呢?

先看下,mongodb里面数据的格式:

Springboot最简单的整合使用Mongodb案例_第1张图片

从上边截图可以看到,这里面的Collections(大集合),其实就是类似mysql里面的表的那种东西。然后右边的框,可以看到有个Key的概念,其实就是指这个Collections(大集合)里面,你需要获取的小集合信息,在这个小集合里面,实际上是对应一个实体类的,取值的时候就get方法就可以。

上面是简单的介绍一下,其实我们还是看代码吧:

那么,我们先来建一个实体类吧,

UserEntity:

package com.jc.mongodemo.pojo;

import java.io.Serializable;

/**
 * @Author: JCccc
 * @CreateTime: 2018-09-28
 * @Description:
 */



public class UserEntity implements Serializable {
    private static final long serialVersionUID = -3258839839160856613L;
    private Long id;
    private String userName;
    private String passWord;
    private String type;

    @Override
    public String toString() {
        return "UserEntity{" +
                "id=" + id +
                ", userName='" + userName + '\'' +
                ", passWord='" + passWord + '\'' +
                ", type='" + type + '\'' +
                '}';
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public Long getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassWord() {
        return passWord;
    }

    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

好了,这里需要注意的是,上面实体类的字段,是必须一 一 对 应 mongodb里面某个小集合的 字段的!!!!!否则 ,不能成功取数据!(当然我们这教程是从0开始, 所以我们规定好,插入就行了。 后面取当然也就一一对应了。 但是如果你是直接上来就取数据,那么你就得注意对应了!

然后写个方法类吧,我这里没严格解耦,

UserDaoImpl:

package com.jc.mongodemo.dao;

import com.jc.mongodemo.pojo.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * @Author: JCccc
 * @CreateTime: 2018-09-28
 * @Description:
 */
@Component
public class UserDaoImpl  {

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 创建对象
     * @param user
     */

    public void saveUser(UserEntity user) {
        mongoTemplate.save(user);
    }


    public List findUserByType(String type) {
        Query query=new Query(Criteria.where("type").is(type));
        List userlist =  mongoTemplate.findAllAndRemove(query , UserEntity.class);
        return userlist;
    }

    public List findUserByCollection(String CollectionName,String type) {
        Query query=new Query(Criteria.where("type").is(type));
        List userlist =  mongoTemplate.findAllAndRemove(query , UserEntity.class,CollectionName);
        return userlist;
    }


    /**
     * 根据用户名查询对象
     * @param userName
     * @return
     */

    public UserEntity findUserByUserName(String userName) {
        Query query=new Query(Criteria.where("userName").is(userName));
        UserEntity user =  mongoTemplate.findOne(query , UserEntity.class);
        return user;
    }

    /**
     * 更新对象
     * @param user
     */

    public void updateUser(UserEntity user) {
        Query query=new Query(Criteria.where("id").is(user.getId()));
        Update update= new Update().set("userName", user.getUserName()).set("passWord", user.getPassWord());
        //更新查询返回结果集的第一条
        mongoTemplate.updateFirst(query,update,UserEntity.class);
        //更新查询返回结果集的所有
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
    }

    /**
     * 删除对象
     * @param id
     */

    public void deleteUserById(Long id) {
        Query query=new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query,UserEntity.class);
    }
}

从上边可以看到,已经开始使用mongodb了!!!! 都开始往里面CRUD了!  关键点在于啥??? 
关键点: 

@Autowired    private MongoTemplate mongoTemplate;   

这就是告诉项目,我这里要注入mongodb的使用!

好了,然后我们去test里面去调用一下方法结束我们这个简单到极致的教程吧:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MongodemoApplicationTests {

   @Test
   public void contextLoads() {
   }


   @Autowired
   private UserDaoImpl userDao;

   //...............空着先
}



 

然后开始尝试调用方法:

这是增加一个用户信息。


public void testSaveUser() throws Exception {
   UserEntity user=new UserEntity();
   user.setId(106l);
   user.setUserName("小凯");
   user.setPassWord("fffooo123");
   user.setType("A");
   userDao.saveUser(user);
}

这是查询一个用户信息。


public void findUserByUserName(){
   UserEntity user= userDao.findUserByUserName("小凯");
   System.out.println("user is "+user);
}


这是更新一个用户信息。


public void updateUser(){
   UserEntity user=new UserEntity();
   user.setId(106l);
   user.setUserName("大凯");
   user.setPassWord("11223344");
   userDao.updateUser(user);
}

这是删除一个用户信息。

public void deleteUserById(){
   userDao.deleteUserById(106l);
}

好了,到此结束吧。
ps: 我这个例子,用户id我用的long类型哈,所以每个数字后面的l是让数字变成Long类型的意思。

 

你可能感兴趣的:(Mongodb,跟我一起玩转,SpringBoot)