java 2022/02/23 (<E>, static, db연결, lombok)

무간·2022년 2월 23일

파일명 Exam1.java (E)

E는 타입이 없는 상태로 변수를 사용할 때 타입을 지정해서 사용함

package com.example.basic;

// 제너릭
// 파일명 : Exam1.java
public class Exam1<E> { // <E>는 타입을 변경하여 사용 할때사용(타입이 지정되지 않은것)
    private int num = 0;    // 숫자형
    private E name = null;  // 타입이 없음.  name이라는 변수에 타입을 정하지 않고 만듬

    // name을 변경하기
    public void setData(E na){
        this.name = na;
    }

    // name값 가져가기
    public E getData(){
        return this.name;
    }    
}

파일명 Exam2.java (static)

static은 외부에서 객체를 생성하지 않고 호출 할 수 잇음

package com.example.basic;

// public   공용
// private  개인

// 클래스
public class Exam2 {
    // 객체를 직접1개 만들기
    private static Exam2 obj = new Exam2();

    // 생성자 private 외부에서 생성불가
    private Exam2(){

    }

    // 메소드 => 객체가 생성되고 호출되는 것
    // static이 있으면 객체를 생성하지 않고 호출할 수 있음
    public static Exam2 create(){
        return obj;
    }    
}

mongodb연결

pom.xml파일의

숫자 11로 바꿈

<dependency>
   <groupId>org.mongodb</groupId>
   <artifactId>mongodb-driver-sync</artifactId>
   <version>4.2.2</version>
</dependency>

이 부분에 추가


lombok 익스텐션 설치

@Getter @Setter @NoArgsConstructor @AllArgsConstructor @ToString
사용을 위해 설치함

vscode에 익스텐션설치

pom.xml파일의

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.16</version>
  <scope>provided</scope>
</dependency>

이 부분에 추가


파일명 /db/MemberDB.java

package com.example.db;

import java.util.ArrayList;

import com.example.vo.Member;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.InsertOneResult;
import com.mongodb.client.result.UpdateResult;

import org.bson.Document;
import org.bson.conversions.Bson;



// 파일명 : MemberDB.java
public class MemberDB {
    
    private MongoCollection<Document> collection = null;

    // 생성자
    // DB연결시킴
    public MemberDB(){
        String url = "mongodb://id219:pw219@1.234.5.158:37017/db219";

        // 1. 접속하기 static로 되어있음. 접속은 객체를 n개 생성 불가
        MongoClient client = MongoClients.create(url);

        // 2. db연결
        MongoDatabase db = client.getDatabase("db219");

        // 3. 컬렉션 선택 (member2) 
        this.collection = db.getCollection("member2");

    }

    // 메소드 여러개 조회
    public ArrayList<Member> selectListData(){ // ArrayList 가변길이 배열
        try{
            // 전체 조회하기, 정렬을 _id 오름차순
            FindIterable<Document> docs = this.collection.find().sort(Filters.eq("_id", 1) );

            // 클레스명<E> list = new 클래스명<E>();
            ArrayList<Member> list = new ArrayList<Member>();
            for(Document tmp:docs){
                Member sendMember = new Member();
                sendMember.setId(tmp.getString("_id"));
                sendMember.setName(tmp.getString("name"));
                sendMember.setAge(tmp.getInteger("age"));
                sendMember.setRole(tmp.getString("role"));
                sendMember.setRegdate(tmp.getString("regdata"));

                list.add(sendMember); //Member 수만큼 수행
            }            
            return list;
        }
        catch(Exception e){
            e.printStackTrace(); //오류출력
            return null;
        }
    }

    // 메소드 1개조회
    public Member selectOneData(Member member){
        try{
            // Document => Member
            // 조건
            Bson bson = Filters.eq("_id", member.getId());

            FindIterable<Document> docs = this.collection.find(bson);
            Member sendMember = new Member();
            for( Document tmp : docs){ // 1회 반복
                sendMember.setId(tmp.getString("_id"));
                sendMember.setName(tmp.getString("name"));
                sendMember.setAge(tmp.getInteger("age"));
                sendMember.setRole(tmp.getString("role"));
                sendMember.setRegdate(tmp.getString("regdata"));

            }
            return member;
        }
        catch(Exception e){
            e.printStackTrace(); //오류출력
            return null;
        }
    }


