Notice
Recent Posts
Recent Comments
Link
투케이2K
47. (spring/스프링) mybatis 에서 mysql 데이터베이스 blob (블랍) 이미지 (image) 등록 (insert) 본문
Spring
47. (spring/스프링) mybatis 에서 mysql 데이터베이스 blob (블랍) 이미지 (image) 등록 (insert)
투케이2K 2022. 6. 14. 12:52[개발 환경 설정]
개발 툴 : inteli j
개발 언어 : spring
[컨트롤러 : DB_Maria_Api_Controller : 소스 코드]
// TODO [SEARCH FAST] : [테스트 BLOB 이미지 저장]
@PostMapping("/TEST_BLOB_INSERT")
public String TEST_BLOB_INSERT(@RequestParam("idx") String idx,
@RequestParam("img") MultipartFile img){ // [body 방식]
System.out.println("\n");
System.out.println("================================================");
System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
System.out.println("[METHOD] : "+String.valueOf("TEST_BLOB_INSERT"));
System.out.println("[INPUT] : [idx] : "+String.valueOf(idx.toString())); // [인덱스]
System.out.println("[INPUT] : [img] : "+String.valueOf(img.getSize())); // [이미지 사이즈]
System.out.println("================================================");
System.out.println("\n");
/**
* // -----------------------------------------
* [호출 방법]
* // -----------------------------------------
* 1. 호출 방식 : POST / 멀티파트
* // -----------------------------------------
* 2. 호출 방법 : http://localhost:7000/TEST_BLOB_INSERT
* // -----------------------------------------
* 3. 리턴 데이터 :
* BLOB 컬럼 IMAGE 이미지 파일 INSERT 수행 결과 (int 값)
* // -----------------------------------------
* */
try {
// [사전 데이터 널 체크 수행 실시]
if (C_Util.stringNotNull(idx) == true && img != null && img.getSize() > 0){
}
else {
// [리턴 결과 반환 실시]
return "N : " + "IMAGE INPUT IS NULL";
}
// [모델 객체에 idx 및 byte 지정 실시 [blob 컬럼은 byte 로 되어있다]
TEST_BLOB_IMG_MODEL test_blob_img_model = new TEST_BLOB_IMG_MODEL(String.valueOf(idx), img.getBytes());
// [서비스 호출 실시]
int returnData = db_maria_api_service.TEST_BLOB_INSERT(test_blob_img_model);
System.out.println("\n");
System.out.println("================================================");
System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
System.out.println("[METHOD] : "+String.valueOf("TEST_BLOB_INSERT"));
System.out.println("[RESULT] : "+String.valueOf(returnData));
System.out.println("================================================");
System.out.println("\n");
if (returnData > 0){
return "Y : " + "IMAGE INSERT SUCCESS";
}
else {
return "N : " + "IMAGE INSERT FAIL";
}
}
catch (NullPointerException e) {
return "N : " + String.valueOf(e.getMessage());
}
catch (Exception e2){
return "N : " + String.valueOf(e2.getMessage());
}
}
[서비스 : DB_Maria_Api_Service : 소스 코드]
// [SEARCH FAST] : [테스트 BLOB 이미지 저장]
public int TEST_BLOB_INSERT(TEST_BLOB_IMG_MODEL test_blob_img_model) throws NullPointerException, Exception {
int returnData = -1;
try {
if (test_blob_img_model != null){
// [mybatis xml 에서 설정한 파라미터 타입에 맞게 데이터 삽입]
System.out.println("\n");
System.out.println("================================================");
System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
System.out.println("[METHOD] : "+String.valueOf("TEST_BLOB_INSERT"));
System.out.println("[INPUT] : "+String.valueOf(test_blob_img_model.toString()));
System.out.println("================================================");
System.out.println("\n");
// [mapper 인터페이스 호출 실시]
returnData = db_maria_api_mapper.TEST_BLOB_INSERT(test_blob_img_model);
// [리턴 값 반환]
return returnData;
}
else {
// [리턴 값 반환]
return returnData;
}
}
catch (Exception e){
// Exception 발생 체크 부분에 메시지 리턴
throw new Exception(e.getMessage());
}
}
[매퍼 : DB_Maria_Api_Mapper : 소스 코드]
// TODO [SEARCH FAST] : [테스트 BLOB 이미지 저장]
int TEST_BLOB_INSERT(TEST_BLOB_IMG_MODEL test_blob_img_model);
[mybatis : DB_Maria_Api_Mybatis : 소스 코드]
<!--
// =========================================
// [SEARCH FAST] : [테스트 BLOB 이미지 저장]
// =========================================
// [select id] [mapper 인터페이스 지정 메소드] : TEST_BLOB_INSERT
// =========================================
-->
<insert id="TEST_BLOB_INSERT">
<![CDATA[
insert into TEST_BLOB (T_IDX, T_BLOB)
values (#{idx}, #{img})
]]>
</insert>
[DB Connection : application.yml : 소스 코드]
# [Maria DB]
maria:
driver-class-name: org.mariadb.jdbc.Driver
jdbc-url: jdbc:mariadb://3.54.138.43:3306/test?characterEncoding=UTF-8&serverTimezone=UTC&characterEncoding=utf8&noAccessToProcedureBodies=true
username: test
password: test@1234
hikari:
maximum-pool-size: 20
connection-timeout: 30000
[TEST_BLOB_IMG_MODEL : 소스 코드]
public class TEST_BLOB_IMG_MODEL {
/**
* // -----------------------------------------
* TODO [클래스 설명]
* // -----------------------------------------
* 1. BLOB 컬럼 형태 이미지 파일 저장 수행 모델
* // -----------------------------------------
* 2. BLOB 컬럼은 바이트 (BYTE) 형태로 데이터가 저장됩니다
* // -----------------------------------------
* */
// TODO [전역 변수 선언]
private String idx;
private byte[] img;
// TODO [클래스 생성자 초기화 실시]
public TEST_BLOB_IMG_MODEL(String idx, byte[] img) {
this.idx = idx;
this.img = img;
}
} // TODO [클래스 종료]
[결과 출력]
반응형
'Spring' 카테고리의 다른 글
Comments