Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-05-12(목) 073일차 [Oracle, Spring Framework, Mybatis Framework] JOIN, 상품 등록 페이지 팀으로 만들어 보기(Insert)

옌炎 2022. 6. 17. 18:44
728x90

수업내용


1교시 (09:30-10:20)

  • 학습방법
  • 쿼리
    • 이너조인
    • 아우터조인
  • 페이징에 대한 설명

2교시 (10:30-11:20)

페이징

-- 페이징 테스트를 위한 테이블 만들기
CREATE TABLE BOARD_PAGING(
	bnum		NUMBER(20)		PRIMARY KEY,
	btitle		VARCHAR2(50)		NOT NULL,
	bname		VARCHAR2(20)		NOT NULL,
	barea		VARCHAR2(2000)		NOT NULL,
	bpass		VARCHAR2(20)		NULL,
	bwriteday	DATE				DEFAULT SYSDATE,
	bhits		NUMBER(8)			NULL
);

SELECT COUNT(BNUM)FROM BOARD_PAGING;
SELECT * FROM USER_SEQUENCES;

CREATE SEQUENCE B_SEQ INCREMENT BY 1 START WITH 1;
SELECT B_SEQ.CURRVAL FROM DUAL;
SELECT B_SEQ.NEXTVAL FROM DUAL;
  • ConnProperty.java
package a.b.c.test.paging;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public abstract class ConnProperty {
	
	public static final String KOS_URL = "jdbc:oracle:thin:@localhost:1521:orclKSY00";
	public static final String KOS_USER = "scott";
	public static final String KOS_PASS = "tiger";	
	public static final String KOS_DRIVER = "oracle.jdbc.driver.OracleDriver";
		
	public static Connection getConnection() {		
		
		Connection conn = null;
		
		try {
			Class.forName(ConnProperty.KOS_DRIVER);
			conn = DriverManager.getConnection( ConnProperty.KOS_URL
					                           ,ConnProperty.KOS_USER
					                           ,ConnProperty.KOS_PASS);
		}catch(Exception c) {
			System.out.println("드라이버 찾기에 문제가 발생 >>> : " + c);
		}	
				
		return conn;
	}
	
	public static void conClose( Connection conn
					            ,PreparedStatement pstmt 
					            ,ResultSet rsRs) {
		try{
			if (rsRs != null) try { rsRs.close(); rsRs = null; } catch(Exception ex){}
			if (pstmt != null) try { pstmt.close(); pstmt = null; } catch(Exception ex){}
			if (conn != null) try { conn.close(); conn = null; } catch(Exception ex){}
		}
		catch (Exception e2){}			
	}
	
	public static void conClose(Connection conn, PreparedStatement pstmt) {
		try{
			if (pstmt != null) try { pstmt.close(); pstmt = null; } catch(Exception ex){}
			if (conn != null) try { conn.close(); conn = null; } catch(Exception ex){}
		}
		catch (Exception e2){}			
	}	
	
}//end of ConnProperty
  • BoardTestData.java
package a.b.c.test.paging;

import java.sql.Connection;
import java.sql.Statement;

public class BoardTestData {
	
	public void insertData() throws Exception {
		
		Connection conn = ConnProperty.getConnection();
		Statement stmt = conn.createStatement();
		String sqls = null;
		
		for (long i = 0; i < 200; i++) {
			sqls = "INSERT INTO BOARD_PAGING VALUES ( "
					+ "B_SEQ.NEXTVAL, "
					+ "'" + i + "', " 
					+ "'" + i + "', " 
					+ "'" + i + "', " 
					+ "'" + i + "', " 										 
					+ "DEFAULT, "
					+ "1"
					+ ")";
			
			int nCount = stmt.executeUpdate(sqls);
			if (nCount % 100 == 0) conn.commit();
		}
		
		conn.commit();
		stmt.close(); stmt = null;
		conn.close(); conn = null;
	}
	
	public static void main(String args[]) throws Exception {
		new BoardTestData().insertData();
	}
}
  • 실행
C:\00.KOSMO108\10.JExam\paging>javac -d . -encoding utf-8 B*.java C*.java
C:\00.KOSMO108\10.JExam\paging>java a.b.c.test.paging.BoardTestData
  • 페이징 쿼리
SELECT  *                                           
FROM (                                           
        SELECT                                      
            A.bnum,				-- 글번호                          	
            A.btitle,			-- 제목                             	
            A.bname,			-- 작성자                          				
            A.barea,			-- 글내용                          	
            A.bpass,			-- 비밀번호                       	
            TO_CHAR(A.bwriteday, 'YYYY-MM-DD') bwriteday,  -- 작성일   				
            A.bhits,			-- 조회수                          	
            CEIL(ROW_NUMBER() OVER(ORDER BY A.bnum) / 10) pageSize, 	
            COUNT(bnum) OVER() AS totalCount        
        FROM                                        
             BOARD_PAGING A                             
    )                                           
WHERE                                            
    pageSize = 10;

3교시 (11:30-12:20)

  • 상품 페이지 만들기
    -----------------------------

    workspace : 
    eclipse_kosmo_spring
    eclipse_kosmo_spring_work

    lib 세팅은 empSpring 기준으로 하고 추가할 것은 본인 추가할 것 

    상품 
    등록, 전체 조회, 조건 조회


    Context : kosmoSpring

    Table 
    KOSMO_PRODUCT : 상품테이블 
    1. 논리설계 부족한 부분 추가 하고 
    2. 테이블 정의서(설계서) 만들고 : 컬럼명, 데이터타입, 사이즈, PK, NOT NULL
    3. 물리설계 하기 

    클래스 
    패키지 : a.b.c.com.kosmo

    공통클래스 
    a.b.c.com.kosmo.common

    스프링
    a.b.c.com.kosmo.product.controller
    KosmoProductController
    a.b.c.com.kosmo.product.service
    KosmoProductService
    a.b.c.com.kosmo.product.dao
    KosmoProductDAO
    a.b.c.com.kosmo.product.vo
    KosmoProductVO

    매퍼
    mybatisconfig/mybatis-config.xml
    mybatisquery/spring_product.xml


    /WEB-INF/view/product
    kosmoproductXXX.jsp

4교시 (12:30-13:20)

  • 상품 페이지 만들기

5교시 (14:30-15:20)

  • 상품 페이지 만들기

6교시 (15:30-16:20)

  • 상품 페이지 만들기

7교시 (16:30-17:20)

  • 상품 페이지 만들기

8교시 (17:30-18:30)

  • 상품 페이지 만들기

Notes


728x90