MongoDB与Java的整合

1.前提准备

需要导入的jar包:
gson-2.7.jar
mongo-java-driver-3.4.2.jar
mongodb-driver-3.4.2.jar
mongodb-driver-core-3.4.2.jar


2.java连接MongoDB

自己整理的工具类
import java.util.ArrayList;
import java.util.List;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.snaillove.web.cloudmusic.common.modules.utils.Common;

public class MongoDBHelp {

	// 获得Mongo配置文件
	Common common = new Common();

	// 初始化monogodb
	private MongoClient client = null;

	public MongoClient getConnection() {

		// 配置连接
		MongoClientOptions.Builder build = new MongoClientOptions.Builder();
		build.connectionsPerHost(50); // 与数据最大连接数50
		// 如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
		build.threadsAllowedToBlockForConnectionMultiplier(50);
		build.connectTimeout(1 * 60 * 1000);
		build.maxWaitTime(2 * 60 * 1000);
		MongoClientOptions options = build.build();

		// ip,端口
		ServerAddress serverAddress1 = new ServerAddress(common.getMongoHost(), 27017);
		List<ServerAddress> seeds = new ArrayList<ServerAddress>();
		seeds.add(serverAddress1);

		// 用户名,数据库名,密码
		MongoCredential credentials = MongoCredential.createScramSha1Credential(common.getMongoUsername(),
				common.getMongoDatabase(), common.getMongoPassword().toCharArray());
		List<MongoCredential> credentialsList = new ArrayList<MongoCredential>();
		credentialsList.add(credentials);

		// 连接数据库
		client = new MongoClient(seeds, credentialsList, options);

		return client;
	}

	public void close() {
		client.close();
	}
}

3.Java对MongoDB的增删查改

public class VisitBannerDao {

	MongoDBDao client = new MongoDBDao();

	@SuppressWarnings("deprecation")
	public List<VisitBanner> findList(VisitBanner visitBanner, PageModel pageModel) {
		// 指定数据库名
		DB db = client.getConnection().getDB("databaseName");
		// 获取集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作数据库
		List<VisitBanner> list = new ArrayList<VisitBanner>();
		try {
			// 条件列表
			BasicDBList condList = new BasicDBList();
			// 临时条件对象
			BasicDBObject cond = new BasicDBObject();
			if (!StringUtils.isEmpty(visitBanner.getAppId())) {
				cond.append("appId", visitBanner.getAppId());// 此处意味appId这个字段等于visitBanner.getAppId()这个值
				condList.add(cond);
			}
			if (!StringUtils.isEmpty(visitBanner.getStartDate())) {
				BasicDBObject startCondition = new BasicDBObject("$gte", visitBanner.getStartDate());
				cond = new BasicDBObject("insertDate", startCondition);// 此处意味insertDate大于等于visitBanner.getStartDate()这个值
				condList.add(cond);
			}
			if (!StringUtils.isEmpty(visitBanner.getEndDate())) {
				BasicDBObject endCondition = new BasicDBObject("$lte", visitBanner.getEndDate());
				cond = new BasicDBObject("insertDate", endCondition);
				condList.add(cond);
			}

			// 整合条件查询
			BasicDBObject searchCond = new BasicDBObject();
			searchCond.put("$and", condList);// 将条件列表中的条件用and连接起来
			DBCursor cursor = null;
			BasicDBObject orderBy = new BasicDBObject("insertDate", -1);// 排序条件(1:ASC,-1:DESC)
			if (condList.size() != 0) {
				cursor = collection.find(searchCond).sort(orderBy);// 查询数据库
			} else {
				cursor = collection.find().sort(orderBy);
			}

			while (cursor.hasNext()) {// 将数据库中查询的cursor转换成对象
				DBObject obj = cursor.next();
				// 反转
				Gson gson = new Gson();
				VisitBanner entity = gson.fromJson(obj.toString(), VisitBanner.class);
				list.add(entity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完后必须要close释放资源
			client.close();
		}
		return list;
	}

	public void save(VisitBanner visitBanner) {
		// 指定数据库名
		DB db = client.getConnection().getDB("datebaseName");
		// 获取集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作数据库
		try {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String time = sdf.format(new Date());
			visitBanner.setInsertDate(time);

			Gson gson = new Gson();
			// 转换成json字符串,再转换成DBObject对象
			DBObject dbObject = (DBObject) JSON.parse(gson.toJson(visitBanner));
			// 插入数据库
			collection.insert(dbObject);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完后必须要close释放资源
			client.close();
		}
	}
	
	@Test
	public void update() {
		// 指定数据库名
		DB db = client.getConnection().getDB("databaseName");
		// 获取集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作数据库
		try {

			VisitBanner oldbanner=new VisitBanner();
			oldbanner.setBannerTitle("雨天");
			
			VisitBanner newbanner=new VisitBanner();
			newbanner.setBannerTitle("晴天");
			
			Gson gson = new Gson();
			// 转换成json字符串,再转换成DBObject对象
			DBObject query = (DBObject) JSON.parse(gson.toJson(oldbanner));
			DBObject update = (DBObject) JSON.parse(gson.toJson(newbanner));
			// 插入数据库
			collection.update(query, update);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完后必须要close释放资源
			client.close();
		}
	}
	
	@Test
	public void delete() {
		// 指定数据库名
		DB db = client.getConnection().getDB("databaseName");
		// 获取集合,不存在的话,会自动建立该集合(相当于关系数据库中的数据表)
		DBCollection collection = db.getCollection("collectionName");
		// 操作数据库
		try {
			VisitBanner visitBanner=new VisitBanner();
			visitBanner.setBannerTitle("雨天");
			
			Gson gson = new Gson();
			// 转换成json字符串,再转换成DBObject对象
			DBObject dbObject = (DBObject) JSON.parse(gson.toJson(visitBanner));
			// 插入数据库
			collection.remove(dbObject);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			// MongoClient使用完后必须要close释放资源
			client.close();
		}
	}
}







  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MongoDB是一种NoSQL数据库,而Spring Boot是一种Java框架,可以用于快速构建Web应用程序。将MongoDB与Spring Boot整合可以让我们更方便地使用MongoDB存储和检索数据。 要将MongoDB与Spring Boot整合,我们需要使用Spring Data MongoDB。Spring Data MongoDB是Spring Data项目的一部分,它提供了一种简单的方式来访问MongoDB数据库。 在Spring Boot应用程序中使用Spring Data MongoDB,我们需要添加以下依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 然后,我们需要配置MongoDB连接信息。可以在application.properties文件中添加以下配置: ``` spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydb ``` 这将告诉Spring Boot连接到本地MongoDB实例,使用mydb数据库。 现在,我们可以使用Spring Data MongoDB来访问MongoDB数据库。例如,我们可以定义一个简单的实体类: ``` @Document(collection = "users") public class User { @Id private String id; private String name; private int age; // getters and setters } ``` 然后,我们可以定义一个MongoDB存储库接口: ``` @Repository public interface UserRepository extends MongoRepository<User, String> { List<User> findByName(String name); } ``` 这将允许我们使用Spring Data MongoDB的内置方法来访问MongoDB数据库。例如,我们可以使用以下代码来查找名为“John”的所有用户: ``` @Autowired private UserRepository userRepository; List<User> users = userRepository.findByName("John"); ``` 这就是如何将MongoDB与Spring Boot整合的基础知识。当然,还有很多其他的功能和选项可以使用,但这应该足以让您开始使用MongoDB和Spring Boot了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值