재귀 메소드와 File 클래스를 이용하여 폴더 안에 있는 모든 폴더 및 파일을 출력하는 예제입니다.

폴더 안 모든 폴더를 탐색하기에 기준 폴더를 잘못 설정하면 시간이 오래 걸릴 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.io.File;
 
public class TraceDirectoryTest {
 
    public static void main(String[] args) {
        String DATA_DIRECTORY = "D:/";
        traceDirectory(DATA_DIRECTORY);
 
    }
    public static void traceDirectory(String directory) {
        //주어진 폴더를 이용하여 파일 객체를 생성
        File dir = new File(directory);
        //해당 폴더 안에 있는 파일 또는 폴더 리스트를 배열로 가져옴.
        String []fileNames = dir.list();
        //폴더만 있는 경우
        if(fileNames == null) {
            System.out.println(directory);
            return;
        }
        //폴던 안에 있는 파일/폴더들을 하나씩 꺼내서 
        for(String fileName : fileNames) {
            //폴더 안에 있는 파일/폴더를 이용하여 파일 객체를 생성
            File file = new File(directory+fileName);
            //해당 객체가 폴더이면 폴더 탐색을 시작
            if(file.isDirectory()) {
                traceDirectory(directory+fileName+"/");
            }
            //아니면 경로와 파일명을 출력
            else {
                System.out.println(directory+fileName);
            }
        }
    }
}
 
cs
  • id : dao의 메소드 명
  • parameterType : 매개변수 타입
  • keyProperty : 가져온 기본키를 저장할 변수 이름
mapper.xml

1
2
3
<insert id="insertTable" useGeneratedKeys="true" parameterType="kr.green.spring.vo.TableVo" keyProperty="table.id">
    
</insert>

cs

dao.java

1
public void insertTable(@Param("table")TableVo table);
cs


 기본키의 값을 ABC00001와 같이 앞자리는 문자열 뒷자리는 숫자로 하고, 숫자는 자동 증가로 할 때 사용하는 방법입니다.


table1_seq 테이블 : 임시 테이블로 기본키만 있으며, 이 테이블의 기본키 값이 정수부분에 해당함

table1 테이블 : 실제 테이블로 ABC00001값이 들어갈 테이블

tg_table1_insert : 트리거로 table1에 insert 작업을 하기 전에 동작하는 트리거

LAST_INSERT_ID() : 가장 마지막에 insert 작업이 실행된 테이블의 기본키 값을 반환하는 함수)

LPAD(값, 자리수, 'A') : 값이 지정된 자리수보다 작은 경우 남은 자리를 A로 채워주는 함수


테이블 생성 샘플 코드

1
2
3
4
5
6
7
8
CREATE TABLE table1_seq
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE table1
(
  id VARCHAR(8NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30)
);

cs


트리거 샘플 코드

1
2
3
4
5
6
7
8
9
DELIMITER $$
CREATE TRIGGER tg_table1_insert
BEFORE INSERT ON table1
FOR EACH ROW
BEGIN
  INSERT INTO table1_seq VALUES (NULL);
  SET NEW.id = CONCAT('ABC', LPAD(LAST_INSERT_ID(), 5'0'));
END$$
DELIMITER ;

cs

table1에 insert 작업 샘플 코드

INSERT INTO Table1 (name) VALUES ('Jhon'), ('Mark');


출처 : stackoverflow(바로가기)

모달창 띄우는 예제

+ Recent posts