package lambda;
// 익명함수 - 객체지향의 문법에는 어울리지 않는 개념 Java 8에서 추가가 됨
// 외부에 간단한 인터페이스를 구현해서 인터페이스를 활용하는 방식으로 사용
public class LambdaEx {
public static void main(String[] args) {
// lambda a, b : a+b
Calculator mc = (int a, int b) -> a+b; // -> 뒤의 연산이 추상메서드의 실제 동작으로 들어간다
System.out.println(mc.sum(4, 6));
Calculator mc2 = (a, b) -> a+b;
int result = mc2.sum(4, 10); // 이미 인터페이스에 int 자료형을 강제했으므로 생략 가능
System.out.println(result);
// 인터페이스를 상속받은 구상클래스 -> 생성자 사용 필요
MyCaculater mc3 = new MyCaculater();
int result2 = mc3.sum(5, 7);
System.out.println(result2);
}
}
interface Calculator { // 추상메서드 - 점검정도
int sum(int a, int b); // 리턴타입, 함수명, 파라미터 개수, 파라미터의 자료형
}
class MyCaculater implements Calculator { // 인터페이스를 상속받은 구상 클래스 생성
@Override
public int sum(int a, int b) {
return a + b;
}
}
package mulDimArray;
import java.util.ArrayList;
import java.util.Arrays;
public class ArrayListEx {
public static void main(String[] args) {
// 1차원 배열
ArrayList<Integer> arr = new ArrayList();
arr.add(3);
arr.add(2);
System.out.println(arr.toString());
arr.remove(1);
System.out.println(arr.toString());
// 2차원 배열
ArrayList<ArrayList<Integer>> arr2 = new ArrayList<>();
// ArrayList<ArrayList<Integer>> arr3 = new ArrayList();
arr2.add(new ArrayList<>());
arr2.get(0).add(1);
arr2.get(0).add(2);
arr2.add(new ArrayList<>());
arr2.get(1).add(11);
arr2.get(1).add(12);
// 1. 그냥 반복문 size()
for (int i = 0; i < arr2.size() ;i++) {
for (int j = 0; j < arr2.get(i).size() ; j++) {
System.out.print(arr2.get(i).get(j));
}
System.out.println();
}
// 2. for (자료형[] 원소 :배열명) -- enhanced for문 (강화된 for문)
for (ArrayList<Integer> ar : arr2) {
for (int a : ar) {
System.out.print(a);
}
System.out.println();
}
// 3-1. Stream을 사용해서 값을 꺼내는 방법
arr2.stream()
.flatMap(ar -> ar.stream())
.forEach(value -> System.out.println(value));
// 3-2. Stream을 사용해서 값을 꺼내는 방법
arr2.forEach(ar -> ar.forEach(value -> System.out.println(value)));
// 4. deepToString 사용해서 값을 꺼내는 방법
System.out.println(Arrays.deepToString(arr2.toArray()));
}
}
Maven의 특징
- 간편한 구성:
- Maven은 구성을 위해 간단한 XML 파일을 사용하므로 사용자 친화적입니다.
- 규칙:
- 규칙을 따르므로 수동 구성의 필요성이 줄어듭니다.
- 종속성 관리:
- Maven은 종속성을 중앙 집중화하여 외부 라이브러리를 쉽게 처리할 수 있습니다.
- 라이프사이클 및 플러그인:
- 표준 빌드 프로세스를 정의하고 플러그인을 통한 사용자 정의를 허용합니다.
- 전이적 종속성 해결:
- Maven은 종속성을 자동으로 관리하여 복잡한 종속성 그래프를 단순화합니다.
- 확장성:
- Maven은 플러그인을 사용하여 확장 가능하므로 개발자가 사용자 정의 기능을 추가하고 다른 도구와 원활하게 통합할 수 있습니다.
JDBC의 실행순서
|
Driver 로딩
|
Driver Loading
|
Class.forName("com.mysql.cj.jdbc.Driver");
|
|
|
Java와 DB 연결
|
Connection
|
Connection conn = DriverManager.getConnection(url, id, pw);
|
|
|
Query 전송 객체 생성
|
Statement
|
Statement stmt = conn.createStatement();
|
|
|
Query 문장 작성
|
query
|
String sql = "select * from dept";
|
|
|
Query 전송
|
run
|
ResultSet rs = stmt.executeQuery(sql); // Get, Set,
|
|
|
연결 해제
|
close
|
rs.close(); stmt.close(); conn.close();
|
-
- GUI로 실행
- 패키지 익스플로러에서 day06Jdbc 프로젝트를 선택하고 마우스 오른쪽 버튼을 눌러 [Configure] → [Convert to Maven Project] 선택
https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.28
package basic;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.DriverManager;
public class Dept1 {
public static void main(String[] args) {
//byte code(*.class)를 메모리에 저장(로딩)
try {
Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println("로딩 정상 완료");
/* 개인 로컬에 설치된 mysql database접속 기능의 객체 생성 - 접속 성공
* 위치, id/pw, fisa database
* 접속 요청시 프로그램 관점에선 접속 기능의 객체가 생성
* */
//jdbc:mysql://localhost/fisa?characterEncoding=UTF-8&serverTimezone=UTC
String url = "jdbc:mysql://localhost/fisa?characterEncoding=UTF-8&serverTimezone=UTC";
String id = "root";
String pw = "0000";
// db접속 객체
Connection conn = DriverManager.getConnection(url, id, pw);
System.out.println(conn); //com.mysql.cj.jdbc.ConnectionImpl@43df23d3
// sql문장 생성 및 실행
/* 문장 실행 객체 생성은 이미 특정 db에 접속된 상태에서 생성해야만 해당 db와 소통
* Connection 객체로부터 메소드로 Statement 객체 받음
*/
Statement stmt = conn.createStatement();
/* select deptno from dept 문장으로 검색
* 결과
* +--------+------------+----------+
| deptno | dname | loc |
+--------+------------+----------+
| 10 | ACCOUNTING | NEW YORK |
| 20 | RESEARCH | DALLAS |
| 30 | 영업 | CHICAGO |
| 40 | OPERATIONS | BOSTON |
*/
/* ResultSet API는 주요한 기능
* 1. 커서(포인터) 이동 기능 : public boolean next(){}
* 2. 데이터 반환 기능 : getXxx(컬럼 순번 또는 컬럼명)
* 정수값 반환 메소드 : getInt(컬럼 순번 또는 컬럼명)
* 문자열값 " : getString(컬럼 순번 또는 컬럼명)
*/
String sql = "select * from dept";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getInt("deptno") + " "
+ rs.getString("dname") + " "
+ rs.getString("loc") );
}
/* 10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 영업 CHICAGO
40 OPERATIONS BOSTON */
//자원반환(필수) 순서 중요
rs.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();//예외 발생 상황을 디테일하게 출력
}
}
}
model view controll
데이터 화면 er

