SpringBoot整合MongoDB

一直想学MongoDB,正好碰上项目需要,故花了一天时间去研究MongoDB,在这做个总结。

下载MongoDB

首先面对的就是下载MongoDB,首先想到的是到官网上去下载,但是官网不知道是什么原因,一点击下载就是空白页,虽然一开始还填了一些个人资料上去。
MongoDB官网下载
后面在网上找资料发现了各个版本的下载地址:
http://dl.mongodb.org/dl/linux/x86_64
http://dl.mongodb.org/dl/win32/x86_64

windows本地安装

我下载的是mongodb-win32-x86_64-2008plus-ssl-3.6.0-rc3-69-gefea76a.zip这个版本,然后解压到本地目录,再在环境变量path中配置好D:\mongodb\bin。在“D:\Mongodb”目录下新建“data”文件夹,它将会成为数据存放的根目录。

C:\Users\LX>d:

d:\>cd d:\mongodb\bin

d:\mongodb\bin>mongod --dbpath d:\mongodb\data

然后新开cmd窗口,原有窗口勿关闭,如果窗口关闭则服务也关闭。
dos代码如下:

C:\Users\LX>d:

D:\>cd d:\mongodb\bin

d:\mongodb\bin>mongo 127.0.0.1:27017

则可看到如下效果:

C:\Users\LX>d:

D:\>cd d:\mongodb\bin

d:\mongodb\bin>mongo 127.0.0.1:27017
MongoDB shell version v3.6.0-rc3-69-gefea76a
connecting to: mongodb://127.0.0.1:27017/test
MongoDB server version: 3.6.0-rc3-69-gefea76a
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-user
Server has startup warnings:
2017-11-20T15:12:36.768+0800 I CONTROL  [initandlisten]
2017-11-20T15:12:36.769+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2017-11-20T15:12:36.769+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2017-11-20T15:12:36.770+0800 I CONTROL  [initandlisten]
2017-11-20T15:12:36.770+0800 I CONTROL  [initandlisten] ** WARNING: This server is bound to localhost.
2017-11-20T15:12:36.771+0800 I CONTROL  [initandlisten] **          Remote systems will be unable to connect to this server.
2017-11-20T15:12:36.771+0800 I CONTROL  [initandlisten] **          Start the server with --bind_ip 
to specify which IP 2017-11-20T15:12:36.772+0800 I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to 2017-11-20T15:12:36.773+0800 I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the 2017-11-20T15:12:36.774+0800 I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning. 2017-11-20T15:12:36.774+0800 I CONTROL [initandlisten] 2017-11-20T15:12:36.775+0800 I CONTROL [initandlisten] Hotfix KB2731284 or later update is not installed, will zero-out data files. 2017-11-20T15:12:36.776+0800 I CONTROL [initandlisten] 2017-11-20T15:12:36.777+0800 I CONTROL [initandlisten] ** WARNING: The file system cache of this machine is configured to be greater than 40% of the total memory. This can lead to increased memory pressure and poor performance. 2017-11-20T15:12:36.777+0800 I CONTROL [initandlisten] See http://dochub.mongodb.org/core/wt-windows-system-file-cache 2017-11-20T15:12:36.778+0800 I CONTROL [initandlisten] 2017-11-20T15:20:39.680+0800 E - [main] Error loading history file: FileOpenFailed: Unable to fopen() file C:\Users\LX/.dbshell: 系统找不到指定的文件。 > show dbs admin 0.000GB config 0.000GB local 0.000GB > use admin switched to db admin > show collections system.version >

如上,则表示安装成功。

SpringBoot集成

新建一个SpringBoot项目,pom文件如下:

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-mongodbartifactId>
        dependency>
        <dependency>
            <groupId>org.mongodbgroupId>
            <artifactId>mongo-java-driverartifactId>
        dependency>

yml配置文件添加mongodb配置如下:

spring:
  data:
    mongodb:
      uri: mongodb://localhost:27017
      database: test

综上,springBoot就算是整合好MongoDB了,为验证整合成功,特写代码如下:
User.java(引用了 lombok,具体请百度)

@Data
@AllArgsConstructor
@ToString
public class User {
    @Id
    private Integer id;
    private String name;
    private Integer age;

}

UserRepository.java

public interface UserRepository extends MongoRepository<User, String>{


    User findByName(String name);

}

UserService.java

@Repository
public interface UserService {
    void save(User user);

    User findByName(String name);
}

UserServiceImpl.java

    @Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;

    @Override
    public void save(User user) {

        userRepository.save(user);

    }

    @Override
    public User findByName(String name) {
        return this.findByName(name);
    }

}

Application.java

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private UserRepository repository;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
            repository.deleteAll();

            repository.save(new User(1,"name1",19));
            repository.save(new User(2,"name2",20));

            System.out.println("User found with findAll():");
            System.out.println("-------------------------------");
            for (User user : repository.findAll()) {
                System.out.println(user);
            }
            System.out.println("------------------------");

            System.out.println("User found with findByName('name1'):");
            System.out.println("--------------------------------");
            System.out.println(repository.findByName("name1"));


    }
}

测试结果如下:

Customers found with findAll():
-------------------------------
User(id=1, name=name1, age=19)
User(id=2, name=name2, age=20)
------------------------
Customer found with findByName('name1'):
--------------------------------
User(id=1, name=name1, age=19)

测试通过。

你可能感兴趣的:(MangoDB,mongodb)