9:20 경 학원 도착
주말에 복습하던 내용 조금 더 정리하고 수업 들을 준비
<9:30 1교시>
로컬에서 새로 만든 폴더에 대해 vs code에서 terminal로 새로운 "혈통"의 깃허브 저장소 만들기
git init
git add .
git commit -m "index.html added"
git remote add origin 저장소의위치(깃허브링크)
git push origin master
올린 파일 변경하고 다시
git add .
git commit -m "p1 added"
git push origin master
깃허브에서 README.md 작성하고
commit changes 눌러서 README.md를 만든 다음
로컬에서 README.md를 받으려면
git fetch origin master
git checkout master
를 하면 README.md가 보일 것이고,
git merge origin/master
방금 만든 원격 저장소를 MyHome 폴더에서 clone 하려면 새로운 폴더 만들 필요 없이 그냥 바로 git bash를 열고
git clone 저장소위치(깃허브링크)
를 입력하면 끝난다.
나는 새로운 폴더를 만들어서 시도했는데, 굳이 그럴 필요가 없었던게, git init을 하지 않으면 그 폴더 전체가 git에 의해 관리되겠다는 의미가 아니기 때문에 그냥 git bash를 여는 거 자체는 전혀 문제가 아니어서 걱정할 필요가 없었다.
그냥 git bash 열자마자 clone 하면 바로 복제된 폴더가 나타난다.
local 폴더에 있는 것은 학원에서 만든 것 그리고 이걸
Remote로 연결한 깃허브저장소의 "혈통의 시작"이자 기원이 된 것이 local의 폴더.
MyHome 폴더에 있는 것은 복제된 것
로컬(처음 만들어진 곳)에서 변경된 내용이 있다면 add, commit 하고 push 한 다음 깃허브에서 확인해보고
MyHome 폴더에서는 fetch origin master 하고 merge origin/master 하면 된다.(또는 pull로 fetch와 merge를 한번에 할 수 있다)
거꾸로 MyHome 폴더에서 변경된 내용이 있다면 add commit 하고 push 한 다음 깃허브에서 확인해보고
로컬에서 fetch origin master 하고 merge origin/master 하면 된다.(마찬가지로 pull로 한 번에 할 수 있다)
<10:30 2교시>
package test.main;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import test.dto.MemberDto;
import test.util.DBConnector;
public class MainClass10 {
public static void main(String[] args) {
//추가할 회원 정보라고 가정하자
String name="이름1";
String addr="노량진";
//추가할 회원정보를 MemberDto 객체에 담고
MemberDto dto=new MemberDto();
dto.setName(name);
dto.setAddr(addr);
//미리 준비된 메소드를 이용해서 DB에 저장하고 성공여부를 리턴받기
boolean isSuccess=insert(dto);
if(isSuccess) {
System.out.println("저장했습니다");
}else {
System.out.println("저장하지 못했습니다");
}
}
//매개변수에 전달된 MemberDto 객체에 담긴 name과 addr을 DB에 저장하고
//작업의 성공여부를 리턴하는 메소드
public static boolean insert(MemberDto dto) { //리턴 값이 boolean이라서 boolean 값이 나오기 전까지는 에러가 난 상태
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
//변경된 row 갯수를 저장할 변수를 0을 대입하여 미리 만들어두기
int rowCount=0;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
Insert into member
(num, name, addr)
values(member_seq.Nextval, ?, ?)
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
//?에 값 바인딩하기
pstmt.setString(1, dto.getName());
pstmt.setString(2, dto.getAddr());
//sql문 실행하고 추가(Insert)되거나, 변경(Update)되거나, 삭제(Delete)된 row의 갯수(int 값)를 리턴 받음
rowCount= pstmt.executeUpdate();
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(Exception e) {}
}
//rowCount 변수에 들어 있는 값을 확인해서 작업의 성공 여부를 리턴해줌
if(rowCount>0) {
return true;
}else {
return false;
}
}
}
예제 풀어보기
* 수정할 회원의 정보(번호, 이름, 주소)가 MemberDto 객체에 담겨서 전달되는 메소드
* 성공여부가 리턴되는 메소드
<11:30 3교시>
2교시 예제 답
package test.main;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import test.dto.MemberDto;
import test.util.DBConnector;
public class MainClass11 {
public static void main(String[] args) {
//수정할 회원 정보라고 가정하자
String name="이름3";
String addr="다른 주소";
int num = 1;
//수정할 회원정보를 MemberDto 객체에 담고
MemberDto dto=new MemberDto();
dto.setName(name);
dto.setAddr(addr);
dto.setNum(num);
//미리 준비된 메소드를 이용해서 DB에 저장하고 성공여부를 리턴받기
boolean isSuccess=update(dto);
if(isSuccess) {
System.out.println("수정했습니다");
}else {
System.out.println("수정하지 못했습니다");
}
}
/*
* 수정할 회원의 정보(번호, 이름, 주소)가 MemberDto 객체에 담겨서 전달되는 메소드
* 성공여부가 리턴되는 메소드
*/
public static boolean update(MemberDto dto) {
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
//변경된 row 갯수를 저장할 변수를 0을 대입하여 미리 만들어두기
int rowCount=0;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
Update member
set name=?, addr=?
where num=?
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
//?에 값 바인딩하기
pstmt.setString(1, dto.getName());
pstmt.setString(2, dto.getAddr());
pstmt.setInt(3, dto.getNum());
//sql문 실행하고 추가(Insert)되거나, 변경(Update)되거나, 삭제(Delete)된 row의 갯수(int 값)를 리턴 받음
rowCount= pstmt.executeUpdate();
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(Exception e) {}
}
//rowCount 변수에 들어 있는 값을 확인해서 작업의 성공 여부를 리턴해줌
if(rowCount>0) {
return true;
}else {
return false;
}
}
}
row를 delete 하는 예제
처음에 앞에 두 개 때 복사 붙여넣기 했던 부분 때문에 int num을 바꾼 부분 때문에
pstmt.setInt(1, num);
부분에 num 대신 dto.getNum();을 썻는데 그렇게 할 필요가 없던 거임.
package test.main;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import test.dto.MemberDto;
import test.util.DBConnector;
public class MainClass12 {
public static void main(String[] args) {
//삭제할 회원 정보
int num = 2;
//미리 준비된 메소드를 이용해서 DB에 저장하고 성공여부를 리턴받기
boolean isSuccess=delete(num);
if(isSuccess) {
System.out.println("수정했습니다");
}else {
System.out.println("수정하지 못했습니다");
}
}
//매개변수로 전달되는 회원의 번호를 이용해서 회원 한명의 정보를 삭제하고 성공여부를 리턴하는 메소드
public static boolean delete(int num) {
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
//변경된 row 갯수를 저장할 변수를 0을 대입하여 미리 만들어두기
int rowCount=0;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
delete from member
where num=?
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
//?에 값 바인딩하기
pstmt.setInt(1, num);
//sql문 실행하고 추가(Insert)되거나, 변경(Update)되거나, 삭제(Delete)된 row의 갯수(int 값)를 리턴 받음
rowCount= pstmt.executeUpdate();
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(Exception e) {}
}
//rowCount 변수에 들어 있는 값을 확인해서 작업의 성공 여부를 리턴해줌
if(rowCount>0) {
return true;
}else {
return false;
}
}
}
회원 한명의 정보만 select 해오기
package test.main;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import test.dto.MemberDto;
import test.util.DBConnector;
public class MainClass13 {
public static void main(String[] args) {
//select 할 회원 번호
int num = 2;
//미리 준비된 메소드를 이용해서 회원번호를 전달하고 해당하는 회원 정보를 DB에서리턴받기
MemberDto dto=getData(num);
if(dto!=null) {
System.out.printf("번호:%d, 이름:%s, 주소:%s" , dto.getNum(),dto.getName(), dto.getAddr());
}else {
System.out.printf("요청한 %d 회원의 정보를 찾을 수 없습니다", num);
}
}
//매개변수로 전달되는 번호에 해당하는 회원 정보를 select 해서 MemberDto 객체에 담아서 리턴해주는 메소드
public static MemberDto getData(int num) {
//memberdto 객체를 담을 변수를 미리 선언
MemberDto dto=null;
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
select name, addr
from member
where num=?
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, num);
rs=pstmt.executeQuery();
//만일 select 된 row가 있다면 if 안으로 들어가서 실행, 없으면 바깥으로 빠져서 null return
if(rs.next()) {
//MemberDto 객체를 생성해서
dto=new MemberDto();
//select 된 정보를 담는다
dto.setNum(num);
dto.setName(rs.getString("name"));
dto.setAddr(rs.getString("addr"));
}
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
if(rs!=null)rs.close();
}catch(Exception e) {}
}
return dto;
}
}
<12:30 4교시>
주말에 java 복습 정리하던 거 이어서 정리할려고 했는데 과제가 주어졌다.
과제
package test.dao;
import test.dto.MemberDto;
/*
* 회원정보를 insert, update, delete, select(getData, getList)할 수있는 기능을 가진 객체를 생성할 클래스 설계하기 = 편하다
* -이런 기능을 가진 객체를 Data Access Object 라고 한다 DAO
*/
public class MemberDao {
//매개 변수에 전달된 MemberDto 객체에 담긴 회원 한명의 정보를 DB에 저장하는 메소드
public boolean insert(MemberDto dto) {
}
//매개 변수에 전달된 번호에 해당하는 회원 한명의 정보를 삭제하는 메소드
public boolean delete(int num) {
}
//매개 변수에 전달된 MemberDto 객체에 담긴 회원 한명의 정보를 수정하는 메소드
public boolean update(MemberDto dto) {
}
// 전체 회원 목록을 리턴하는 메소드
public List<MemberDto> getList(){
}
//매개변수에 전달된 번호에 해당하는 회원 한명의 정보를 리턴하는 메소드
public MemberDto getData(int num) {
}
}
주말에 하던거 마저 정리하고 과제 해보러 감.
과제 시도 (복사 붙여넣기의 향연)
package test.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import test.dto.MemberDto;
import test.util.DBConnector;
/*
* 회원정보를 insert, update, delete, select(getData, getList)할 수있는 기능을 가진 객체를 생성할 클래스 설계하기 = 편하다
* -이런 기능을 가진 객체를 Data Access Object 라고 한다 DAO
*/
public class MemberDao {
//매개 변수에 전달된 MemberDto 객체에 담긴 회원 한명의 정보를 DB에 저장하는 메소드
public boolean insert(MemberDto dto) {
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
//변경된 row 갯수를 저장할 변수를 0을 대입하여 미리 만들어두기
int rowCount=0;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
Insert into member
(num, name, addr)
values(member_seq.Nextval, ?, ?)
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
//?에 값 바인딩하기
pstmt.setString(1, dto.getName());
pstmt.setString(2, dto.getAddr());
//sql문 실행하고 추가(Insert)되거나, 변경(Update)되거나, 삭제(Delete)된 row의 갯수(int 값)를 리턴 받음
rowCount= pstmt.executeUpdate();
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(Exception e) {}
}
//rowCount 변수에 들어 있는 값을 확인해서 작업의 성공 여부를 리턴해줌
if(rowCount>0) {
return true;
}else {
return false;
}
}
//매개 변수에 전달된 번호에 해당하는 회원 한명의 정보를 삭제하는 메소드
public boolean delete(int num) {
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
//변경된 row 갯수를 저장할 변수를 0을 대입하여 미리 만들어두기
int rowCount=0;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
delete from member
where num=?
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
//?에 값 바인딩하기
pstmt.setInt(1, num);
//sql문 실행하고 추가(Insert)되거나, 변경(Update)되거나, 삭제(Delete)된 row의 갯수(int 값)를 리턴 받음
rowCount= pstmt.executeUpdate();
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(Exception e) {}
}
//rowCount 변수에 들어 있는 값을 확인해서 작업의 성공 여부를 리턴해줌
if(rowCount>0) {
return true;
}else {
return false;
}
}
//매개 변수에 전달된 MemberDto 객체에 담긴 회원 한명의 정보를 수정하는 메소드
public boolean update(MemberDto dto) {
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
//변경된 row 갯수를 저장할 변수를 0을 대입하여 미리 만들어두기
int rowCount=0;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
Update member
set name=?, addr=?
where num=?
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
//?에 값 바인딩하기
pstmt.setString(1, dto.getName());
pstmt.setString(2, dto.getAddr());
pstmt.setInt(3, dto.getNum());
//sql문 실행하고 추가(Insert)되거나, 변경(Update)되거나, 삭제(Delete)된 row의 갯수(int 값)를 리턴 받음
rowCount= pstmt.executeUpdate();
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(Exception e) {}
}
//rowCount 변수에 들어 있는 값을 확인해서 작업의 성공 여부를 리턴해줌
if(rowCount>0) {
return true;
}else {
return false;
}
}
// 전체 회원 목록을 리턴하는 메소드
public List<MemberDto> getList(){
//리턴해줄 객체를 미리 생성하기
List<MemberDto> list=new ArrayList<>();
//필요한 객체를 담을 지역변수 미리 준비
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//우리가 설계한 클래스로 객체생성후 Connection 객체 얻어내기
conn=new DBConnector().getConn();
String sql="""
SELECT num, name, addr
from member
""";
pstmt=conn.prepareStatement(sql);
rs=pstmt.executeQuery();
while(rs.next()) {
int num=rs.getInt("num");
String name=rs.getString("name");
String addr=rs.getString("addr");
//select 된 row 하나의 정보를 MemberDto 객체에 담는다.
MemberDto dto=new MemberDto();
dto.setNum(num);
dto.setName(name);
dto.setAddr(addr);
//부서의 정보가 담긴 DeptDto 객체를 ArrayList 객체에 누적 시킨다.
list.add(dto);
}
}catch(Exception e) {
e.printStackTrace();
}
return list;
}
//매개변수에 전달된 번호에 해당하는 회원 한명의 정보를 리턴하는 메소드
public MemberDto getData(int num) {
//memberdto 객체를 담을 변수를 미리 선언
MemberDto dto=null;
//필요한 객체를 담을 지역변수 미리 만들기
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try {
//Connection 객체의 참조값 얻어내기
conn=new DBConnector().getConn();
//실행할 미완성의 sql 문
String sql= """
select name, addr
from member
where num=?
""";
//미완성의 sql 문을 전달하면서 PreparedStatement객체의 참조값 얻어내기
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, num);
rs=pstmt.executeQuery();
//만일 select 된 row가 있다면 if 안으로 들어가서 실행, 없으면 바깥으로 빠져서 null return
if(rs.next()) {
//MemberDto 객체를 생성해서
dto=new MemberDto();
//select 된 정보를 담는다
dto.setNum(num);
dto.setName(rs.getString("name"));
dto.setAddr(rs.getString("addr"));
}
}catch(SQLException se) {
se.printStackTrace();
}finally {
try {
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
if(rs!=null)rs.close();
}catch(Exception e) {}
}
return dto;
}
}
'공부의 기록 > 자바 풀 스택 : 수업내용정리' 카테고리의 다른 글
자바 풀 스택 12/27 오후 기록 026-2 (1) | 2024.12.27 |
---|---|
자바 풀 스택 12/27 오전 기록 026-1 (1) | 2024.12.27 |
자바 풀 스택 12/26 오후 기록 025-2 (2) | 2024.12.26 |
자바 풀 스택 12/26 오전 기록 025-1 (0) | 2024.12.26 |
자바 풀 스택 12/24 오후 기록 024-2 (0) | 2024.12.24 |