Lombok
💡 Lombok Lombok(롬복)은 Java 라이브러리로 반복되는 getter, setter, toString등의 메서드 작성 코드를 줄여주는 코드 다이어트 라이브러리입니다.
가. Lombok 설치
- 다운로드
- 다운받은 파일을 더블클릭 후 Specify location을 클릭해 롬복을 사용할 STS가 설치된 경로 선택 후 Install/Update 버튼 선택
- STS 재시작 후 Lombok 설치
- Help -> Install New Software -> 검색창에서 https://projectlombok.org/p2 검색
- lombok이 뜨면 선택하여 설치!
- STS를 껐다가 다시 킨다.
-
- pom.xml 에 lombok 추가
1) 생성자 관련 어노테이션
- @NoArgsConstructor : 매개 변수가 없는 기본 생성자를 생성
- @RequiredArgsConstructor : final 필드만 포함된 생성자를 생성
- @AllArgsConstructor : 모든 필드를 포함한 생성자를 생성
2) 메소드 관련 어노테이션
- @Getter : Getter를 자동으로 생성
- @Setter : Setter를 자동으로 생성
- @ToString : toString 메소드를 자동으로 생성
- @ToString(onlyExplicitlyIncluded = true) 를 사용해서 명시적으로 @ToString.Include 가 붙은 필드만 포함시킬 수도 있고,
- @ToString.Exclue를 명시한 필드만 제외할 수도 있음
- @EqualsAndHashCode : equals, hashCode 메소드를 자동으로 생성
- @With : with 메소드를 자동으로 생성
git허브 협업
ctrl + s, 드래그, commit
후에 비밀번호는 토큰으로.

토큰





만약 돌리고 싶다면

이전 커밋으로 돌리고 싶다면

만약 충돌이 일어난다면 프로젝트 우클릭 후 pull해주면 됨
'Study Language > Java' 카테고리의 다른 글
| java 4 (1) | 2024.01.24 |
|---|---|
| 우리FISA AI엔지니어링 - JAVA 2 (1) | 2024.01.08 |
| 우리 FISA AI엔지니어링 - JAVA 1 (1) | 2024.01.05 |