dsjang 2024-08-12
Multi DBMS 설정 추가, 발송 성능 개선, 리포트 수신 개선
@12accd86eb72a4918a17dc96ab9f3c4ccf7aafbc
build.gradle
--- build.gradle
+++ build.gradle
@@ -21,6 +21,9 @@
 
 repositories {
     mavenCentral()
+    maven {url 'https://maven.google.com'}
+    maven {url 'https://maven.cubrid.org/'}
+    maven {url 'https://maven.jumpmind.com/repo/'}
 }
 
 dependencies {
@@ -49,6 +52,11 @@
     implementation group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '12.8.0.jre11'
     // https://mvnrepository.com/artifact/org.postgresql/postgresql
     implementation group: 'org.postgresql', name: 'postgresql', version: '42.7.3'
+    // https://mvnrepository.com/artifact/cubrid/cubrid-jdbc
+    implementation group: 'cubrid', name: 'cubrid-jdbc', version: '11.2.1.0038'
+    // https://mvnrepository.com/artifact/jdbc.tibero/tibero
+    //implementation files('libs/tibero6-jdbc-14.jar')
+    implementation files('libs/tibero-6.jar')
 
 }
 
 
libs/tibero-6.jar (Binary) (added)
+++ libs/tibero-6.jar
Binary file is not shown
 
libs/tibero6-jdbc-14.jar (Binary) (added)
+++ libs/tibero6-jdbc-14.jar
Binary file is not shown
 
src/main/java/com/munjaon/client/cubrid/mapper/CubridMapper.java (added)
+++ src/main/java/com/munjaon/client/cubrid/mapper/CubridMapper.java
@@ -0,0 +1,21 @@
+package com.munjaon.client.cubrid.mapper;
+
+import com.munjaon.client.model.MunjaonMsg;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface CubridMapper {
+    String checkTime();
+    int checkTableForMessage();
+    int checkTableForLog();
+    List<MunjaonMsg> selectToDeliver(String msgType);
+    int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
+    int updateToReport(MunjaonMsg params);
+    List<MunjaonMsg> selectToMove();
+    List<MunjaonMsg> selectToExpire(String expireTime);
+    int insertToLog(String msgId);
+    int deleteFromDeliver(String msgId);
+}
 
src/main/java/com/munjaon/client/cubrid/service/CubridService.java (added)
+++ src/main/java/com/munjaon/client/cubrid/service/CubridService.java
@@ -0,0 +1,69 @@
+package com.munjaon.client.cubrid.service;
+
+import com.munjaon.client.cubrid.mapper.CubridMapper;
+import com.munjaon.client.model.MunjaonMsg;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class CubridService {
+    private final CubridMapper deliverBMapper;
+
+    public boolean checkTableExists() {
+        boolean isExist = false;
+        try {
+            int msgCount = deliverBMapper.checkTableForMessage();
+            int logCount = deliverBMapper.checkTableForLog();
+            if (msgCount >= 0 && logCount >= 0) {
+                isExist = true;
+            }
+        } catch (Exception e) {
+            log.error("Check table exists error : {}", e);
+        }
+
+        return isExist;
+    }
+    public List<MunjaonMsg> selectToDeliver(String msgType) {
+        return deliverBMapper.selectToDeliver(msgType);
+    }
+    public int updateToDeliver(String msgId) {
+        return deliverBMapper.updateToDeliver(msgId);
+    }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
+    public int updateToReport(MunjaonMsg params) {
+        return deliverBMapper.updateToReport(params);
+    }
+    public List<MunjaonMsg> selectToMove() {
+        return deliverBMapper.selectToMove();
+    }
+    public List<MunjaonMsg> selectToExpire(String expireTime) {
+        return deliverBMapper.selectToExpire(expireTime);
+    }
+    public int insertToLog(String msgId) {
+        return deliverBMapper.insertToLog(msgId);
+    }
+    public int deleteFromDeliver(String msgId) {
+        return deliverBMapper.deleteFromDeliver(msgId);
+    }
+
+    @Transactional
+    public void moveToDeliver() {
+        List<MunjaonMsg> list = selectToMove();
+        if (list == null || list.size() == 0) {
+            return;
+        }
+        log.debug("[CLASS : {} : MOVE_COUNT : {}", this.getClass(), list.size());
+        for (MunjaonMsg msg : list) {
+            insertToLog(msg.getMsgId());
+            deleteFromDeliver(msg.getMsgId());
+        }
+    }
+}
src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java
--- src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java
+++ src/main/java/com/munjaon/client/mariadb/mapper/MariaDBMapper.java
@@ -12,6 +12,7 @@
     int checkTableForLog();
     List<MunjaonMsg> selectToDeliver(String msgType);
     int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
     int updateToReport(MunjaonMsg params);
     List<MunjaonMsg> selectToMove();
     List<MunjaonMsg> selectToExpire(String expireTime);
src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java
--- src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java
+++ src/main/java/com/munjaon/client/mariadb/service/MariaDBService.java
@@ -35,6 +35,9 @@
     public int updateToDeliver(String msgId) {
         return deliverBMapper.updateToDeliver(msgId);
     }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
     public int updateToReport(MunjaonMsg params) {
         return deliverBMapper.updateToReport(params);
     }
src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java
--- src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java
+++ src/main/java/com/munjaon/client/mssql/mapper/MssqlMapper.java
@@ -12,6 +12,7 @@
     int checkTableForLog();
     List<MunjaonMsg> selectToDeliver(String msgType);
     int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
     int updateToReport(MunjaonMsg params);
     List<MunjaonMsg> selectToMove();
     List<MunjaonMsg> selectToExpire(String expireTime);
src/main/java/com/munjaon/client/mssql/service/MssqlService.java
--- src/main/java/com/munjaon/client/mssql/service/MssqlService.java
+++ src/main/java/com/munjaon/client/mssql/service/MssqlService.java
@@ -35,6 +35,9 @@
     public int updateToDeliver(String msgId) {
         return deliverBMapper.updateToDeliver(msgId);
     }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
     public int updateToReport(MunjaonMsg params) {
         return deliverBMapper.updateToReport(params);
     }
