MongoDBにアクセス-春の春のエントリースタディノート14

コースの内容は、Spring Family Bucketをプレイしているオタクの時間からのもので、侵入されて削除されました。リンクは次のとおりです。
https://time.geekbang.org/course/intro/100023501

7日目1/2

MongoDBを使用する前の準備

NoSQL

4つのブロック:KVタイプRedisとMemcache、
ドキュメントタイプMongoDBとCouchbase、
列ストレージHBaseとCassandra、
グラフデータベースNeo4j

MongoDBデータベース

Spring Dataを介したサポート
MongoDBJDBCTemplateと同様に、Spring Dataは
JPAリポジトリのようなMongoDBテンプレートを提供し、SpringDataはMongoDBリポジトリを提供します

注釈

@Documentは@Entityと同様である
@Id
各種データシャーディングの複雑さを処理するためにIDに従ってMongoDBの実行自動シャーディング

MongoDBのライブラリと権限を初期化します

ユーザー名とパスワードは最後のメモで構成されています。rootは
最初にコンテナーを起動します

docker start mongo

次にbashを開始し、DBに接続します

docker exec -it mongo bash
mongo -u root -p root

ライブラリspringbucksを作成します(実際にはこのライブラリを使用しますが、システムが自動的に作成します)

use springbucks

行入力に基づいてユーザーと権限を作成する

 db.createUser(
  {
  user: "springbucks",
  pwd: "springbucks",
  roles: [
  { role: "readWrite", db: "springbucks" }
  ]
  }

ここに画像の説明を挿入

SpringでMongoDBにアクセスする

プログラムを実行すると、構成と出力情報
ここに画像の説明を挿入
が表示されます。cmdを使用してデータベースに接続すると、ドキュメントデータベースに保存されている挿入情報を確認できます。
ここに画像の説明を挿入

MongoTemplateを使用する

MongoDBテンプレートの@Idのアノテーションは、JPAのIdではなくspringframework.data.annotation.Idです。

application.propertiesでspring.data.mongodb.uri =を構成して、データベースを指定します

偽のコード

@SpringBootApplication
@Slf4j
public class MongoDemoApplication implements ApplicationRunner {
    
    
	@Autowired
	private MongoTemplate mongoTemplate;

	public static void main(String[] args) {
    
    
		SpringApplication.run(MongoDemoApplication.class, args);
	}

	@Bean
	public MongoCustomConversions mongoCustomConversions() {
    
    
		return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
	}

	@Override
	public void run(ApplicationArguments args) throws Exception {
    
    
	
    //逻辑代码
	···
	}

使用MongoRepository

EnableMongoRepositoriesアノテーションを追加して、サポートを有効にします

偽のコード

@Slf4j
@SpringBootApplication
@EnableMongoRepositories
public class MongoRepositoryDemoApplication implements CommandLineRunner {
    
    
	@Autowired
	private CoffeeRepository coffeeRepository;

	public static void main(String[] args) {
    
    
		SpringApplication.run(MongoRepositoryDemoApplication.class, args);
	}

	@Bean
	public MongoCustomConversions mongoCustomConversions() {
    
    
		return new MongoCustomConversions(Arrays.asList(new MoneyReadConverter()));
	}

	@Override
	public void run(String... args) throws Exception {
    
    
	    //逻辑代码
	···
	}

CoffeeRepositoryクラス

package geektime.spring.data.mongodemo.repository;

import geektime.spring.data.mongodemo.model.Coffee;
import org.springframework.data.mongodb.repository.MongoRepository;

import java.util.List;

public interface CoffeeRepository extends MongoRepository<Coffee, String> {
    
    
    List<Coffee> findByName(String name);
}

余談:MongoCustomConversionsのBeanを注入する理由

MoneyReadConverterメソッドはドキュメントをお金に変換します

SpringBootでSpringDatamongoDBはどのように構成されていますか

スプリングブートautoconfigの
下のデータの下のmongoの下のmongoDataAutoConfiguration

mongoCustomConvertionsが途中で渡され、変換が含まれていないことがわかったため、自分で定義した変換を渡せば置き換えることができます。

また、ConditionalOnMissingBeanアノテーションでマークされています。つまり、デフォルトで使用される変換を含まないBeanはありません。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43596589/article/details/112833963