레이블이 Java인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Java인 게시물을 표시합니다. 모든 게시물 표시

2016년 10월 19일 수요일

Mybatis settings - mapUnderscoreToCamelCase

settings 

mapUnderscoreToCamelCase

전통적인 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로 매핑하도록 함 (true | false,  default : false)
setting 엘리먼트의 예제이다:

   name="cacheEnabled" value="true"/>
   name="lazyLoadingEnabled" value="true"/>
   name="multipleResultSetsEnabled" value="true"/>
   name="useColumnLabel" value="true"/>
   name="useGeneratedKeys" value="false"/>
   name="autoMappingBehavior" value="PARTIAL"/>
   name="autoMappingUnknownColumnBehavior" value="WARNING"/>
   name="defaultExecutorType" value="SIMPLE"/>
   name="defaultStatementTimeout" value="25"/>
   name="defaultFetchSize" value="100"/>
   name="safeRowBoundsEnabled" value="false"/>
   name="mapUnderscoreToCamelCase" value="false"/>
   name="localCacheScope" value="SESSION"/>
   name="jdbcTypeForNull" value="OTHER"/>
   name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>


mybatis를 이용하여 여러 프로젝트를 진행하며, 매번 잊고 진행하는 정보가 있다. 
바로 [mapUnderscoreToCamelCase]이다.

VO를 직접 생성하여 에 정의하여 사용하기도 하지만
결과값이 많을 경우 이를 다 적용하기엔 한계가 있다.

프로젝트를 진행하기 전에 환경설정 하는걸 잊지말자.

"머리가 나쁘면 손발이 고생한다."

[참고자료]
MyBatis, "mapUnderscoreToCamelCase", http://www.mybatis.org/mybatis-3/ko/configuration.html, (2016.10.20)

2015년 12월 4일 금요일

패스워드 검증

2종류 10자 이상
3종류 8자 이상

  1. public static Map<String, Object> validatePassword(String passwd) {  
  2.     Map<String, Object> resultMap = new HashMap<String, Object>();  
  3.     boolean containNum = false;  
  4.     boolean containLowerAlpha = false;  
  5.     boolean containUpperAlpha = false;  
  6.     int containCnt = 0;  
  7.     String validNum = "0123456789";  
  8.     String validUpperAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";  
  9.     String validLowerAlpha = "abcdefghijklmnopqrstuvwxyz";  
  10.     Pattern p = Pattern.compile(".*[^a-zA-Z0-9].*");  
  11.     Matcher m = p.matcher(passwd);  
  12.     if(m.matches()) {  
  13.         containCnt++;  
  14.     }  
  15.     if(passwd.length() > 0) {  
  16.         for(int i = 0; i < passwd.length(); i++) {  
  17.             if((containNum == false || containLowerAlpha == false || containUpperAlpha == false)) {  
  18.                 if(containNum == false) {  
  19.                     if(validNum.indexOf(passwd.charAt(i)) != -1) {  
  20.                         containNum = true;  
  21.                         containCnt++;  
  22.                         continue;  
  23.                     }  
  24.                 }   
  25.                 if(containLowerAlpha == false) {  
  26.                     if(validLowerAlpha.indexOf(passwd.charAt(i)) != -1) {  
  27.                         containLowerAlpha = true;  
  28.                         containCnt++;  
  29.                         continue;  
  30.                     }  
  31.                 }  
  32.                 if(containUpperAlpha == false) {  
  33.                     if(validUpperAlpha.indexOf(passwd.charAt(i)) != -1) {  
  34.                         containUpperAlpha = true;  
  35.                         containCnt++;  
  36.                         continue;  
  37.                     }  
  38.                 }  
  39.             } else {  
  40.                 break;  
  41.             }  
  42.         }  
  43.         if((containCnt >= 3 && passwd.length() >= 8) || (containCnt == 2 && passwd.length() >= 10)) {  
  44.             resultMap.put("status"true);  
  45.         } else {  
  46.             resultMap.put("status"false);  
  47.             resultMap.put("result""사용 불가능한 비밀번호");  
  48.         }  
  49.     } else {  
  50.         resultMap.put("status"false);  
  51.         resultMap.put("result""패스워드 길이 오류");  
  52.     }   
  53.     return resultMap;  
  54. }  


  1. public static Map<String, Object> validatePassword(String passwd) {  
  2.     Map<String, Object> resultMap = new HashMap<String, Object>();  
  3.     int containCnt = 0;  
  4.     Pattern numP = Pattern.compile(".*[0-9].*");  
  5.     Pattern lowerAlphaP = Pattern.compile(".*[a-z].*");  
  6.     Pattern upperAlphaP = Pattern.compile(".*[A-Z].*");  
  7.     Pattern specialCharP = Pattern.compile(".*[^a-zA-Z0-9].*");  
  8.     Matcher m;  
  9.         m = numP.matcher(passwd);  
  10.     if(m.matches()) {  
  11.         containCnt++;  
  12.     }  
  13.     m = lowerAlphaP.matcher(passwd);  
  14.     if(m.matches()) {  
  15.         containCnt++;  
  16.     }  
  17.     m = upperAlphaP.matcher(passwd);  
  18.     if(m.matches()) {  
  19.         containCnt++;  
  20.     }  
  21.     m = specialCharP.matcher(passwd);  
  22.     if(m.matches()) {  
  23.         containCnt++;  
  24.     }  
  25.       
  26.     System.out.println(containCnt);  
  27.     if(passwd.length() > 0) {  
  28.         if((containCnt >= 3 && passwd.length() >= 8) || (containCnt == 2 && passwd.length() >= 10)) {  
  29.             resultMap.put("status"true);  
  30.         } else {  
  31.             resultMap.put("status"false);  
  32.             resultMap.put("result""사용 불가능한 비밀번호");  
  33.         }  
  34.     } else {  
  35.         resultMap.put("status"false);  
  36.         resultMap.put("result""패스워드 길이 오류");  
  37.     }   
  38.     return resultMap;  
  39. }  

