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 ("执行成功");
}
}
您可能感兴趣的文章:
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
网友评论