    // 메소드 수정
    public int updateData(Member member){
        try{
            // 수정하고자 하는 아이디(조건)
            Bson bson = Filters.eq("_id", member.getId());

            Bson bson1 = Updates.set("name",member.getName());
            Bson bson2 = Updates.set("age",member.getAge());
            Bson bson3 = Updates.combine(bson1,bson2);

            UpdateResult result = this.collection.updateOne(bson, bson3);
            if(result.getModifiedCount() == 1L ){
                return 1;
            }
            return 0;
        }
        catch(Exception e){
            e.printStackTrace(); //오류출력
            return -1;
        }
    }


    // 메소드 추가
    public int insertData(Member member){
        try{
            Document doc = new Document();
            doc.append("_id",member.getId());
            doc.append("name",member.getName());
            doc.append("role",member.getRole());
            doc.append("age",member.getAge());
            doc.append("regdate",member.getRegdate());            

            InsertOneResult result = this.collection.insertOne(doc);

            System.out.println("결과 : " + result);

            if(result.getInsertedId().asString().getValue().equals(member.getId() ) ){
                return 1;
            }
            return 0;       
        }
        catch(Exception e){
            e.printStackTrace(); //오류출력
            return -1;
        }
    }

    // 메소드 삭제
    // get~ 정보가져오기
    // set~ 정보변경
    public int deleteData(Member member){
        try{
            // 조건만들기
            Bson bson = Filters.eq("_id", member.getId());
            // 삭제하기
            DeleteResult result = this.collection.deleteOne(bson);
            if(result.getDeletedCount() == 1L){
                return 1;
            }
            return 0;

        }
        catch(Exception e){
            e.printStackTrace(); //오류출력
            return -1;
        }
    }
}

파일명 /vo/Member.java

// main / java / com / example / vo
package com.example.vo;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor

// 파일명과 클래스명은 일치 : Member.java (대소문자 구분함)

// 변수
// const member = {_id:'aaa@gmail.com', name:'aaa', age:20, role:'CUSTOMER', regdate:'2022-02-22'}
public class Member {
    // 1. 변수
    private String id      = null;
    private String name    = null;
    private String role    = null;
    private int age        = 999;
    private String regdate = null;
   
}

파일명 /App.java

package com.example;

import java.util.ArrayList;
// import java.util.Scanner;
// import com.example.basic.Exam2;
// import com.example.vo.Book;
// import com.example.basic.Exam1;
// import com.example.view.Print1;
// import com.example.vo.Item;
// import com.example.vo.Member;
import com.example.db.MemberDB;
import com.example.vo.Member;

// import com.example.view.Print;
// // ctrl + space로 생성
// import com.example.vo.Board;

