springboot连接MongoDB

  由于要使用SpringBoot连接MongoDB,网上找了很多的资料都是看的很头疼,不太完整,最后终于参考最下面那篇博客成功连接MongoDB与springBoot.
  1.创建一个SpringBoot,勾选MongoDB,如果不勾选导入MongoDB 的依赖也行,如下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

2.在application.properties里边添加数据库连接,对号入座,直接中文,例子就不给了

spring.data.mongodb.uri=mongodb://用户名:密码@地址:端口/数据库

3.写模板类

写一个模板类 UserInfo
为了节省空间.,本文用/**/代替get、set方法。

public class UserInfo implements Serializable {
    private Long id;
    private String userName;
    private String password;

    /*set() 、get()、toString()*/
}

4.写业务类的接口

再写一个业务类的接口UserInfoManager

public interface UserInfoManager {
    /**             增                        */
    /**
     * 增加对象
     */
    public void insertUser(UserInfo user);

    /**             删                        */
    /**
     * 根据id删除对象
     */
    public void deleteUserById(Long id);

    /**             改                       */
    /**
     * 异步 - 更新缓存(单个)
     */
    public void refreshCache(UserInfo user);

    /**             查                       */
    /**
     * 根据userName查询对象 
     */
    public UserInfo findUserByUserName(String userName);

    public List<UserInfo> findUsersByUserName(String userName);

    /**
     * 根据id查询对象
     */
    public UserInfo findUserById(Long id);
    /**
     * 找出所有 对象
     */
    public List<UserInfo> findAll();
}

5.业务类的实现

业务类的实现UserInfoManagerImp

@Service("UserInfoManager")
public class UserInfoManagerImp implements UserInfoManager{
    protected static final Logger logger = LoggerFactory.getLogger(UserInfoManagerImp.class);

    @Resource(name = "mongoTemplate")
    private MongoOperations mongoOperation;

    @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 获取mongoDB连接
     *
     * @param collectionName 连接名称
     * @return
     */
    @SuppressWarnings("unused")
    private DBCollection getCollection(String collectionName) {
        DBCollection dc = (DBCollection) mongoOperation.getCollection(collectionName);
        return dc;
    }


    /**                 增                                       */
    @Override
    public void insertUser( UserInfo user) {
        mongoOperation.insert(user);
    }

    /**                 删                                       */
    //根据Id删除数据
    @Override
    public void deleteUserById(Long id) {
        Query query = new Query(Criteria.where("_id").is(id));
        mongoOperation.remove(query, "userInfo");
    }


    /**                 改                                       */
    @Override
    public void refreshCache(UserInfo user) {
        if (null == user || user.getId() == null) {
            return;
        }
        mongoOperation.save(user);
    }


    /**                 查                                       */
    @Override
    public UserInfo findUserByUserName(String userName) {
        Query query = new Query(Criteria.where("userName").is(userName));
        return mongoOperation.findOne(query, UserInfo.class);
    }

    @Override
    public List<UserInfo> findUsersByUserName(String userName) {
        Query query = new Query(Criteria.where("userName").is(userName));
        return mongoOperation.find(query, UserInfo.class);
    }

    @Override
    public UserInfo findUserById(Long id) {
        Query query = new Query(Criteria.where("id").is(id));
        return mongoOperation.findOne(query, UserInfo.class);
    }

    @Override
    public List<UserInfo> findAll() {
        return mongoOperation.findAll(UserInfo.class, "test_promotion");
    }
}

6.写测试类

最后写测试类UserInfoManagerTest

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserInfoManagerTest {
    private static final Logger LOGGER = LoggerFactory.getLogger(UserInfoManagerTest.class);


    @Autowired
    private UserInfoManager mongoDBManager;

    /**  增   */
    @Test
    public void testInsertUser(){
        UserInfo user = new UserInfo();
        user.setId(7L);
        user.setUserName("路人甲");
        user.setPassword("123456");

        LOGGER.info("-------------------- 增加数据开始  --------------------");
        mongoDBManager.insertUser(user);
        LOGGER.info("-------------------- 增加数据结束  --------------------");
    }


    /**  删      */
    @Test
    public void testDeleteUserById() {
        LOGGER.info("-------------------- 删除数据开始  --------------------");
        mongoDBManager.deleteUserById(2L);
        LOGGER.info("-------------------- 删除数据结束  --------------------");
    }

    /**  改     */
    @Test
    public void testUpdateUser() {
        LOGGER.info("-------------------- 改写数据开始  --------------------");
        UserInfo user = new UserInfo();
        user.setId(6L);
        user.setUserName("lisi");
        user.setPassword("lisi");
        mongoDBManager.refreshCache(user);
        LOGGER.info("-------------------- 改写数据开始  --------------------");
    }


    /**  查     */
    @Test
    public void testFindAll() {
        LOGGER.info("-------------------- 查找所有数据开始  --------------------");
        List<UserInfo> list = mongoDBManager.findAll();
        for(UserInfo user:list) {
            LOGGER.info("useid:" + user.getId() 
            + ",userName:" + user.getUserName() + ",password:" + user.getPassword());
        }
        LOGGER.info("-------------------- 查找所有数据结束  --------------------");
    }

    @Test
    public void testFindUserByUserName() {
        LOGGER.info("-------------------- 查找数据开始  --------------------");
        List<UserInfo> list = mongoDBManager.findUsersByUserName("lisi");
        for(UserInfo user:list) {
            LOGGER.info("useid:" + user.getId() 
            + ",userName:" + user.getUserName() + ",password:" + user.getPassword());
        }
        LOGGER.info("-------------------- 查找数据结束  --------------------");
    }

    @Test
    public void testFindUserById() {
        LOGGER.info("-------------------- 查找数据开始  --------------------");
        UserInfo userInfo = mongoDBManager.findUserById(2L);
        LOGGER.info("useid:" + userInfo.getId() 
                    + ",userName:" + userInfo.getUserName() + ",password:" + userInfo.getPassword());
        LOGGER.info("-------------------- 查找数据结束  --------------------");
    }


}

测试可以通过,注意:
数据库里边没有内容的时候查找会出现错误,是因为没有数据,还有查找的时候需要自己添加数据库的连接名,自行理解。

参考博客Spring Boot中使用MongoDB数据库的方法

猜你喜欢

转载自blog.csdn.net/u010986518/article/details/80626687