MongoDB构建和JAVA工具类封装
MongoDB构建和JAVA工具类封装
MongoDB概述
基本语法
Mongo服务器构建
下载安装软件包
环境变量的配置
Mongo的基本构成
蒙哥起飞
封装JVA工具类
MongoDB概述
MongoDB旨在为web APP应用程序提供可扩展、高性能的数据存储解决方案。 MongoDB将数据存储为单个文档,数据结构由一对键值=value组成。 MongoDB文档类似于JSON对象。 字段值可以包含其他文档、数组和文档数组。
基本语法
没有提到基本的预分发和使用。 请参阅面向初学者的mongo教程。 手册中介绍了详细内容。 如果不是为了理解mongo,基本开发是足够的。
Mongo服务器构建
下载安装软件包
笔者使用的是旧版本的mac pro。 建设工作踩了无数个洞,在这里整理使用。 虽然很多博客都说采用了curl或brew安装,但笔者的电脑系统brew安装xcode升级失败,curl下载非常慢,只能采用离线安装。 脱机安装很简单。 直接前往网站mac版本的下载地址,下载相应的安装包,解压缩配置环境变量即可。
我下载的版本是3.6.2,解压缩后配置环境变量就可以了。
环境变量的配置
编辑~/.bash_profile文件并添加环境变量
导出mongo _ path=/users/mantan/applications/mongod B- OS x-x86 _ 64-3.6.2
导出路径=$ path : $ mongo _ path/bin
使用source命令可以启用环境变量
source ~/.bash_profile
上述配置完成后,环境变量配置成功,可以使用echo检查下哈。
Mongo的基本构成
在mongo路由下建设以下文件data、etc、log,分别存储data数据、配置文件和日志信息。
然后,在data目录下创建数据库文件夹,并存储mongo数据。
然后,在etc目录下创建mongod.conf文件。 内容如下。
dbpath=/users/mantan/applications/mongodb- OS x-x86 _ 64-3.6.2/data/db
log path=/users/mantan/applications/mongodb- OS x-x86 _ 64-3.6.2//logs/MongoDB/mongod.log
logappend=true
bind_ip=127.0.0.1
Journal=真
端口=27017
# fork允许后端子进程启动,终端可以自行关闭
fork=true
#安全权限首先以非授权模式启动Mongod,打开用户db.adduser(root )、() pwd )、auth=true,然后打开db.auth (root )、(pwd )、
auth=true
然后,在日志目录下构建mongodb/mongod.log并记录日志
这样,部署工作完成了,马上起飞,你很兴奋吗?
蒙哥起飞
使用命令启动Mongo服务
mongod-- config/users/mantan/applications/mongod B- OS x-x86 _ 64-3.6.2/etc/mongod.conf
已启动:
进入shell客户端操作
运行mongo命令即可访问
笔者设定了auth用户的登录权限
# # #管理员用户
db .创建用户(用户db: (根)、pwd: (根)、roles: (用户管理数据库)、db : (ADM mase ) )。
###一般数据库用户
db.create user (user : ' your user2',pwd: 'yourpassword2',roles : [ { role : ' read write ',db3360']
以下是我测试构建的collection。 特别适用于数据字段的动态转储
封装JVA工具类
封装Mongo操作的Java抽象类大致满足日常开发需要,DAO层可以通过集成这个基类来利用功能。 贡献,让大家参加
考,不当之处,评论处补充:package yonyou.esn.openapi.dao.mongo;
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 yonyou.esn.openapi.util.Page;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
public class MongoBaseDao {
private static final int DEFAULT_SKIP = 0;
private static final int DEFAULT_LIMIT = 200;
/**
* spring mongodb 集成操作类
*/
@Autowired
protected MongoTemplate mongoTemplate;
protected String collection;
/**
* 通过条件查询实体(集合)
*
*@param query
*/
public List find(Query query) {
return mongoTemplate.find(query, this.getEntityClass());
}
public List find(Query query, String collectionName) {
return mongoTemplate.find(query, this.getEntityClass(), collectionName);
}
/**
* 通过一定的条件查询一个实体
*
*@param query
*@return
*/
public T findOne(Query query) {
return mongoTemplate.findOne(query, this.getEntityClass());
}
public T findOne(Query query, String collectionName) {
return mongoTemplate.findOne(query, this.getEntityClass(), collectionName);
}
/**
* 通过条件查询更新数据
*
*@param query
*@param update
*@return
*/
public void update(Query query, Update update) {
mongoTemplate.findAndModify(query, update, this.getEntityClass());
}
public void update(Query query, Update update, String collectionName) {
mongoTemplate.findAndModify(query, update, this.getEntityClass(), collectionName);
}
public void removeById(String id, String collectionName){
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(id));
mongoTemplate.remove(query, collectionName);
}
/**
* 保存一个对象到mongodb
*
*@param entity
*@return
*/
public T save(T entity) {
mongoTemplate.insert(entity);
return entity;
}
public T save(T entity, String collectionName) {
mongoTemplate.insert(entity, collectionName);
return entity;
}
/**
* 通过ID获取记录
*
*@param id
*@return
*/
public T findById(String id) {
return mongoTemplate.findById(id, this.getEntityClass());
}
/**
* 通过ID获取记录,并且指定了集合名(表的意思)
*
*@param id
*@param collectionName
* 集合名
*@return
*/
public T findById(String id, String collectionName) {
return mongoTemplate.findById(id, this.getEntityClass(), collectionName);
}
/**
* 分页查询
*@param page
*@param query
*@return
*/
public Page findPage(Page page, Query query){
long count = this.count(query);
page.setTotal(count);
int pageNumber = page.getPageNumber();
int pageSize = page.getPageSize();
query.skip((pageNumber - 1) * pageSize).limit(pageSize);
List rows = this.find(query);
page.setRows(rows);
return page;
}
public Page findPage(Page page, Query query, String collectionName){
long count = this.count(query, collectionName);
page.setTotal(count);
int pageNumber = page.getPageNumber();
int pageSize = page.getPageSize();
query.skip((pageNumber - 1) * pageSize).limit(pageSize);
List rows = this.find(query, collectionName);
page.setRows(rows);
return page;
}
/**
* 求数据总和
*@param query
*@return
*/
public long count(Query query){
return mongoTemplate.count(query, this.getEntityClass());
}
public long count(Query query, String collectionName){
return mongoTemplate.count(query, this.getEntityClass(), collectionName);
}
/**
* 获取需要操作的实体类class
*
*@return
*/
private Class getEntityClass(){
Type superclass = this.getClass().getGenericSuperclass();
Type[] actualTypeArguments = ((ParameterizedType)superclass).getActualTypeArguments();
return (Class) actualTypeArguments[0];
}
}