// 프로그램 시작 위치
public class App {
    public static void main(String[] args) {        
        
        // 객체생성
        MemberDB obj = new MemberDB();

        ArrayList<Member> list = obj.selectListData();

        for( Member tmp : list ){
            System.out.println(tmp.toString());
        }
        
        
        
        
    }
}

        // // 객체생성
        // MemberDB obj = new MemberDB();

        // // 조회하기 위한 아이디 전달
        // Member member = new Member();
        // member.setId("e");
        

        // Member member1 = obj.selectOneData(member);

        // if( member1 != null){
        //     System.out.println(member1.toString());
        // }

        // =========================================================

        //  // 객체생성
        //  MemberDB obj = new MemberDB();

        //  // 수정을 위한 아이디,내용 전달
        //  Member member = new Member();
        //  member.setId("e");
        //  member.setName("변경1");
        //  member.setAge(999);
         
        //  int ret = obj.updateData(member);
        //  System.out.println(ret);

        // =========================================================

        // // 객체생성
        // MemberDB obj = new MemberDB();

        // // 삭제를 위한 아이디 전달
        // Member member = new Member();
        // member.setId("a");

        // //삭제하기
        // int result = obj.deleteData(member);

        // // 결과확인
        // System.out.println(result);  

        // =========================================================
        
        // // 객체 생성
        // MemberDB obj = new MemberDB();

        // // 추가하기 위한 정보 전달
        // Member member = new Member();
        // member.setId("g");
        // member.setAge(30);
        // member.setRole("CUSTOMER");
        // member.setName("ggg");
        // member.setRegdage("2022");

        // // 추가하기
        // int ret = obj.insertData(member);
        // // 결과 확인
        // if(ret == 1 ){
        //     System.out.println("추가 성공");
        // }
        // else{
        //     System.out.println("추가 실패");
        // }


        // =========================================================

        // Scanner scanner = new Scanner(System.in);
        // while(true){
        //     System.out.println("1.추가, 2.삭제, 0.종료");
        //     int menu = scanner.nextInt();
        //     if(menu ==1) {
        //         MemberDB obj = new MemberDB();
        //         Member member = new Member();
        //         member.setId("g");
        //         member.setAge(30);
        //         member.setRole("CUSTOMER");
        //         member.setName("ggg");
        //         member.setRegdage("2022");

        //         int ret = obj.insertData(member);
        //         if(ret == 1 ){
        //             System.out.println("추가 성공");
        //         }
        //         else{
        //             System.out.println("추가 실패");
        //         }
        //     }
        //     else if(menu ==2){
        //         MemberDB obj = new MemberDB();
        //         Member member = new Member();
        //         member.setId("f");

        //         int ret = obj.deleteData(member);
        //         if(ret == 1 ){
        //             System.out.println("삭제 성공");
        //         }
        //         else{
        //             System.out.println("삭제 실패");
        //         }

        //     }
        //     else if(menu ==0){
        //         break;
        //     }
        // }



        // =========================================================

        // // 객체생성 => 클래스명 obj = new 클래스(생성자)();
        // // Book obj = new Book();              // Book.java의 생성자 public Book()을 사용
        // // Book obj = new Book(2L,"java책");   // Book.java의 생성자 public Book(long code, String title) 을 사용                
        // // Book.java의 생성자 public Book(long code, String title, int price, String writer) 을 사용
        // Book obj = new Book(1L,"java책", 3000, "저자1");   
        // obj.setPrice(2000);        

        // Book obj1 = new Book(2L,"node책", 4000, "저자2");   
        // Book obj2 = new Book(3L,"css책", 5000, "저자3");   

        // System.out.println("obj : " + obj.toString() );
        // System.out.println("obj1 : " + obj1.toString() );
        // System.out.println("obj2 : " + obj2.toString() );

        // =========================================================

        // // 클래스 객체명 = new 클래스();
        // // Integet, String, Float 로 타입 변경 가능
        // Exam1<Integer> obj = new Exam1<Integer>();
        // //Exam1<String> obj = new Exam1<String>();
        // //Exam1<Float> obj = new Exam1<Float>();
        // // 값 변경
        // obj.setData(13);
        // //obj.setData("aaa");
        // //obj.setData(1.4f);
        
        // System.out.println(obj.getData());

        // =========================================================

        // // const arr = [{},{}]
        // // 빈것 2개 만들기
        // Item[] arr = new Item[2];

        // // 2개의 물품을 보관
        // for(int i=0; i<arr.length; i++){
        //     arr[i] = new Item();
        //     arr[i].setNo(i+1);
        //     arr[i].setName("가나다");
        //     arr[i].setPrice(2000);
        //     arr[i].setQuantity(200);
        // }

        // // Print1객체 생성, 2개의 물품정보 전달
        // Print1 obj = new Print1();
        // obj.setItem(arr);
        // // 실제 프린트 수행
        // obj.printAction();

        // =========================================================

        // // 1. 게시판 데이터를 추가함
        // Board obj = new Board();        
        // obj.setNo(1);
        // obj.setTitle("제목1");
        // obj.setWriter("작성자2");
        // obj.setHit(100);
        // obj.setContent("내용1");

        // // 2. 프린트하기
        // Print obj1 = new Print();
        // obj1.setBoard( obj );   // 준비물 전달단계
        // obj1.printAction();     // 실제 프린트 수행시킴

        // =========================================================    

        // // console.log("Wow"); 와 같은것
        // // 변수의 타입을 꼭 입력해주어야 함
        // int a =1; // 정수 1을 a변수에 넣음
        // float b = 1.5f; // 실수 1.5를 b변수에 넣음
        // char c = 'a'; // 문자 1개 a를 c변수에 넣음
        // String d = "hello"; // 문자열 hello를 d변수에 넣음

        // // 1. const obj = { a:1, b:1.5, c:'a', d:"hello" } => object (객체)
        // // 2. const arr = [{},{},{}]

        // // 출력
        // System.out.println("a변수 값은 : " + a);
        // System.out.println(b);
        // System.out.println(c);
        // System.out.println(d);

        // // 1. 클래스명 객체명 = new 클래스명(); 객체 생성
        // Member obj = new Member();

        // int a = obj.getAge();
        // System.out.println(a);

        // // 2. 필요한 값 세팅
        // obj.setId("aaa");
        // obj.setName("bbb");

        // // 3. 현재까지 추가되어있는 값을 확인
        // System.out.println(obj.toString());
profile
당신을 한 줄로 소개해보세요

0개의 댓글