当前位置: 移动技术网 > IT编程>数据库>MongoDB > MongoDB安装与Spring整合

MongoDB安装与Spring整合

2019年12月16日  | 移动技术网IT编程  | 我要评论
MongoDB是面向文档的非关系型数据库,数据模型是一种类似于JSON的结构,在数据库中存的是各种各样的JSON。官网下载地址:https://www.mongodb.com/download-center/enterprise 一、以Centos为例,安装mongoDB 1)下载安装包mongod ...

     mongodb是面向文档的非关系型数据库,数据模型是一种类似于json的结构,在数据库中存的是各种各样的json。官网下载地址:

  一、以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 #是否安全检验

  5)运行服务

        ./mongod  --config mongodb.conf

         

   二、创建数据库与用户

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

        auth=false #是否安全检验

   2)登录服务,跳过权限验证,创建应用数据库与用户,新增成功以后,改回安全校验模式。

   2.1)切换数据库  use cmp;  创建用户 2.2)db.createuser({user:"cmp",pwd:"123456",roles:[{role:"dbadmin",db:"cmp"},{role:"readwrite",db:"cmp"}]});

           

     3)使用nosqlbooster客户端登录 

         

    三、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

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 数据层

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

}

         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 ("执行成功");
    }

}

  

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网