src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java
--- src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java
+++ src/main/java/com/munjaon/client/mysql/mapper/MysqlMapper.java
@@ -12,6 +12,7 @@
     int checkTableForLog();
     List<MunjaonMsg> selectToDeliver(String msgType);
     int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
     int updateToReport(MunjaonMsg params);
     List<MunjaonMsg> selectToMove();
     List<MunjaonMsg> selectToExpire(String expireTime);
src/main/java/com/munjaon/client/mysql/service/MysqlService.java
--- src/main/java/com/munjaon/client/mysql/service/MysqlService.java
+++ src/main/java/com/munjaon/client/mysql/service/MysqlService.java
@@ -35,6 +35,9 @@
     public int updateToDeliver(String msgId) {
         return deliverBMapper.updateToDeliver(msgId);
     }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
     public int updateToReport(MunjaonMsg params) {
         return deliverBMapper.updateToReport(params);
     }
src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java
--- src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java
+++ src/main/java/com/munjaon/client/oracle/mapper/OracleMapper.java
@@ -12,6 +12,7 @@
     int checkTableForLog();
     List<MunjaonMsg> selectToDeliver(String msgType);
     int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
     int updateToReport(MunjaonMsg params);
     List<MunjaonMsg> selectToMove();
     List<MunjaonMsg> selectToExpire(String expireTime);
src/main/java/com/munjaon/client/oracle/service/OracleService.java
--- src/main/java/com/munjaon/client/oracle/service/OracleService.java
+++ src/main/java/com/munjaon/client/oracle/service/OracleService.java
@@ -35,6 +35,9 @@
     public int updateToDeliver(String msgId) {
         return deliverBMapper.updateToDeliver(msgId);
     }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
     public int updateToReport(MunjaonMsg params) {
         return deliverBMapper.updateToReport(params);
     }
src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java
--- src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java
+++ src/main/java/com/munjaon/client/postgresql/mapper/PostgresqlMapper.java
@@ -12,6 +12,7 @@
     int checkTableForLog();
     List<MunjaonMsg> selectToDeliver(String msgType);
     int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
     int updateToReport(MunjaonMsg params);
     List<MunjaonMsg> selectToMove();
     List<MunjaonMsg> selectToExpire(String expireTime);
src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java
--- src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java
+++ src/main/java/com/munjaon/client/postgresql/service/PostgresqlService.java
@@ -35,6 +35,9 @@
     public int updateToDeliver(String msgId) {
         return deliverBMapper.updateToDeliver(msgId);
     }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
     public int updateToReport(MunjaonMsg params) {
         return deliverBMapper.updateToReport(params);
     }
src/main/java/com/munjaon/client/server/service/CollectClientService.java
--- src/main/java/com/munjaon/client/server/service/CollectClientService.java
+++ src/main/java/com/munjaon/client/server/service/CollectClientService.java
@@ -13,6 +13,7 @@
 import java.net.InetSocketAddress;
 import java.nio.ByteBuffer;
 import java.nio.channels.SocketChannel;
+import java.util.ArrayList;
 import java.util.List;
 
 public class CollectClientService extends Service {
@@ -24,6 +25,9 @@
     private int port;
     private String id;
     private String pwd;
+
+    private StringBuilder deliverBuilder;
+    private List<String> deliverList = null;
 
     public CollectClientService(String serviceName, String serviceType) {
         super(serviceName);
@@ -38,8 +42,12 @@
             return;
         }
 
-        saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
         this.IS_READY_YN = worker.checkTableExists();
+        if (this.IS_READY_YN) {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
+        } else {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]");
+        }
     }
 
     @Override
@@ -137,8 +145,28 @@
         return null;
     }
 
+    private void setDeliverMsgId(String msgId) {
+        if (msgId == null) {
+            return;
+        }
+        if (this.deliverList == null) {
+            this.deliverList = new ArrayList<>();
+        }
+        this.deliverList.add(msgId);
+//        if (this.deliverBuilder == null) {
+//            return;
+//        }
+//
+//        if (this.deliverBuilder.isEmpty()) {
+//            this.deliverBuilder.append(msgId);
+//        } else {
+//            this.deliverBuilder.append(",").append(msgId);
+//        }
+    }
+
     private void messageService() {
         List<MunjaonMsg> list = selectToDeliver();
+        this.deliverBuilder = new StringBuilder();
         if (list == null || list.isEmpty()) {
             try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}
             return;
@@ -153,6 +181,10 @@
                 case "KFT": kftMessageService(data); break;
                 default:break;
             }
+        }
+        if (this.deliverList != null && this.deliverList.size() > 0) {
+            worker.updateDeliverForList(this.deliverList);
+            this.deliverList = null;    // NULL로 초기화
         }
     }
 
@@ -192,14 +224,16 @@
                     saveSystemLog("[MESSAGE SEND] [FAIL] [SOCKET IS CLOSED]");
                     throw new RuntimeException("DELIVER ERROR");
                 } else if (recvCount > 0) {
-                    worker.updateToDeliver(data.getMsgId());
+                    setDeliverMsgId(data.getMsgId());
+//                    worker.updateToDeliver(data.getMsgId());
                     saveSystemLog("[MESSAGE SEND] [SUCCESS]");
                     lastPacketSendTime = System.currentTimeMillis();
                     break;
                 }
             }
         } catch (IOException e) {
-            throw new RuntimeException(e);
+            e.printStackTrace();
+//            throw new RuntimeException(e);
         }
     }
 
src/main/java/com/munjaon/client/server/service/DataMoveService.java
--- src/main/java/com/munjaon/client/server/service/DataMoveService.java
+++ src/main/java/com/munjaon/client/server/service/DataMoveService.java
@@ -18,8 +18,12 @@
             return;
         }
 
-        saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
         this.IS_READY_YN = worker.checkTableExists();
+        if (this.IS_READY_YN) {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
+        } else {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]");
+        }
     }
 
     @Override
