zoukankan      html  css  js  c++  java
  • spring boot(十一):Spring boot中mongodb的使用

    mongodb简介

      传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,

      MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

    mongodb使用

    1、pom包配置

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

    2、在application.properties中添加配置

    spring.data.mongodb.host=127.0.0.1
    spring.data.mongodb.port=27017
    spring.data.mongodb.username=root
    spring.data.mongodb.password=123456
    spring.data.mongodb.database=admin

    或者

    spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test

    多个IP集群可以采用以下配置:

    spring.data.mongodb.uri=mongodb://user:pwd@ip1:port1,ip2:port2/database

    3、创建数据实体

    package cn.cnki.ref.pojo;
    
    import java.io.Serializable;
    
    public class User implements Serializable {
    
        private int id;
        private String name;
        private String username;
        private int age;
        private String phone;
        private String email;
        //无参构造函数必须有,ORM框架调用的就是无参构造函数
        public User() {
    
        }
        public User(int id, String name, String username, int age, String phone, String email) {
            super();
            this.id = id;
            this.name = name;
            this.username = username;
            this.age = age;
            this.phone = phone;
            this.email = email;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public String getPhone() {
            return phone;
        }
        public void setPhone(String phone) {
            this.phone = phone;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", username=" + username + ", age=" + age + ", phone=" + phone
                    + ", email=" + email + "]";
        }
    }
    View Code

    4.UserMongodbServiceImpl

    package cn.cnki.ref.serviceimpl;
    
    import cn.cnki.ref.pojo.User;
    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.Service;
    
    @Service
    public class UserMongodbServiceImpl {
        @Autowired
        private MongoTemplate mongoTemplate;
    
        /**
         * 创建对象
         *
         * @param user
         */
        public void saveUser(User user) {
            mongoTemplate.save(user);
        }
    
        /**
         * 根据用户名查询对象
         *
         * @param userName
         * @return
         */
        public User findUserByUserName(String userName) {
            Query query = new Query(Criteria.where("name").is(userName));
            User user = mongoTemplate.findOne(query, User.class);
            return user;
        }
    
        /**
         * 更新对象
         *
         * @param user
         */
        public void updateUser(User user) {
            Query query = new Query(Criteria.where("id").is(user.getId()));
            Update update = new Update().set("name", user.getName()).set("username", user.getUsername());
            //更新查询返回结果集的第一条
            mongoTemplate.updateFirst(query, update, User.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, User.class);
        }
    
    
    }
    View Code

    5.测试

    package cn.cnki.ref.serviceimpl;
    
    import cn.cnki.ref.pojo.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import static org.junit.Assert.*;
    
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class UserMongodbServiceImplTest {
        @Autowired
        private  UserMongodbServiceImpl userMongodbServiceImpl;
    
        @Test
        public void saveUser() {
            User user = new User(1, "mf", "沐风", 20, "15010298065", "123456@qq.com");
            userMongodbServiceImpl.saveUser(user);
        }
    
        @Test
        public void findUserByUserName() {
            User user = userMongodbServiceImpl.findUserByUserName("mf");
            System.out.println(user);
        }
    
        @Test
        public void updateUser() {
            User user = new User();
            user.setId(1);
            user.setName("mufeng");
            user.setUsername("沐风");
            userMongodbServiceImpl.updateUser(user);
        }
    
        @Test
        public void deleteUserById() {
            userMongodbServiceImpl.deleteUserById(1l);
        }
    }
    View Code

    MongoTemplate

  • 相关阅读:
    观察OnPaint与OnIdle与OnSize事件
    wxPython的Refresh与事件双重响应
    DLL的静态调用和动态调用
    Delphi String的散漫记录,真是知识无数,陷阱无数
    VC调用Delphi DLL
    终于理解了什么是LGPL
    安装postgresql碰到Unable to write inside TEMP environment path
    图解:Activity生命周期
    Dephi泛型
    传递双重指针申请内存,典型用法
  • 原文地址:https://www.cnblogs.com/cnki/p/9389345.html
Copyright © 2011-2022 走看看