MongoDB安装与Spring整合[通俗易懂]

MongoDB安装与Spring整合[通俗易懂]MongoDB是面向文档的非关系型数据库,数据模型是一种类似于JSON的结构,在数据库中存的是各种各样的JSON。官网下载地址:https://www.mongodb.com/download-cen

     MongoDB是面向文档的非关系型数据库,数据模型是一种类似于JSON的结构,在数据库中存的是各种各样的JSON。官网下载地址:https://www.mongodb.com/download-center/enterprise

  一、以Centos为例,安装mongoDB

      1)下载安装包mongodb-linux-x86_64-rhel70-4.2.1.tgz,上传opt目录

      2)解压安装包  tar -zxvf   mongodb-linux-x86_64-rhel70-4.2.1.tgz 

      3)mv mongodb-linux-x86_64-rhel70-4.2.1/ /usr/local/mongodb

      4)在bin目录,新增mongodb.conf配置文件

dbpath = /data/db #数据文件存放目录,提前新建目录  
logpath = /data/logs/mongodb.log #日志文件存放目录,提前新建目录  
port = 27017  #端口
fork = true  #以守护程序的方式启用,即在后台运行
bind_ip=0.0.0.0    #允许所有的连接
auth=true #是否安全检验

代码100分

  5)运行服务

        ./mongod  –config mongodb.conf

         MongoDB安装与Spring整合[通俗易懂]

   二、创建数据库与用户

   1)修改配置参数,重启服务

        auth=false #是否安全检验

   2)登录服务,创建应用数据库与用户

代码100分   2.1)切换数据库  use cmp;  创建用户 2.2)db.createUser({user:"cmp",pwd:"123456",roles:[{role:"dbAdmin",db:"cmp"},{role:"readWrite",db:"cmp"}]});

           MongoDB安装与Spring整合[通俗易懂]

     3)使用NoSQLBooster客户端登录 

         MongoDB安装与Spring整合[通俗易懂]

MongoDB安装与Spring整合[通俗易懂]

    三、Spring整合MongoDB

        1)引入MongoDB的pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demo</groupId>
  <artifactId>springmongodb</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>springmongodb</name>
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-mongodb</artifactId>
      <version>1.8.6.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>4.1.9.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

  2)Spring配置文件

               mongodb.properties

代码100分mongodb.hostport=服务IP端口
mongodb.db=
mongodb.username=
mongodb.password=

         spring-mongodb.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xmlns:context="http://www.springframework.org/schema/context"
	   xmlns:mongo="http://www.springframework.org/schema/data/mongo"
	xsi:schemaLocation="
	      http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-4.2.xsd
          http://www.springframework.org/schema/data/mongo   
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd   
          http://www.springframework.org/schema/beans   
          http://www.springframework.org/schema/beans/spring-beans-4.2.xsd">

	<context:property-placeholder location="classpath:mongodb.properties" />
    <context:component-scan base-package="com.itep"></context:component-scan>
	<!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->
	<mongo:mongo id="mongo" replica-set="${mongodb.hostport}">
		<!-- 一些连接属性的设置 -->
		<mongo:options connections-per-host="8"
			threads-allowed-to-block-for-connection-multiplier="4"
			connect-timeout="20000" 
			max-wait-time="20000" 
			auto-connect-retry="true"
			socket-keep-alive="true" 
			socket-timeout="20000" 
			slave-ok="true"
			write-number="1" 
			write-timeout="0" 
			write-fsync="true" 
			/>
	</mongo:mongo>
	<mongo:repositories base-package="com.itep.dao"></mongo:repositories>
	<mongo:db-factory dbname="${mongodb.db}" mongo-ref="mongo"/>
	
	<!-- 配置用户名密码 -->
	<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
		<constructor-arg name="username" value="${mongodb.username}" />
		<constructor-arg name="password" value="${mongodb.password}" />
	</bean>

	<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
		<constructor-arg ref="mongo" />
		<constructor-arg ref="userCredentials" />
		<constructor-arg name="databaseName" value="${mongodb.db}" />
	</bean>

</beans>

  3)编码

          3.1实体类 

package com.demo.bean;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;

/**
 * 功能说明:
 * 
 */
@Document(collection = "user")
public class User {

    @Indexed(unique = false)
    @Id
    private String uuid;

    private String name;

    private String age;

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "uuid="" + uuid + """ +
                ", name="" + name + """ +
                ", age="" + age + """ +
                "}";
    }
}

     3.2 数据层

MongoDB安装与Spring整合[通俗易懂]

package com.demo.service;

import com.itep.bean.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 功能说明:
 * 
 */
@Service("mongoDBService")
public class MongoDBServiceImpl implements IMongoDBService{

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public <T> T findById(Class<T> entityClass , String id) {
        return this.mongoTemplate.findById ( id,entityClass );
    }

    @Override
    public <T> List<T> findAll(Class<T> entityClass) {
        return this.mongoTemplate.findAll ( entityClass );
    }

    @Override
    public void remove(Object obj) {
        this.mongoTemplate.remove ( obj );
    }

    @Override
    public void add(Object obj) {
        this.mongoTemplate.insert ( obj );
    }

    @Override
    public void saveOrUpdate(Object obj) {
        this.mongoTemplate.save ( obj );
    }

