mongoDb +Java+springboot
前言 :mongoDb 是一种比较常用的非关系数据库,文档数据库, 格式为json ,redis 有五种格式。
1. 项目中要使用,这里简单做个示例。首先是连接mongoDB,用的最多的robomongodb,下载,安装, 连接。
连接成功结构是这样的。
2.第二个maven引入jar包。我用的是springboot,里面直接有
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
3,mongoDB java api 类似redis的 jedis 别人写好的工具类, 拿来用就是。
package com.ycmedia.utils; import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.bson.types.ObjectId; import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException; @SuppressWarnings("deprecation")
public final class MongoDbUtil { private static final String HOST = "180.97.75.185:38017"; private static final String dbName = "yc"; private static Mongo mongo; private static DB db; static {
try {
mongo = new Mongo(HOST);
db = mongo.getDB(dbName);
// db.authenticate(username, passwd)
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
} private MongoDbUtil() {
} /**
* 添加操作
*
* @param map
* @param collectionName
*/
public static void add(Map<String, Object> map, String collectionName) {
DBObject dbObject = new BasicDBObject(map);
getCollection(collectionName).insert(dbObject);
} /**
* 添加操作
*
* @param list
* @param collectionName
*/
public static void add(List<Map<String, Object>> list, String collectionName) {
for (Map<String, Object> map : list) {
add(map, collectionName);
}
} /**
* 删除操作
*
* @param map
* @param collectionName
*/
public static void delete(Map<String, Object> map, String collectionName) {
DBObject dbObject = new BasicDBObject(map);
getCollection(collectionName).remove(dbObject);
} /**
* 删除操作,根据主键
*
* @param id
* @param collectionName
*/
public static void delete(String id, String collectionName) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("_id", new ObjectId(id));
delete(map, collectionName);
} /**
* 删除全部
*
* @param collectionName
*/
public static void deleteAll(String collectionName) {
getCollection(collectionName).drop();
} /**
* 修改操作
* 会用一个新文档替换现有文档,文档key结构会发生改变
* 比如原文档{"_id":"123","name":"zhangsan","age":12}当根据_id修改age
* value为{"age":12}新建的文档name值会没有,结构发生了改变
*
* @param whereMap
* @param valueMap
* @param collectionName
*/
public static void update(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {
executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){
public DBObject doCallback(DBObject valueDBObject) {
return valueDBObject;
}
});
} /**
* 修改操作,使用$set修改器
* 用来指定一个键值,如果键不存在,则自动创建,会更新原来文档, 不会生成新的, 结构不会发生改变
*
* @param whereMap
* @param valueMap
* @param collectionName
*/
public static void updateSet(Map<String, Object> whereMap, Map<String, Object> valueMap, String collectionName) {
executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){
public DBObject doCallback(DBObject valueDBObject) {
return new BasicDBObject("$set", valueDBObject);
}
});
} /**
* 修改操作,使用$inc修改器
* 修改器键的值必须为数字
* 如果键存在增加或减少键的值, 如果不存在创建键
*
* @param whereMap
* @param valueMap
* @param collectionName
*/
public static void updateInc(Map<String, Object> whereMap, Map<String, Integer> valueMap, String collectionName) {
executeUpdate(collectionName, whereMap, valueMap, new UpdateCallback(){
public DBObject doCallback(DBObject valueDBObject) {
return new BasicDBObject("$inc", valueDBObject);
}
});
} /**
* 修改
*
* @param collectionName
* @param whereMap
* @param valueMap
* @param updateCallback
*/
private static void executeUpdate(String collectionName, Map whereMap, Map valueMap, UpdateCallback updateCallback) {
DBObject whereDBObject = new BasicDBObject(whereMap);
DBObject valueDBObject = new BasicDBObject(valueMap);
valueDBObject = updateCallback.doCallback(valueDBObject);
getCollection(collectionName).update(whereDBObject, valueDBObject);
} interface UpdateCallback { DBObject doCallback(DBObject valueDBObject);
} /**
* 获取集合(表)
*
* @param collectionName
* @return
*/
public static DBCollection getCollection(String collectionName) {
return db.getCollection(collectionName);
} public static void main(String[] args) {
DBCollection collection = getCollection("url");
BasicDBObject queryObject = new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e"); DBObject obj = collection.findOne(queryObject); System.out.println(obj);
}
}
4.查询
public static void main(String[] args) {
DBCollection collection = getCollection("url");
BasicDBObject queryObject = new BasicDBObject("urlMd5","bfa89e563d9509fbc5c6503dd50faf2e"); DBObject obj = collection.findOne(queryObject); System.out.println(obj);
}
mongoDb +Java+springboot的更多相关文章
- java~springboot~目录索引
回到占占推荐博客索引 最近写了不过关于java,spring,微服务的相关文章,今天把它整理一下,方便大家学习与参考. java~springboot~目录索引 Java~关于开发工具和包包 Java ...
- MongoDB,SpringBoot,SpringDataMongoDB
MongoDB,SpringBoot,SpringDataMongoDB 双刃剑MongoDB的学习和避坑 MongoDB 是一把双刃剑,它对数据结构的要求并不高.数据通过key-value的形式存储 ...
- MongoDB Java Driver操作指南
MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...
- Mongodb Java Driver 参数配置解析
要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...
- BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能
http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...
- 数据库.MongoDB.Java样例
1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...
- MongoDB Java
MongoDB Java 环境配置 在Java程序中如果要使用MongoDB,你需要确保已经安装了Java环境及MongoDB JDBC 驱动. 你可以参考本站的Java教程来安装Java程序.现在让 ...
- java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况
java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况 邮件短信微服务 spring boot 微服务 接收json格式参数 验证参数合 ...
- 【Other】最近在研究的, Java/Springboot/RPC/JPA等
我的Springboot框架,欢迎关注: https://github.com/junneyang/common-web-starter Dubbo-大波-服务化框架 dubbo_百度搜索 Dubbo ...
随机推荐
- Wpf自定义路由事件
创建自定义路由事件大体可以分为三个步骤: ①声明并注册路由事件. ②为路由事件添加CLR事件包装. ③创建可以激发路由事件的方法. 以ButtonBase类中代码为例展示这3个步骤: public a ...
- [转]MySQL数据库备份和还原的常用命令小结
MySQL数据库备份和还原的常用命令小结,学习mysql的朋友可以参考下: 备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword datab ...
- NOIP2012 借教室 Splay初探
终于把区间操作的Splay搞明白了…… Splay的大致框架是这样的: [代码中的Zig-Zig和Zig-Zag操作其实是可以优化的,实际只需要3次passDown和3次update] templat ...
- phpcms V9 内容模型管理(转)
转自:http://www.cnblogs.com/Braveliu/p/5102627.html [1]理解模型 模型,系统知识的抽象表示.既然抽象了,那就得脑补一下.大家都是面向对象设计的专业人员 ...
- Bootstrap_表单_按钮
一.多标签支持 一般制作按钮除了使用<button>标签元素之外,还可以使用<input type="submit">和<a>标签等. 同样,在 ...
- delphi 2010 动态链接库DLL断点调试
DELPHI 2010 动态链接库DLL断点调试 马根峰 (广东联合电子服务股份有限公司,广州 510300) 摘要:本文详细介绍了Delphi 2010中的动态链接库DLL断点调试技术 关键词:DE ...
- windows2008 R2 安装wampserver
1. 在官网http://www.wampserver.com/下载,wampserver2.5; 2. 安装时候会缺少msvcr110.dll文件,所以先要安装这个文件: 3. 先从微软下载Visu ...
- DEDECMS-helper小助手扩展
今天在做DEDE动态调用模板的时候卡住了,后终被强大的互联网解决,记录解决问题的过程,以备后用 可以在/data/helper.inc.php中进行默认小助手初始化的设置,系统默认载入小助手 例如创建 ...
- 工作总结:WPF技术讲解(大纲)
一.WPF的历史 首先给大家讲述一下Winform的发展里程来展示WPF的历史,告诉大家WPF是在什么背景下诞生的. 二.WPF的特性 与MFC.Windows相比,WPF具有3D呈现特性,XMAL是 ...
- JavaScript Maintainable
1. Avoid conflict with Native Variable namespace