原创

Spring Boot(四)——Mongodb

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lyhkmm/article/details/78753921

Mongodb介绍

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

使用配置

1、在pom.xml中添加相关依赖:

<!--mongodb的模块-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-mongodb</artifactId>
	</dependency>

2、在application.properties添加mongodb的连接地址:

spring.data.mongodb.uri=mongodb://localhost:27017/mydb
#spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/mydb   name为用户名、pass为密码,如果没有设置可以省略
3、创建用户实体类:
package com.lyh.demo.entity;

import java.io.Serializable;

public class UserEntity implements Serializable{
    private long id;
    private String userName;
    private String password;

    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;
    }

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

4、创建Dao层接口和实现类:

UserDao的接口

package com.lyh.demo.dao;

import com.lyh.demo.entity.UserEntity;
public interface UserDao {

    public void saveUser(UserEntity user);

    public UserEntity findUserByUserName(String userName);

    public int updateUser(UserEntity user);

    public void deleteUserById(Long id);

}
UserDao的实现类

package com.lyh.demo.dao.impl;

import com.lyh.demo.dao.UserDao;
import com.lyh.demo.entity.UserEntity;
import com.mongodb.WriteResult;
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;

@Component
public class UserDaoImpl implements UserDao{
    @Autowired
    private MongoTemplate mongoTemplate;
    /**
      * @Author:linyuanhuang
      * @Description:创建对象
      * @Date:17:44 2017/12/8
      * @param user
    */
    @Override
    public void saveUser(UserEntity user) {
        mongoTemplate.save(user);
    }

    /**
      * @Author:linyuanhuang
      * @Description:根据用户名查询对象
      * @Date:17:44 2017/12/8
      * @param userName
    */
    @Override
    public UserEntity findUserByUserName(String userName) {
        Query query=new Query(Criteria.where("userName").is(userName));
        UserEntity user =  mongoTemplate.findOne(query , UserEntity.class);
        return user;
    }
    /**
      * @Author:linyuanhuang
      * @Description:更新对象
      * @Date:17:45 2017/12/8
      * @param user
    */
    @Override
    public int 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());
        //更新结果集的第一条数据
        WriteResult result =mongoTemplate.updateFirst(query,update,UserEntity.class);
        //更新结果集的全部数据
        // mongoTemplate.updateMulti(query,update,UserEntity.class);
        if(result!=null)
            return result.getN();
        else
            return 0;
    }
    /**
      * @Author:linyuanhuang
      * @Description:删除对象
      * @Date:17:45 2017/12/8
      * @Param:id
    */
    @Override
    public void deleteUserById(Long id) {
        Query query=new Query(Criteria.where("id").is(id));
        mongoTemplate.remove(query,UserEntity.class);
    }
}

关于mongoTemplate的api有很多,大家可以去相应的网站查询。

5、调用方法:

package com.lyh.demo.controller;

import org.springframework.web.bind.annotation.RestController;
import com.lyh.demo.dao.UserDao;
import com.lyh.demo.entity.UserEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;

@RestController
public class HelloWorldController {

    @Autowired
    private UserDao userDao;

    @RequestMapping("/helloWorld")
    public String helloWorld(){
        return "HelloWorld";
    }

    @RequestMapping("/save")
    public String testSaveUser() throws Exception {
        UserEntity user=new UserEntity();
        user.setId(520L);
        user.setUserName("小林");
        user.setPassword("111111");
        userDao.saveUser(user);
        return "保存成功";
    }

    @RequestMapping("/get")
    public String findUserByUserName(){
        UserEntity user= userDao.findUserByUserName("小林");
        System.out.println("user :"+user.toString());
        return "user :"+user.toString();
    }

    @RequestMapping("/update")
    public String updateUser(){
        UserEntity user=new UserEntity();
        user.setId(520L);
        user.setUserName("小林");
        user.setPassword("123456");
        userDao.updateUser(user);
        return "更新成功";
    }

    @RequestMapping("/delete")
    public String  deleteUserById(){
        userDao.deleteUserById(520L);
        return "删除成功";
    }
}

通过浏览器测试验证

1、浏览器输入地址:http://localhost:8080/save,如下图:


其他三项的测试这里就不展示了,可以使用mongoVUE工具或登录服务器用命令来查看数据。

到此springboot对应mongodb的增删改查功能已经全部实现。

GitHub地址:https://github.com/lyhkmm/spring-boot-examples/tree/master/spring-boot-mongodb


正文到此结束
Loading...