    @Override
    public <T> Long count(Class<T> entityClass , Query query) {
        return this.mongoTemplate.count ( query,entityClass );
    }

    @Override
    public <T> List<T> findByQuery(Class<T> entityClass , Query query , Page page) {
        Long count = this.count ( entityClass,query );
        if(page != null){
             page.setRecordCount ( count.intValue () );
             int pageNumber = page.getCurrentPage ();
             int pageSize = page.getPageSize ();
             query.skip ( (pageNumber-1) * pageSize).limit ( pageSize );
        }
        return this.mongoTemplate.find ( query,entityClass );
    }
}

View Code

MongoDB安装与Spring整合[通俗易懂]

package com.demo.service;

import com.itep.bean.Page;
import org.springframework.data.mongodb.core.query.Query;

import java.util.List;

/**
 * 功能说明:
 * 
 */
public interface IMongoDBService {

    <T> T findById(Class<T> entityClass,String id);

    <T> List<T> findAll(Class<T> entityClass);

    void remove(Object obj);

    void add(Object obj);

    void saveOrUpdate(Object obj);

    <T> Long count(Class<T> entityClass, Query query);

    <T> List<T> findByQuery(Class<T> entityClass, Query query, Page page);

}

View Code

         3.3 单元测试

package com.demo;

import com.itep.bean.User;
import com.itep.service.IMongoDBService;
import com.itep.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;
import java.util.UUID;

@RunWith (SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations ="classpath:spring-mongodb.xml")
public class AppTest 
{

    @Autowired
    private IMongoDBService mongoDBService;

    @Test
    public void query(){

        Query query = new Query (  );
        query.addCriteria ( Criteria.where ( "age" ).is ( "21" ) );
        query.with ( new Sort ( new Sort.Order ( Sort.Direction.ASC ,"name") ) );
        List<User> byQuery = mongoDBService.findByQuery ( User.class , query , null );
        System.out.println ("..." + byQuery);
        mongoDBService.findByQuery ( User.class , query , null );
    }
 
    @Test
    public  void  insert(){
       User user = new User();
       String uuid = UUID.randomUUID ().toString ().replace ( "-","" );
       System.out.println ("uuid:" + uuid);
       user.setName ( "mongodb" );
       user.setUuid ( uuid );
       user.setAge ( "21" );
       mongoDBService.add ( user );
       System.out.println ("执行成功");
    }

}

  MongoDB安装与Spring整合[通俗易懂]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10483.html

(0)
上一篇 2022-12-26 21:30
下一篇 2022-12-26

相关推荐

  • SQL 入门教程:使用不同类型的联结(JOIN)[通俗易懂]

    SQL 入门教程:使用不同类型的联结(JOIN)[通俗易懂]目录汇总:SQL 入门教程:面向萌新小白的零基础入门教程 迄今为止,我们使用的只是内联结或等值联结的简单联结。现在来看三种其他联结:自联结(self-join)、自然联结(natural join)和

    2023-04-21
    152
  • 如何确认 Python 安装成功

    如何确认 Python 安装成功a href=”https://beian.miit.gov.cn/”苏ICP备号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-09-23
    2
  • SQL注入漏洞产生的原因_怎么判断是否有sql注入漏洞

    SQL注入漏洞产生的原因_怎么判断是否有sql注入漏洞low等级 代码如下: 1 <?php 2 3 if( isset( $_REQUEST[ 'Submit' ] ) ) { 4 // Get input 5 $id = $_R

    2022-12-27
    115
  • 用Python打造简短而有力的短语表达

    用Python打造简短而有力的短语表达Python是一门快速、易用且功能强大的编程语言。它的设计哲学是“优雅”、“明确”、“简单”。Python有着广泛的应用场景,如数据分析、Web开发、网络编程、人工智能等。在本文中,我们将探讨如何使用Python构建简短而有力的短语表达。

    2024-02-06
    89
  • 电商商品搜索 es_正规电商平台有哪些

    电商商品搜索 es_正规电商平台有哪些电商数据系统主要类型 一个中等的电商平台,每天都要产生百万条原始数据,上亿条用户行为数据。一般来说,电商数据一般有3种主要类型的数据系统: 关系型数据库 ,大多数互联网公司会选用mysql作为关数据…

    2023-01-26
    145
  • 如何调用Python函数?

    如何调用Python函数?在Python编程中,函数是一种非常重要的概念。通过使用函数,我们能够提高代码的可读性和可复用性。那么如何调用Python函数呢?在本文中,我们将会从多个方面对如何调用Python函数进行详细的阐述。

    2024-07-26
    41
  • 使用Pycharm进行编程

    使用Pycharm进行编程Pycharm是由JetBrains公司开发的一款Python开发环境。它是专门为Python开发者打造的IDE,提供了丰富的工具和功能来加速开发过程。本文将从多个方面介绍使用Pycharm进行编程的优势和方法。

    2024-07-31
    34
  • 使用Python将JSON转换为列表的完整教程

    使用Python将JSON转换为列表的完整教程在Python中转换JSON格式数据为列表是一项重要的任务。在我们的日常工作中,需要将来自不同来源的数据转化为Python可以处理的格式。JSON作为一种通用的数据交换格式,非常适合Python开发人员使用。

    2024-06-07
    54

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注