example> entity> Professor.java
package com.example.entity;
import java.util.Date;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter // 꺼낼때 사용
@Setter // 추가할때 사용
@ToString // 담겨있는 데이터가 어떤겁니까 // 현재의 데이터는 어떤건가요?
public class Professor {
private Long Id = null; // 학번 // null로 쓸때는 대문자 Long 써줌
private String name = null; // 이름
private String Room = null; // 연락처
private Date regdate = null; // 가입일
// OneToMany // List는 배열과 같다.
private List<Course> courses = null;
}
example> service> ProfessorService.java
package com.example.service;
import java.util.List;
import com.example.entity.Professor;
public interface ProfessorService {
// 교수등록
// 오류처리를 사용하는 곳에서 처리함. => throws Exception;
public int insertProfessor( Professor p ) throws Exception;
// 교수삭제
public boolean deleteProfessor( Professor p ) throws Exception;
// 교수변경
public short updateProfessor(Professor p) throws Exception;
// 교수자정보1명
public Professor selectOneProfessor(Long no) throws Exception;
// 전체교수명
public List<Professor> selectListProfessor(String name) throws Exception;
}
example> service> ProfessorServiceImpl.java
package com.example.service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.example.config.MongoConfig;
import com.example.entity.Professor;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
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 lombok.Getter;
import lombok.Setter;
public class ProfessorServiceImpl implements ProfessorService {
private MongoCollection<Document> collection = null; // 학생
// 생성자 => DB접속하고 collection정보 가져오기
public ProfessorServiceImpl() {
collection = MongoConfig.create().getConnection("professors");
}
@Override
public int insertProfessor(Professor p) throws Exception {
Document doc = new Document();
doc.append("_id", p.getId());
doc.append("name", p.getName());
doc.append("room", p.getRoom());
doc.append("regdate", new Date());
InsertOneResult result = collection.insertOne(doc);
if (result.getInsertedId().asInt64().getValue() == p.getId()) {
return 1;
}
return 0;
}
// 교수자를 삭제한다. 교수의 교수번호가 오면 삭제후에 참/거짓으로 반환
@Override
public boolean deleteProfessor(Professor p) throws Exception {
Bson query = Filters.eq("_id", p.getId());
DeleteResult result = collection.deleteOne(query);
if(result.getDeletedCount() == 1L){
return true;
}
return false;
}
@Override
public List<Professor> selectListProfessor(String name) throws Exception {
// .* a .* => 이름에 a가 포함된 조건
Bson query = Filters.regex("name", ".*" + name + ".*");
FindIterable<Document> list = collection.find(query);
List<Professor> retList = new ArrayList<>();
for(Document doc : list){
Professor p = new Professor();
p.setId(doc.getLong("_id"));
p.setName(doc.getString("name"));
p.setRoom(doc.getString("room"));
p.setRegdate(doc.getDate("regdate"));
retList.add(p);
}
return retList;
}
@Override
public Professor selectOneProfessor(Long no) throws Exception {
Bson query = Filters.eq("_id", no); //검색조건
MongoCursor<Document> cursor = collection.find(query).limit(1).cursor(); //1개 가져오기
if ( cursor.hasNext() ) { //가져올 항목이 있는지 확인
Document doc = cursor.next(); //1개 가져오기
//Document -> Professor객체로 변환해서 리턴
Professor p = new Professor();
p.setId(doc.getLong("_id"));
p.setName(doc.getString("name"));
p.setRoom(doc.getString("room"));
p.setRegdate(doc.getDate("regdate"));
return p;
}
return null;
}
@Override
public short updateProfessor(Professor p) throws Exception {
// 수정할 조건 정보
Bson arg0 = Filters.eq("_id", p.getId());
// 수정할 항목들
Bson arg1 = Updates.set("name", p.getName());
Bson arg2 = Updates.set("phone", p.getRoom());
Bson arg3 = Updates.combine(arg1, arg2);
UpdateResult result = this.collection.updateOne(arg0, arg3);
System.out.println(result);
if(result.getModifiedCount() == 1L){
return 1;
}
return 0;
}
}
example> view> ProfessorView.java
package com.view;
import java.util.List;
import java.util.Scanner;
import com.example.entity.Professor;
import com.example.service.ProfessorService;
import com.example.service.ProfessorServiceImpl;
public class ProfessorView {
// 서비스 객체 생성
private ProfessorService professorService = new ProfessorServiceImpl();
private Scanner scanner = new Scanner(System.in);
// 생성자
public ProfessorView() throws Exception {
while(true) {
System.out.println("1.교수등록");
System.out.println("2.교수변경");
System.out.println("3.교수삭제");
System.out.println("4.교수조회(1명)");
System.out.println("5.교수전체조회");
System.out.println("0.종료");
System.out.print("메뉴 선택 => ");
int menu = scanner.nextInt();
if(menu == 0){
break;
}
else if(menu == 5) {
scanner.nextLine(); // buffer비우기
System.out.print("검색어입력 => ");
String searchText = scanner.nextLine();
List<Professor> list
= professorService.selectListProfessor(searchText);
for(Professor tmp : list){
System.out.println(tmp.toString());
}
}
else if(menu == 4) {
scanner.nextLine(); // buffer비우기
System.out.print("교수번호 입력 ex)1 => ");
Long data = scanner.nextLong();
System.out.println(professorService.selectOneProfessor(data));
}
else if(menu == 3) {
System.out.print("정보 입력 ex)1 => ");
String data = scanner.next();
Professor p = new Professor();
p.setId( Long.valueOf( data ) );
boolean ret = professorService.deleteProfessor(p);
if(ret == true) {
System.out.println("삭제 성공");
}
else {
System.out.println("삭제 실패");
}
}
else if(menu == 2) {
System.out.print("정보 입력 ex)1, 가나다, 606 => ");
String data = scanner.next();
String[] arr = data.split(",");
Professor p = new Professor();
p.setId( Long.valueOf(arr[0]) );
p.setName( arr[1].trim() );
p.setRoom( arr[2].trim() );
int ret = professorService.updateProfessor(p);
if(ret == 1) {
System.out.println("수정성공");
}
else {
System.out.println("수정실패");
}
}
else if(menu == 1) {
System.out.print("정보 입력 ex)1, 가나다, 606 => ");
String data = scanner.next();
String[] arr = data.split(",");
Professor p = new Professor();
p.setId( Long.valueOf(arr[0]) );
p.setName( arr[1].trim() );
p.setRoom( arr[2].trim() );
int ret = professorService.insertProfessor(p);
if(ret == 1) {
System.out.println("등록성공");
}
else {
System.out.println("등록실패");
}
}
}
}
}
App.java
package com.example;
import com.view.ProfessorView;
// import java.util.Scanner;
// 파일명 == 클래스명 똑같아야함
// ex) Member.java == class Member
// ex) MemberJoin.java == class MemberJoin
public class App
{
public static void main( String[] args ){
try{
new ProfessorView();
}
catch(Exception e){
e.getStackTrace();
System.out.println(e);
}
}
}
service에서 에러 처리를 throws Exception 을 썻기 때문에
App.java에서 쓸때 !
try, catch문을 작성하여야 오류가 안뜸.
'java' 카테고리의 다른 글
국비 코딩 풀스택 수업 41일차 실시간 채팅 (0) | 2022.08.22 |
---|---|
국비 코딩 풀스택 수업 40일차 제너릭 클래스, 추상화, cursor, iterator, first, Map, Filters.and, Updates.combine (0) | 2022.08.19 |
국비 코딩 풀스택 수업 39일차 틀린거 많은 날, app제외 실행, 형변환, List사용법 및 개념, entity의 이동(mvc) (0) | 2022.08.18 |
국비 코딩 풀스택 수업 38일차 lombok, static, 서버관리 폴더따로, entity, ArrayList (1) | 2022.08.18 |
국비 코딩 풀스택 수업 37일차 라이브러리 추가, 몽고디비 연결, 제너릭 클래스 (0) | 2022.08.16 |