src/main/java/com/munjaon/client/server/service/ReportClientService.java
--- src/main/java/com/munjaon/client/server/service/ReportClientService.java
+++ src/main/java/com/munjaon/client/server/service/ReportClientService.java
@@ -37,8 +37,12 @@
             return;
         }
 
-        saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
         this.IS_READY_YN = worker.checkTableExists();
+        if (this.IS_READY_YN) {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is ready]");
+        } else {
+            saveSystemLog("[checkReady][DBMS : " + System.getProperty("DBMS") + " is not ready]");
+        }
     }
 
     @Override
src/main/java/com/munjaon/client/service/DatabaseService.java
--- src/main/java/com/munjaon/client/service/DatabaseService.java
+++ src/main/java/com/munjaon/client/service/DatabaseService.java
@@ -4,11 +4,13 @@
 
 @Getter
 public enum DatabaseService {
+    CUBRID_SERVICE,
     MARIADB_SERVICE,
     MSSQL_SERVICE,
     ORACLE_SERVICE,
     POSTGRESQL_SERVICE,
-    MYSQL_SERVICE;
+    MYSQL_SERVICE,
+    TIBERO_SERVICE;
 
     private Object service;
 
src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java
--- src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java
+++ src/main/java/com/munjaon/client/service/DatabaseServiceInjector.java
@@ -1,10 +1,12 @@
 package com.munjaon.client.service;
 
+import com.munjaon.client.cubrid.service.CubridService;
 import com.munjaon.client.mariadb.service.MariaDBService;
 import com.munjaon.client.mssql.service.MssqlService;
 import com.munjaon.client.mysql.service.MysqlService;
 import com.munjaon.client.oracle.service.OracleService;
 import com.munjaon.client.postgresql.service.PostgresqlService;
+import com.munjaon.client.tibero.service.TiberoService;
 import jakarta.annotation.PostConstruct;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -13,6 +15,8 @@
 
 @Component
 public class DatabaseServiceInjector {
+    @Autowired
+    private CubridService cubridService;
     @Autowired
     private MariaDBService mariaDBService;
     @Autowired
@@ -23,11 +27,15 @@
     private OracleService oracleService;
     @Autowired
     private PostgresqlService postgresqlService;
+    @Autowired
+    private TiberoService tiberoService;
 
     @PostConstruct
     public void postConstruct() {
         for (DatabaseService svc : EnumSet.allOf(DatabaseService.class)) {
             switch (svc) {
+                case CUBRID_SERVICE:        svc.setService(cubridService);
+                    break;
                 case MARIADB_SERVICE:       svc.setService(mariaDBService);
                     break;
                 case MSSQL_SERVICE:         svc.setService(mssqlService);
@@ -38,6 +46,8 @@
                     break;
                 case POSTGRESQL_SERVICE : svc.setService(postgresqlService);
                     break;
+                case TIBERO_SERVICE:        svc.setService(tiberoService);
+                    break;
                 default:                    break;
             }
         }
src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java
--- src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java
+++ src/main/java/com/munjaon/client/service/DatabaseTypeWorker.java
@@ -1,11 +1,13 @@
 package com.munjaon.client.service;
 
+import com.munjaon.client.cubrid.service.CubridService;
 import com.munjaon.client.mariadb.service.MariaDBService;
 import com.munjaon.client.model.MunjaonMsg;
 import com.munjaon.client.mssql.service.MssqlService;
 import com.munjaon.client.mysql.service.MysqlService;
 import com.munjaon.client.oracle.service.OracleService;
 import com.munjaon.client.postgresql.service.PostgresqlService;
+import com.munjaon.client.tibero.service.TiberoService;
 import lombok.Getter;
 
 import java.util.EnumSet;
@@ -13,6 +15,67 @@
 
 @Getter
 public enum DatabaseTypeWorker {
+    TYPE_OF_CUBRID("CUBRID") {
+        @Override
+        public boolean checkTableExists() {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.checkTableExists();
+        }
+
+        @Override
+        public List<MunjaonMsg> selectToDeliver(String msgType) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.selectToDeliver(msgType);
+        }
+
+        @Override
+        public int updateToDeliver(String msgId) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.updateToDeliver(msgId);
+        }
+
+        @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.updateDeliverForList(msgIdList);
+        }
+
+        @Override
+        public int updateToReport(MunjaonMsg params) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.updateToReport(params);
+        }
+
+        @Override
+        public List<MunjaonMsg> selectToMove() {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.selectToMove();
+        }
+
+        @Override
+        public List<MunjaonMsg> selectToExpire(String expireTime) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.selectToExpire(expireTime);
+        }
+
+        @Override
+        public int insertToLog(String msgId) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.insertToLog(msgId);
+        }
+
+        @Override
+        public int deleteFromDeliver(String msgId) {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            return cubridService.deleteFromDeliver(msgId);
+        }
+
+        @Override
+        public void moveToDeliver() {
+            CubridService cubridService = (CubridService) DatabaseService.CUBRID_SERVICE.getService();
+            cubridService.moveToDeliver();
+        }
+    },
     TYPE_OF_MARIADB("MARIADB") {
         @Override
         public boolean checkTableExists() {
@@ -30,6 +93,12 @@
         public int updateToDeliver(String msgId) {
             MariaDBService mariaDBService = (MariaDBService) DatabaseService.MARIADB_SERVICE.getService();
             return mariaDBService.updateToDeliver(msgId);
+        }
+
+        @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            MariaDBService mariaDBService = (MariaDBService) DatabaseService.MARIADB_SERVICE.getService();
+            return mariaDBService.updateDeliverForList(msgIdList);
         }
 
         @Override
@@ -88,6 +157,12 @@
         }
 
         @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            OracleService oracleService = (OracleService) DatabaseService.ORACLE_SERVICE.getService();