[ 참고 - Pattern (Java Platform SE 7 b99) ]
https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

2015년 12월 3일 목요일

파일업로드 및 파일명 변경



  1. import java.io.BufferedReader;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.IOException;  
  6. import java.io.InputStreamReader;  
  7. import java.util.ArrayList;  
  8. import java.util.HashMap;  
  9. import java.util.StringTokenizer;  
  10. import java.util.UUID;  
  11.   
  12. public class RandomName {  
  13.     public static void main(String agrs[]) {  
  14.         ArrayList<HashMap<String, Object>> files = new ArrayList<HashMap<String, Object>>();  
  15.         HashMap<String, Object> map = new HashMap<String, Object>();  
  16.           
  17.         String extName = "";  
  18.         String fileName = "";  
  19.         String seq= "";  
  20.   
  21.         // 버퍼 생성  
  22.         BufferedReader br = null;  
  23.   
  24.         // Input 스트림 생성  
  25.         InputStreamReader isr = null;  
  26.   
  27.         // File Input 스트림 생성  
  28.         FileInputStream fis = null;  
  29.   
  30.         // File 경로  
  31.         File file = new File("C:\\files.txt");  
  32.   
  33.         // 버퍼로 읽어들일 임시 변수  
  34.         String temp = "";  
  35.   
  36.         try {  
  37.   
  38.             // 파일을 읽어들여 File Input 스트림 객체 생성  
  39.             fis = new FileInputStream(file);  
  40.   
  41.             // File Input 스트림 객체를 이용해 Input 스트림 객체를 생서하는데 인코딩을 UTF-8로 지정  
  42.             isr = new InputStreamReader(fis, "EUC-KR");  
  43.   
  44.             // Input 스트림 객체를 이용하여 버퍼를 생성  
  45.             br = new BufferedReader(isr);  
  46.   
  47.             // 버퍼를 한줄한줄 읽어들여 내용 추출  
  48.             int cnt = 0;  
  49.             while ((temp = br.readLine()) != null) {  
  50.                 StringTokenizer st = new StringTokenizer(temp, "&&");  
  51.                 while(st.hasMoreTokens()) {  
  52.                     if(cnt == 0) {  
  53.                         map = new HashMap<String, Object>();  
  54.                         map.put("seq", st.nextToken());  
  55.                         cnt++;  
  56.                     } else {  
  57.                         map.put("filename", st.nextToken());  
  58.                         files.add(map);  
  59.                         cnt = 0;  
  60.                     }  
  61.                 }  
  62.             }  
  63.               
  64.             for(int i=0; i<files.size(); i++) {  
  65.                 HashMap<String, Object> tempMap = new HashMap<String, Object>();  
  66.                 tempMap = files.get(i);  
  67.                 seq= tempMap.get("seq").toString();  
  68.                 extName = getFileExt(tempMap.get("filename").toString());  
  69.                 fileName = Long.toString(System.currentTimeMillis()) + "_" + getRandomStr(8)+"." +extName; //실제 저장되는 파일 이름.  
  70.                 File oriFile = new File("C:/Users/user/Desktop/upload/" + tempMap.get("filename").toString());  
  71.                 File convFile = new File("C:/Users/user/Desktop/upload/" + fileName);  
  72.                   
  73.                 oriFile.renameTo(convFile);  
  74.             }  
  75.   
  76.         } catch (FileNotFoundException e) {  
  77.             e.printStackTrace();  
  78.   
  79.         } catch (Exception e) {  
  80.             e.printStackTrace();  
  81.   
  82.         } finally {  
  83.             try {  
  84.                 fis.close();  
  85.             } catch (IOException e) {  
  86.                 e.printStackTrace();  
  87.             }  
  88.   
  89.             try {  
  90.                 isr.close();  
  91.             } catch (IOException e) {  
  92.                 e.printStackTrace();  
  93.             }  
  94.   
  95.             try {  
  96.                 br.close();  
  97.             } catch (IOException e) {  
  98.                 e.printStackTrace();  
  99.             }  
  100.   
  101.         }  
  102.     }  
  103.       
  104.     // 랜덤 문자열 반환  
  105.     public static String getRandomStr(int length) {  
  106.         String rtnVal = "";  
  107.         String str = UUID.randomUUID().toString();  
  108.           
  109.         if(str.length() > length)  
  110.             rtnVal = str.substring(0, length);  
  111.         return rtnVal;  
  112.     }  
  113.       
  114.     public static String getFileExt(String filename) {  
  115.         String ext = "";  
  116.         if(filename==null || "".equals(filename)) {  
  117.             ext = "";  
  118.         } else {  
  119.             if(filename.indexOf(".")>-1) {  
  120.                 ext = filename.substring(filename.lastIndexOf(".")+1, filename.length());  
  121.             }  
  122.         }  
  123.         return ext;  
  124.     }  
  125. }