第26章 Java操作Mongodb实现数据持久化

任务描述

任务名称 Mongodb基本操作
任务要求 1、熟练掌握安装和配置MongoDB数据库2、掌握数据库、集合和文档概念3、学会如何创建数据库、删除数据库4、学会集合的基本操作5、学会文档的基本操作
任务内容 1、Java语言操作MongoDB数据库;2、获取MongoDB中的所有数据库;3、查看指定数据库(即数据库articledb)中的所有集合;4、创建集合;5、删除集合;6、查看文档;7、插入一个文档;8、更新文档;9、删除文档
提交内容 实践操作

任务准备

  • 安装和配置好Mongdb数据库
  • 熟练Mongodb基本操作
  • 有一定的Java基础
  • 熟悉Maven项目管理工具

任务实施

1、新建一个Maven工程

打开pom.xml文件,添加依赖:junit和mongodb的java驱动

	<dependencies>
		<dependency>
			<groupId>junitgroupId>
			<artifactId>junitartifactId>
			<version>4.12version>
			<scope>testscope>
		dependency>
		
		<dependency>
			<groupId>org.mongodbgroupId>
			<artifactId>mongodb-driverartifactId>
			<version>3.12.10version>
		dependency>

	dependencies>

2、resources目录下创建一个属性文件mongodb.properties,用来存储Mongdb数据库配置信息,内容如下:

host=localhost
port=27017
dbname=articledb

3、在包com.creatorblue.mongodb下新建辅助类MongoUtils.java,用于getMongoClient()获取MongoDB数据库的连接对象,定义一个getMongoConn()方法,用于实现连接指定的MongoDB数据库,内容如下:

private static Properties properties
	private static MongoDatabase mongoDatabase
	private static InputStream stream = null
	private static String host
	private static int port
	private static String dbname
	// 1.创建一个静态代码块,用于初始化工具类中的静态变量,该静态代码块在类加载过程中的初始化阶段 执行,并且只执行一次
	static {
		// 判断properties集合对象是否为空,为空则创建一个集合对象
		if (properties == null) {
			properties = new Properties()
		}
		/*
		 * 由于我们调用load方法,而load方法底层抛出了一个IOException异常,此异常为编译时期异常
		 * 所以,我们调用load方法时,需要处理底层抛过来的异常
		 */
		try {
			// 创建一个InputStream字节输入流对象,用于接收mongodb.properties配置文件中的配置参数
			stream = MongoUtils.class.getClassLoader().getResourceAsStream("mongodb.properties")
			// properties集合对象调用load()方法,将配置参数加载到properties集合中
			properties.load(stream)
		} catch (IOException e) {
			e.printStackTrace()
		}
		// 根据mongodb.properties配置文件中的key,获取value值
		host = properties.getProperty("host")
		port = Integer.parseInt(properties.getProperty("port"))
		dbname = properties.getProperty("dbname")
	}

	// 2.定义一个getMongoClient()方法,用于获取MongoDB数据库的连接对象
	public static MongoClient getMongoClient() {
		// 由于MongoClients对象调用create()方法,该方法的参数是一个字符串,因此这里将host 和port拼接成字符串,再作为参数传入到该方法中
		String addr = "mongodb://" + host + ":" + port
		MongoClient mongoClient = MongoClients.create(addr)
		return mongoClient
	}

	// 3.定义一个getMongoConn()方法,用于实现连接指定的MongoDB数据库
	public static MongoDatabase getMongoConn() {
		MongoClient mongoClient = getMongoClient()
		mongoDatabase = mongoClient.getDatabase(dbname)
		return mongoDatabase
	}
}

4、test目录下新建测试类TestMongo.java完成任务中的内容并验证

private static MongoDatabase mongoDatabase;
	    public static void main(String[] args) {
	        mongoDatabase = MongoUtils.getMongoConn();
	    }
	    
	    @Test
	    public void getDBs() {
	        MongoClient mongoClient = MongoUtils.getMongoClient();
	        MongoIterable<String> databaseNames = mongoClient.listDatabaseNames();
	        for (String databaseName : databaseNames) {
	            System.out.println(databaseName);
	        }
	    }


	    
	    @Test
	    public void getCollection() {
	        mongoDatabase = MongoUtils.getMongoConn();
	        MongoIterable<String> listCollectionNames = mongoDatabase.listCollectionNames();
	        for (String collectionName : listCollectionNames) {
	            System.out.println(collectionName.toString());
	        }
	    }
	    
	    @Test
	    public void createCollection(){
	        mongoDatabase = MongoUtils.getMongoConn();
	        mongoDatabase.createCollection("creatorblue");
	    }
	    
	    @Test
	    public void dropCollection(){
	        mongoDatabase = MongoUtils.getMongoConn();
	        MongoCollection<Document> itcast = mongoDatabase.getCollection("creatorblue");
	        itcast.drop();

	    }
	    
	    @Test
	    public void findDocument(){
	        mongoDatabase = MongoUtils.getMongoConn();
	        MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
	        FindIterable<Document> documents = comment.find();
	        for (Document document : documents) {
	            System.out.println(document);
	        }
	    }


	    
	    @Test
	    public void insertOneDocument(){
	        mongoDatabase = MongoUtils.getMongoConn();
	        MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
	        Document document = new Document("_id", "7").append("articleid","100001")
	                .append("content","吃饭前,先喝杯水或一碗汤,可减少饭量,对控制体重有帮助")
	                .append("userid","1007").append("nickname","玛丽莲•梦露").append("age","18")
	                .append("phone"," 13937165554").append("createdatetime",new Date())
	                .append("likenum","8888").append("state","null");
	        comment.insertOne(document);
	    }

	    
	    @Test
	    public void updateDocument(){
	        mongoDatabase = MongoUtils.getMongoConn();
	        MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
	        Document document = new Document("content","饭后半小时最好不要喝大量的水,以免冲淡胃液,稀释胃酸,损害消化功能");
	                comment.updateOne(Filters.eq("content","吃饭前,先喝杯水或一碗汤,可减少饭量,对控制体重有明显的帮助"),new Document("$set",document));
	    }

	    
	    @Test
	    public void deleteDocument(){
	        mongoDatabase = MongoUtils.getMongoConn();
	        MongoCollection<Document> comment = mongoDatabase.getCollection("comment");
	        comment.deleteOne(Filters.eq("_id","7"));
	    }

5、运行Junit测试类

6、查看articledb数据库 是否创建集合comment和creatorblue,comment集合中是否插入文档成功

源代码

gitee.com/ossbar/stud…

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=21034,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?