Spring Boot(四)——Mongodb

来源:互联网 发布:线性时间选择算法c语言 编辑:程序博客网 时间:2024/06/05 05:24
Spring Boot 学习笔记:                          

Spring Boot(一)——入门环境搭建      Spring Boot(二)——MyBatis             Spring Boot(三)——Redis  
Spring Boot(四)——Mongodb          Spring Boot(五)——RabbitMQ         Spring Boot(六)——Spring Data Jpa

GitHub地址:

https://github.com/lyhkmm/SpringBoot

一、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;@Componentpublic 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;@RestControllerpublic 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的增删改查功能已经全部实现。

下一章:Spring Boot(五)——RabbitMQ  GitHub案例地址:SpringBoot+Mongodb

原创粉丝点击