파일명 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());