+            return oracleService.updateDeliverForList(msgIdList);
+        }
+
+        @Override
         public int updateToReport(MunjaonMsg params) {
             OracleService oracleService = (OracleService) DatabaseService.ORACLE_SERVICE.getService();
             return oracleService.updateToReport(params);
@@ -140,6 +215,12 @@
         public int updateToDeliver(String msgId) {
             MssqlService mssqlService = (MssqlService) DatabaseService.MSSQL_SERVICE.getService();
             return mssqlService.updateToDeliver(msgId);
+        }
+
+        @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            MssqlService mssqlService = (MssqlService) DatabaseService.MSSQL_SERVICE.getService();
+            return mssqlService.updateDeliverForList(msgIdList);
         }
 
         @Override
@@ -198,6 +279,12 @@
         }
 
         @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            PostgresqlService postgresqlService = (PostgresqlService) DatabaseService.POSTGRESQL_SERVICE.getService();
+            return postgresqlService.updateDeliverForList(msgIdList);
+        }
+
+        @Override
         public int updateToReport(MunjaonMsg params) {
             PostgresqlService postgresqlService = (PostgresqlService) DatabaseService.POSTGRESQL_SERVICE.getService();
             return postgresqlService.updateToReport(params);
@@ -253,6 +340,12 @@
         }
 
         @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            MysqlService mysqlService = (MysqlService) DatabaseService.MYSQL_SERVICE.getService();
+            return mysqlService.updateDeliverForList(msgIdList);
+        }
+
+        @Override
         public int updateToReport(MunjaonMsg params) {
             MysqlService mysqlService = (MysqlService) DatabaseService.MYSQL_SERVICE.getService();
             return mysqlService.updateToReport(params);
@@ -287,6 +380,67 @@
             MysqlService mysqlService = (MysqlService) DatabaseService.MYSQL_SERVICE.getService();
             mysqlService.moveToDeliver();
         }
