SpringBootでMongoDBをバインドする


今までSQL MAPERVSORMでやってきたけど今回は.
様々なタイプのDBに適応するために作られています.
MysqlはRDBだけどmongodyはNOSQLが一番近い!NOSQLの経験事項があるかどうかの公募も多いです.
hdfsまたはデータ分散処理の原因は、RDBが長ければ長いほど、その値をRDBに入れるのではなく、NOSQLに入れるべきだと考えられるためであるかもしれない.
---ここまではプライベートトークで、
よし、依存性をつけよう~
    implementation ('org.springframework.boot:spring-boot-starter-data-mongodb')
ええ、そうです.彼らは私を他の場所でそうさせました.
implementation ('org.springframework.boot:spring-boot-starter-data-mongodb-reactive')
それは.
前者の場合はMongoRepoが単独で使用されている場合ですが、そう宣言すると他のDBなどは使用できません…
後者はREACIVEなので、他に遊ぶこともできます!
モンゴDBだけ書くつもりなら、電子的に行っても大丈夫です.

このように設定して続行します
yml構造は以下の通りである
spring:
  data:
    mongodb:
      host: 546.465.445
      port: 27017
      authentication-database: admin
      username: qweqwe
      password: 123
      database: qwerqwer
      # uri: mongodb: //546.465.445:27017/qwerqwer
値をランダムにhostに配置するか、hostにlocalhostまたはipeを配置して適切に設定します.
authentication-databaseはlocalhost内で接続する場合は必要ないようですが、他のipから接続しようとすると、筆者は...設定を受け入れるには...

ROMリセットエラー


もし間違っていたら...追加:
    implementation('org.projectlombok:lombok')
    annotationProcessor ('org.projectlombok:lombok')

サービスとコントローラを簡単に作成し、呼び出されるかどうかをテストします.
@RequiredArgsConstructor
@RestController
@CrossOrigin(origins = "*", allowedHeaders = "*")
public class ShelterController {
    private final ShelterService shelterService;

    @GetMapping("api/shelter/find/earthquakes/{title}")
    public String findById(@PathVariable String title){
        System.out.println("test");
        return null;
        // return (ShelterNameSearchResponsseDto) shelterService.getShelterList(title);
    }
}
@RequiredArgsConstructor
@Service
public class ShelterService {

    public List<String> getShelterList(String title) {
        System.out.println("test");
        return null;
    }
}

正常に動作します.postmanに電話してください.
Yahoは正常に動作


筆者のいるモンゴデビはすべてそのように保存されています.
エンティティの作成
public class Earchquakeshelter {
    @Id
    private String Eq_id;
    private Long Eq_num;
    private String Eq_name;
    private String Eq_address;
    private Long Eq_area;
    private Long Eq_long;
    private Long Eq_lat;
}

待って!!!


モンゴルdbを書きたいのですが、jpa方式を選びます.しかし、私たちが無視した事実は...
上記のエラーが発生した理由を検索し、Spring Data JPA Docで関連コンテンツを見つけました.ログなどのエラーが発生したのは、Spring-Dat-JPAでは、参照スコア()がPropertyを検索するナビゲーションパスを指定する保持値*であるためです.
表示...dbに保存されている色に変えます
mongodbにはハングルが入っているので、ハングル変数名で書きます.
@Document(collection = "earthquake_outdoor_csv_select")
@Getter
@NoArgsConstructor
public class Earthquakeshelter {

    @Id
    private String id;
    private Long 시설번호;
    private String 수용시설명;
    private String 상세주소;
    private Long 시설면적;
    private Long 경도;
    private Long 위도;
}

ここには今分かれ道がある
クエリーはMongoTemplateクエリーを使用するか、repoを直接作成してクエリーするか
mongoTemplateはmongodyが提供する方法です

Mondo DB TEMPLATEメソッドはそれ以外にもあります...うん.
後で時間があればテンプレートを書いて、今回はREPOで
テンプレートの場合、サービス側でテンプレートを宣言して呼び出すと終了します.
repo、repoでlike%a%を使用真剣に探して、regexという正規表現を使うことができます.
import java.util.List;
public interface ShelterRepo extends MongoRepository<Earthquakeshelter, String> {

        List<Earthquakeshelter> findBy수용시설명Regex(String title);
        }

サービス団
@RequiredArgsConstructor
@Service
public class ShelterService {

    private final ShelterRepo shelterRepo;
    public ShelterNameSearchResponseDto getShelterList(String title) {
        String Regtitle = ".*" + title + ".*";
        System.out.println(Regtitle);
        List<Earthquakeshelter> earthquakeshelterlist = shelterRepo.findBy수용시설명Regex(Regtitle);
        return new ShelterNameSearchResponseDto(earthquakeshelterlist);
    }
}

このように濾過する

@Getter
@NoArgsConstructor
public class ShelterNameSearchResponseDto {
    private List<Earthquakeshelter> earthquakeshelters;

    public ShelterNameSearchResponseDto(List<Earthquakeshelter> list){
        this.earthquakeshelters = list;
    }
}
応答を宣言する.
制御室に行きます.
@RequiredArgsConstructor
@RestController
@CrossOrigin(origins = "*", allowedHeaders = "*")
public class ShelterController {
    private final ShelterService shelterService;

    @GetMapping("api/shelter/find/earthquakes/{title}")
    public ShelterNameSearchResponseDto findById(@PathVariable String title){
        System.out.println("test" + title);

         return (ShelterNameSearchResponseDto) shelterService.getShelterList(title);
    }
}

postmanでクエリーしてテストします.

予圧効果はいいですね...
これらはすべて単語+単語で構成されており、suffix arrayを使用すると検索エンジンをより効率的に作成できますが、まずここで終わります.