+    },
+    TYPE_OF_TIBERO("TIBERO") {
+        @Override
+        public boolean checkTableExists() {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.checkTableExists();
+        }
+
+        @Override
+        public List<MunjaonMsg> selectToDeliver(String msgType) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.selectToDeliver(msgType);
+        }
+
+        @Override
+        public int updateToDeliver(String msgId) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.updateToDeliver(msgId);
+        }
+
+        @Override
+        public int updateDeliverForList(List<String> msgIdList) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.updateDeliverForList(msgIdList);
+        }
+
+        @Override
+        public int updateToReport(MunjaonMsg params) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.updateToReport(params);
+        }
+
+        @Override
+        public List<MunjaonMsg> selectToMove() {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.selectToMove();
+        }
+
+        @Override
+        public List<MunjaonMsg> selectToExpire(String expireTime) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.selectToExpire(expireTime);
+        }
+
+        @Override
+        public int insertToLog(String msgId) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.insertToLog(msgId);
+        }
+
+        @Override
+        public int deleteFromDeliver(String msgId) {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            return tiberoService.deleteFromDeliver(msgId);
+        }
+
+        @Override
+        public void moveToDeliver() {
+            TiberoService tiberoService = (TiberoService) DatabaseService.TIBERO_SERVICE.getService();
+            tiberoService.moveToDeliver();
+        }
     };
 
     DatabaseTypeWorker(final String name) {
@@ -306,6 +460,7 @@
     public abstract boolean checkTableExists();
     public abstract List<MunjaonMsg> selectToDeliver(String msgType);
     public abstract int updateToDeliver(String msgId);
+    public abstract int updateDeliverForList(List<String> msgIdList);;
     public abstract int updateToReport(MunjaonMsg params);
     public abstract List<MunjaonMsg> selectToMove();
     public abstract List<MunjaonMsg> selectToExpire(String expireTime);
 
src/main/java/com/munjaon/client/tibero/mapper/TiberoMapper.java (added)
+++ src/main/java/com/munjaon/client/tibero/mapper/TiberoMapper.java
@@ -0,0 +1,21 @@
+package com.munjaon.client.tibero.mapper;
+
+import com.munjaon.client.model.MunjaonMsg;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface TiberoMapper {
+    String checkTime();
+    int checkTableForMessage();
+    int checkTableForLog();
+    List<MunjaonMsg> selectToDeliver(String msgType);
+    int updateToDeliver(String msgId);
+    int updateDeliverForList(List<String> msgIdList);
+    int updateToReport(MunjaonMsg params);
+    List<MunjaonMsg> selectToMove();
+    List<MunjaonMsg> selectToExpire(String expireTime);
+    int insertToLog(String msgId);
+    int deleteFromDeliver(String msgId);
+}
 
src/main/java/com/munjaon/client/tibero/service/TiberoService.java (added)
+++ src/main/java/com/munjaon/client/tibero/service/TiberoService.java
@@ -0,0 +1,69 @@
+package com.munjaon.client.tibero.service;
+
+import com.munjaon.client.model.MunjaonMsg;
+import com.munjaon.client.tibero.mapper.TiberoMapper;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class TiberoService {
+    private final TiberoMapper deliverBMapper;
+
+    public boolean checkTableExists() {
+        boolean isExist = false;
+        try {
+            int msgCount = deliverBMapper.checkTableForMessage();
+            int logCount = deliverBMapper.checkTableForLog();
+            if (msgCount >= 0 && logCount >= 0) {
+                isExist = true;
+            }
+        } catch (Exception e) {
+            log.error("Check table exists error : {}", e);
+        }
+
+        return isExist;
+    }
+    public List<MunjaonMsg> selectToDeliver(String msgType) {
+        return deliverBMapper.selectToDeliver(msgType);
+    }
+    public int updateToDeliver(String msgId) {
+        return deliverBMapper.updateToDeliver(msgId);
+    }
+    public int updateDeliverForList(List<String> msgIdList) {
+        return deliverBMapper.updateDeliverForList(msgIdList);
+    }
+    public int updateToReport(MunjaonMsg params) {
+        return deliverBMapper.updateToReport(params);
+    }
+    public List<MunjaonMsg> selectToMove() {
+        return deliverBMapper.selectToMove();
+    }
+    public List<MunjaonMsg> selectToExpire(String expireTime) {
+        return deliverBMapper.selectToExpire(expireTime);
+    }
+    public int insertToLog(String msgId) {
+        return deliverBMapper.insertToLog(msgId);
+    }
+    public int deleteFromDeliver(String msgId) {
+        return deliverBMapper.deleteFromDeliver(msgId);
+    }
+
+    @Transactional
+    public void moveToDeliver() {
+        List<MunjaonMsg> list = selectToMove();
+        if (list == null || list.size() == 0) {
+            return;
+        }
+        log.debug("[CLASS : {} : MOVE_COUNT : {}", this.getClass(), list.size());
+        for (MunjaonMsg msg : list) {
+            insertToLog(msg.getMsgId());
+            deleteFromDeliver(msg.getMsgId());
+        }
+    }
+}
 
src/main/resources/sqlmap/cubrid/cubrid_sql.xml (added)
+++ src/main/resources/sqlmap/cubrid/cubrid_sql.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.munjaon.client.cubrid.mapper.CubridMapper">
+    <select id="checkTime" resultType="String">
+        /* CubridMapper.checkTime */
+        SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
+    </select>
+    <select id="checkTableForMessage" resultType="int">
+        /* CubridMapper.checkTableForMessage */
+        SELECT COUNT(MSG_ID) FROM MUNJAON_MSG WHERE 1=1 LIMIT 1
+    </select>
+    <select id="checkTableForLog" resultType="int">
+        /* CubridMapper.checkTableForLog */
+        SELECT COUNT(MSG_ID) FROM MUNJAON_MSG_LOG WHERE 1=1 LIMIT 1
+    </select>
+    <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
+        /* CubridMapper.selectToDeliver */
+        SELECT
+            MSG_ID
+             , MSG_TYPE
+             , to_char(REQUEST_DATE, 'YYYYMMDDHH24MISS') RESERVE_DATE
+             , to_char(SYSDATETIME, 'YYYYMMDDHH24MISS') REQUEST_DATE
+             , RECV_PHONE
+             , SEND_PHONE
+             , SUBJECT
+             , MESSAGE
+             , FILENAME01
+             , FILENAME02
+             , FILENAME03
+             , KAKAO_SENDER_KEY
+             , KAKAO_TEMPLATE_CODE
+             , KAKAO_JSON_FILE
+        FROM MUNJAON_MSG
+        WHERE SEND_STATUS = '0'
+          AND MSG_TYPE = #{msgType}
+          AND REQUEST_DATE <![CDATA[<=]]> SYSDATETIME
+        ORDER BY REQUEST_DATE ASC
+            LIMIT 100
+    </select>
+    <update id="updateToDeliver">
+        /* CubridMapper.updateToDeliver */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = SYSDATETIME
+        WHERE MSG_ID = #{msgId}
+    </update>
+    <update id="updateDeliverForList">
+        /* CubridMapper.updateDeliverForList */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = SYSDATETIME
+        WHERE SEND_STATUS = '0'
+            AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
+    <update id="updateToReport">
+        /* CubridMapper.updateToReport */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = #{sendStatus}
+                             , SENT_DATE = FROM_UNIXTIME(UNIX_TIMESTAMP(#{sendDate}))
+                             , REPORT_DATE = NOW()
+                             , TELECOM = #{telecom}
+        WHERE MSG_ID = #{msgId}
+    </update>
+    <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
+        /* CubridMapper.selectToMove */
+        SELECT MSG_ID, to_date(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
+        FROM MUNJAON_MSG
+        WHERE SEND_STATUS NOT IN ('0', '1')
+            LIMIT 100
+    </select>
+    <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
+        /* CubridMapper.selectToExpire */
+        SELECT MSG_ID, to_date(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
+        FROM MUNJAON_MSG
+        WHERE REQUEST_DATE <![CDATA[<]]> FROM_UNIXTIME(UNIX_TIMESTAMP(#{expireTime}))
+          AND SEND_STATUS = '1'
+            LIMIT 100
+    </select>
+    <insert id="insertToLog">
+        /* CubridMapper.insertToLog */
+        INSERT INTO MUNJAON_MSG_LOG
+        (
+            MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
+            RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM,
+            FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE
+        )
+        SELECT
+            MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
+            RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM,
+            FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE
+        FROM MUNJAON_MSG
+        WHERE MSG_ID = #{msgId}
+    </insert>
+    <delete id="deleteFromDeliver">
+        /* CubridMapper.deleteFromDeliver */
+        DELETE FROM MUNJAON_MSG
+        WHERE MSG_ID = #{msgId}
+    </delete>
+</mapper>(No newline at end of file)
src/main/resources/sqlmap/mariadb/mariadb_sql.xml
--- src/main/resources/sqlmap/mariadb/mariadb_sql.xml
+++ src/main/resources/sqlmap/mariadb/mariadb_sql.xml
@@ -50,6 +50,18 @@
             , DELIVER_DATE = NOW()
         WHERE MSG_ID = #{msgId}
     </update>
+    <update id="updateDeliverForList" parameterType="java.util.List">
+        /* MariaDBMapper.updateDeliverForList */
+        UPDATE MUNJAON_MSG SET
+        SEND_STATUS = '1'
+        , DELIVER_DATE = NOW()
+        WHERE SEND_STATUS = '0'
+        AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
     <update id="updateToReport">
         /* MariaDBMapper.updateToReport */
         UPDATE MUNJAON_MSG SET
src/main/resources/sqlmap/mssql/mssql_sql.xml
--- src/main/resources/sqlmap/mssql/mssql_sql.xml
+++ src/main/resources/sqlmap/mssql/mssql_sql.xml
@@ -2,24 +2,24 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.munjaon.client.mssql.mapper.MssqlMapper">
     <select id="checkTime" resultType="String">
-        /* MariaDBMapper.checkTime */
+        /* MssqlMapper.checkTime */
         SELECT GETDATE()
     </select>
     <select id="checkTableForMessage" resultType="int">
-        /* MariaDBMapper.checkTableForMessage */
+        /* MssqlMapper.checkTableForMessage */
 --         SELECT 1 FROM MUNJAON_MSG WHERE 1=1 LIMIT 1
         <![CDATA[
         SELECT TOP 1 COUNT(MSG_ID) FROM MUNJAON_MSG WHERE 1=1
         ]]>
     </select>
     <select id="checkTableForLog" resultType="int">
-        /* MariaDBMapper.checkTableForLog */
+        /* MssqlMapper.checkTableForLog */
         <![CDATA[
         SELECT TOP 1 COUNT(MSG_ID) FROM MUNJAON_MSG_LOG WHERE 1=1
         ]]>
     </select>
     <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToDeliver */
+        /* MssqlMapper.selectToDeliver */
         <![CDATA[
         SELECT
             TOP 100
@@ -45,14 +45,26 @@
         ]]>
     </select>
     <update id="updateToDeliver">
-        /* MariaDBMapper.updateToDeliver */
+        /* MssqlMapper.updateToDeliver */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = '1'
             , DELIVER_DATE = GETDATE()
         WHERE MSG_ID = #{msgId}
     </update>
+    <update id="updateDeliverForList">
+        /* MssqlMapper.updateDeliverForList */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = GETDATE()
+        WHERE SEND_STATUS = '0'
+        AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
     <update id="updateToReport">
-        /* MariaDBMapper.updateToReport */
+        /* MssqlMapper.updateToReport */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = #{sendStatus}
             , SENT_DATE = CAST(#{sendDate} AS DATETIME)
@@ -61,7 +73,7 @@
         WHERE MSG_ID = #{msgId}
     </update>
     <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToMove */
+        /* MssqlMapper.selectToMove */
         <![CDATA[
         SELECT TOP 100
             MSG_ID, CONVERT(VARCHAR(6),REQUEST_DATE,112) REQUEST_DATE
@@ -70,7 +82,7 @@
         ]]>
     </select>
     <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToExpire */
+        /* MssqlMapper.selectToExpire */
         <![CDATA[
             SELECT TOP 100
                 MSG_ID, CONVERT(VARCHAR(6),REQUEST_DATE,112) REQUEST_DATE
@@ -80,7 +92,7 @@
         ]]>
     </select>
     <insert id="insertToLog">
-        /* MariaDBMapper.insertToLog */
+        /* MssqlMapper.insertToLog */
         INSERT INTO MUNJAON_MSG_LOG
         (
             MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
@@ -95,7 +107,7 @@
         WHERE MSG_ID = #{msgId}
     </insert>
     <delete id="deleteFromDeliver">
-        /* MariaDBMapper.deleteFromDeliver */
+        /* MssqlMapper.deleteFromDeliver */
         DELETE FROM MUNJAON_MSG
         WHERE MSG_ID = #{msgId}
     </delete>
src/main/resources/sqlmap/mysql/mysql_sql.xml
--- src/main/resources/sqlmap/mysql/mysql_sql.xml
+++ src/main/resources/sqlmap/mysql/mysql_sql.xml
@@ -2,25 +2,24 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.munjaon.client.mysql.mapper.MysqlMapper">
     <select id="checkTime" resultType="String">
-        /* MariaDBMapper.checkTime */
+        /* MysqlMapper.checkTime */
         SELECT DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')
     </select>
     <select id="checkTableForMessage" resultType="int">
-        /* MariaDBMapper.checkTableForMessage */
---         SELECT 1 FROM MUNJAON_MSG WHERE 1=1 LIMIT 1
+        /* MysqlMapper.checkTableForMessage */
         SELECT COUNT(*)
         FROM   information_schema.tables
         WHERE TABLE_NAME = 'MUNJAON_MSG'
     </select>
     <select id="checkTableForLog" resultType="int">
-        /* MariaDBMapper.checkTableForLog */
+        /* MysqlMapper.checkTableForLog */
         SELECT COUNT(*)
         FROM   information_schema.tables
         WHERE TABLE_NAME = 'MUNJAON_MSG_LOG'
 --                 SELECT 1 FROM MUNJAON_MSG_LOG WHERE 1=1 LIMIT 1
     </select>
     <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToDeliver */
+        /* MysqlMapper.selectToDeliver */
         SELECT
             MSG_ID
             , MSG_TYPE
@@ -44,14 +43,26 @@
         LIMIT 100
     </select>
     <update id="updateToDeliver">
-        /* MariaDBMapper.updateToDeliver */
+        /* MysqlMapper.updateToDeliver */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = '1'
             , DELIVER_DATE = NOW()
         WHERE MSG_ID = #{msgId}
     </update>
+    <update id="updateDeliverForList">
+        /* MysqlMapper.updateToDeliver */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = NOW()
+        WHERE SEND_STATUS = '0'
+        AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
     <update id="updateToReport">
-        /* MariaDBMapper.updateToReport */
+        /* MysqlMapper.updateToReport */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = #{sendStatus}
             , SENT_DATE = FROM_UNIXTIME(UNIX_TIMESTAMP(#{sendDate}))
@@ -60,14 +71,14 @@
         WHERE MSG_ID = #{msgId}
     </update>
     <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToMove */
+        /* MysqlMapper.selectToMove */
         SELECT MSG_ID, DATE_FORMAT(REQUEST_DATE, '%Y%m') REQUEST_DATE
         FROM MUNJAON_MSG
         WHERE SEND_STATUS NOT IN ('0', '1')
             LIMIT 100
     </select>
     <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToExpire */
+        /* MysqlMapper.selectToExpire */
         SELECT MSG_ID, DATE_FORMAT(REQUEST_DATE, '%Y%m') REQUEST_DATE
         FROM MUNJAON_MSG
         WHERE REQUEST_DATE <![CDATA[<]]> FROM_UNIXTIME(UNIX_TIMESTAMP(#{expireTime}))
@@ -75,7 +86,7 @@
         LIMIT 100
     </select>
     <insert id="insertToLog">
-        /* MariaDBMapper.insertToLog */
+        /* MysqlMapper.insertToLog */
         INSERT INTO MUNJAON_MSG_LOG
         (
             MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
@@ -90,7 +101,7 @@
         WHERE MSG_ID = #{msgId}
     </insert>
     <delete id="deleteFromDeliver">
-        /* MariaDBMapper.deleteFromDeliver */
+        /* MysqlMapper.deleteFromDeliver */
         DELETE FROM MUNJAON_MSG
         WHERE MSG_ID = #{msgId}
     </delete>
src/main/resources/sqlmap/oracle/oracle_sql.xml
--- src/main/resources/sqlmap/oracle/oracle_sql.xml
+++ src/main/resources/sqlmap/oracle/oracle_sql.xml
@@ -2,24 +2,23 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.munjaon.client.oracle.mapper.OracleMapper">
     <select id="checkTime" resultType="String">
-        /* MariaDBMapper.checkTime */
+        /* OracleMapper.checkTime */
         SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') FROM DUAL
     </select>
     <select id="checkTableForMessage" resultType="int">
-        /* MariaDBMapper.checkTableForMessage */
---         SELECT 1 FROM MUNJAON_MSG WHERE 1=1 LIMIT 1
+        /* OracleMapper.checkTableForMessage */
         <![CDATA[
         SELECT COUNT(MSG_ID) FROM MUNJAON_MSG WHERE 1=1 AND rownum <= 1
         ]]>
     </select>
     <select id="checkTableForLog" resultType="int">
-        /* MariaDBMapper.checkTableForLog */
+        /* OracleMapper.checkTableForLog */
         <![CDATA[
         SELECT COUNT(MSG_ID) FROM MUNJAON_MSG_LOG WHERE 1=1 AND rownum <= 1
         ]]>
     </select>
     <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToDeliver */
+        /* OracleMapper.selectToDeliver */
         <![CDATA[
         SELECT
             MSG_ID
@@ -45,14 +44,26 @@
         ]]>
     </select>
     <update id="updateToDeliver">
-        /* MariaDBMapper.updateToDeliver */
+        /* OracleMapper.updateToDeliver */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = '1'
             , DELIVER_DATE = SYSDATE
         WHERE MSG_ID = #{msgId}
     </update>
+    <update id="updateDeliverForList">
+        /* OracleMapper.updateToDeliver */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = SYSDATE
+        WHERE SEND_STATUS = '0'
+        AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
     <update id="updateToReport">
-        /* MariaDBMapper.updateToReport */
+        /* OracleMapper.updateToReport */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = #{sendStatus}
             , SENT_DATE = TO_DATE(#{sendDate}, 'YYYYMMDDHH24MISS')
@@ -61,7 +72,7 @@
         WHERE MSG_ID = #{msgId}
     </update>
     <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToMove */
+        /* OracleMapper.selectToMove */
         <![CDATA[
         SELECT MSG_ID, TO_CHAR(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
         FROM MUNJAON_MSG
@@ -70,7 +81,7 @@
         ]]>
     </select>
     <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToExpire */
+        /* OracleMapper.selectToExpire */
         <![CDATA[
             SELECT MSG_ID, TO_CHAR(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
             FROM MUNJAON_MSG
@@ -80,7 +91,7 @@
         ]]>
     </select>
     <insert id="insertToLog">
-        /* MariaDBMapper.insertToLog */
+        /* OracleMapper.insertToLog */
         INSERT INTO MUNJAON_MSG_LOG
         (
             MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
@@ -95,7 +106,7 @@
         WHERE MSG_ID = #{msgId}
     </insert>
     <delete id="deleteFromDeliver">
-        /* MariaDBMapper.deleteFromDeliver */
+        /* OracleMapper.deleteFromDeliver */
         DELETE FROM MUNJAON_MSG
         WHERE MSG_ID = #{msgId}
     </delete>
src/main/resources/sqlmap/postgresql/postresql_sql.xml
--- src/main/resources/sqlmap/postgresql/postresql_sql.xml
+++ src/main/resources/sqlmap/postgresql/postresql_sql.xml
@@ -2,19 +2,19 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.munjaon.client.postgresql.mapper.PostgresqlMapper">
     <select id="checkTime" resultType="String">
-        /* MariaDBMapper.checkTime */
+        /* PostgresqlMapper.checkTime */
         SELECT TO_CHAR(NOW(), 'YYYYMMDDHH24MISS') FROM DUAL
     </select>
     <select id="checkTableForMessage" resultType="int">
-        /* MariaDBMapper.checkTableForMessage */
+        /* PostgresqlMapper.checkTableForMessage */
         SELECT COUNT(MSG_ID) FROM MUNJAON_MSG WHERE 1=1 LIMIT 1
     </select>
     <select id="checkTableForLog" resultType="int">
-        /* MariaDBMapper.checkTableForLog */
+        /* PostgresqlMapper.checkTableForLog */
         SELECT COUNT(MSG_ID) FROM MUNJAON_MSG_LOG WHERE 1=1 LIMIT 1
     </select>
     <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToDeliver */
+        /* PostgresqlMapper.selectToDeliver */
         <![CDATA[
         SELECT
             MSG_ID
@@ -40,14 +40,26 @@
         ]]>
     </select>
     <update id="updateToDeliver">
-        /* MariaDBMapper.updateToDeliver */
+        /* PostgresqlMapper.updateToDeliver */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = '1'
             , DELIVER_DATE = NOW()
         WHERE MSG_ID = #{msgId}
     </update>
+    <update id="updateDeliverForList">
+        /* PostgresqlMapper.updateDeliverForList */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = NOW()
+        WHERE SEND_STATUS = '0'
+        AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
     <update id="updateToReport">
-        /* MariaDBMapper.updateToReport */
+        /* PostgresqlMapper.updateToReport */
         UPDATE MUNJAON_MSG SET
             SEND_STATUS = #{sendStatus}
             , SENT_DATE = TO_DATE(#{sendDate}, 'YYYYMMDDHH24MISS')
@@ -56,7 +68,7 @@
         WHERE MSG_ID = #{msgId}
     </update>
     <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToMove */
+        /* PostgresqlMapper.selectToMove */
         <![CDATA[
         SELECT MSG_ID, TO_CHAR(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
         FROM MUNJAON_MSG
@@ -65,7 +77,7 @@
         ]]>
     </select>
     <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
-        /* MariaDBMapper.selectToExpire */
+        /* PostgresqlMapper.selectToExpire */
         <![CDATA[
             SELECT MSG_ID, TO_CHAR(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
             FROM MUNJAON_MSG
@@ -75,7 +87,7 @@
         ]]>
     </select>
     <insert id="insertToLog">
-        /* MariaDBMapper.insertToLog */
+        /* PostgresqlMapper.insertToLog */
         INSERT INTO MUNJAON_MSG_LOG
         (
             MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
@@ -90,7 +102,7 @@
         WHERE MSG_ID = #{msgId}
     </insert>
     <delete id="deleteFromDeliver">
-        /* MariaDBMapper.deleteFromDeliver */
+        /* PostgresqlMapper.deleteFromDeliver */
         DELETE FROM MUNJAON_MSG
         WHERE MSG_ID = #{msgId}
     </delete>
 
src/main/resources/sqlmap/tibero/tibero_sql.xml (added)
+++ src/main/resources/sqlmap/tibero/tibero_sql.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.munjaon.client.tibero.mapper.TiberoMapper">
+    <select id="checkTime" resultType="String">
+        /* OracleMapper.checkTime */
+        SELECT TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS') FROM DUAL
+    </select>
+    <select id="checkTableForMessage" resultType="int">
+        /* OracleMapper.checkTableForMessage */
+        <![CDATA[
+        SELECT COUNT(MSG_ID) FROM MUNJAON_MSG WHERE 1=1 AND rownum <= 1
+        ]]>
+    </select>
+    <select id="checkTableForLog" resultType="int">
+        /* OracleMapper.checkTableForLog */
+        <![CDATA[
+        SELECT COUNT(MSG_ID) FROM MUNJAON_MSG_LOG WHERE 1=1 AND rownum <= 1
+        ]]>
+    </select>
+    <select id="selectToDeliver" resultType="com.munjaon.client.model.MunjaonMsg">
+        /* OracleMapper.selectToDeliver */
+        <![CDATA[
+        SELECT
+            MSG_ID
+             , MSG_TYPE
+             , TO_CHAR(REQUEST_DATE,'YYYYMMDDHH24MISS') RESERVE_DATE
+             , TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS') REQUEST_DATE
+             , RECV_PHONE
+             , SEND_PHONE
+             , SUBJECT
+             , MESSAGE
+             , FILENAME01
+             , FILENAME02
+             , FILENAME03
+             , KAKAO_SENDER_KEY
+             , KAKAO_TEMPLATE_CODE
+             , KAKAO_JSON_FILE
+        FROM MUNJAON_MSG
+        WHERE SEND_STATUS = '0'
+          AND MSG_TYPE = #{msgType}
+          AND REQUEST_DATE <= SYSDATE
+          AND ROWNUM <= 100
+        ORDER BY REQUEST_DATE ASC
+        ]]>
+    </select>
+    <update id="updateToDeliver">
+        /* OracleMapper.updateToDeliver */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+                             , DELIVER_DATE = SYSDATE
+        WHERE MSG_ID = #{msgId}
+    </update>
+    <update id="updateDeliverForList">
+        /* OracleMapper.updateDeliverForList */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = '1'
+            , DELIVER_DATE = SYSDATE
+        WHERE SEND_STATUS = '0'
+        AND (
+        <foreach separator="OR" item="item" collection="list">
+            MSG_ID = #{item}
+        </foreach>
+        )
+    </update>
+    <update id="updateToReport">
+        /* OracleMapper.updateToReport */
+        UPDATE MUNJAON_MSG SET
+            SEND_STATUS = #{sendStatus}
+            , SENT_DATE = TO_DATE(#{sendDate}, 'YYYYMMDDHH24MISS')
+            , REPORT_DATE = SYSDATE
+            , TELECOM = #{telecom}
+        WHERE MSG_ID = #{msgId}
+    </update>
+    <select id="selectToMove" resultType="com.munjaon.client.model.MunjaonMsg">
+        /* OracleMapper.selectToMove */
+        <![CDATA[
+        SELECT MSG_ID, TO_CHAR(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
+        FROM MUNJAON_MSG
+        WHERE SEND_STATUS NOT IN ('0', '1')
+          AND ROWNUM <= 100
+        ]]>
+    </select>
+    <select id="selectToExpire" resultType="com.munjaon.client.model.MunjaonMsg">
+        /* OracleMapper.selectToExpire */
+        <![CDATA[
+        SELECT MSG_ID, TO_CHAR(REQUEST_DATE, 'YYYYMM') REQUEST_DATE
+        FROM MUNJAON_MSG
+        WHERE REQUEST_DATE < TO_DATE(#{expireTime}, 'YYYYMMDDHH24MISS')
+          AND SEND_STATUS = '1'
+          AND ROWNUM <= 100
+        ]]>
+    </select>
+    <insert id="insertToLog">
+        /* OracleMapper.insertToLog */
+        INSERT INTO MUNJAON_MSG_LOG
+        (
+            MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
+            RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM,
+            FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE
+        )
+        SELECT
+            MSG_ID, MSG_TYPE, SEND_STATUS, REQUEST_DATE,
+            RECV_PHONE, SEND_PHONE, SUBJECT, MESSAGE, TELECOM,
+            FILENAME01, FILENAME02, FILENAME03, DELIVER_DATE, SENT_DATE, REPORT_DATE
+        FROM MUNJAON_MSG
+        WHERE MSG_ID = #{msgId}
+    </insert>
+    <delete id="deleteFromDeliver">
+        /* OracleMapper.deleteFromDeliver */
+        DELETE FROM MUNJAON_MSG
+        WHERE MSG_ID = #{msgId}
+    </delete>
+</mapper>(No newline at end of file)
Add a comment
List