전자정부프레임워크 멀티 DB 문자 관련 2개 DB사용하기
전자 정부 프레임워크에 DB를 추가해서 특정 게시판에 특정 시설선택으로 글 작성 시 담당자에게 문자 발송요청건이 생겼네요.
메인 db를 티베로를 사용하고 있는데 문자 발송은 mysql이라 부랴부랴 하게 되었어요.
일단 전자정부프레임워크 db2개 관련으로 검색을 하였는데요.
https://www.egovframe.go.kr/home/sub.do?menuNo=37#
여기를 안내해주고 예제 소스도 보여주었어요.
db설정을 3개의 파일로 나누어서 설정을 해주는 소스였는데 저는 2곳으로 나누어서 설정을 하였네요.
context-datasource.xml에 추가한 내용은
<!-- SMS DB 설정 -->
<beans>
<bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"></property>
<property name="url" value="주소"></property>
<property name="username" value="아디"></property>
<property name="password" value="비번"></property>
<property name="initialSize" value="10" />
<property name="maxTotal" value="100" />
<property name="maxIdle" value="100" />
<property name="minIdle" value="10" />
<property name="maxWaitMillis" value="5000" />
</bean>
<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource2" />
<property name="configLocation" value="classpath:/egovframework/mapper/config/mapper-config.xml" />
<property name="mapperLocations" value="classpath:/egovframework/mapper/first/**/*Mapper.xml"></property>
</bean>
<bean id="transactionManager2"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource2"></property>
</bean>
<bean id="sqlSession2" class="org.mybatis.spring.SqlSessionTemplate"
destroy-method="clearCache">
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory2"></constructor-arg>
</bean>
</beans>
간단히 db를 추가해주었구요.. aop관련설정으로
context-transaction.xml 아래와 같이 수정해 주었어요.
<tx:annotation-driven transaction-manager="transactionManager2"/>
이렇게 하고 나니 별문제 없이 프로젝트가 실행이 되었어요. 이제 서비스를 만들어 볼게요.
일단 commondata클래스를 만들고요.
import java.util.LinkedHashMap;
public class CommonData extends LinkedHashMap {
public void put(String key, Object value){
super.put(key, value);
}
public String get(String key) {
if(super.get(key)!=null)
{
return super.get(key).toString();
}
else
{
return null;
}
}
public Object getObj(String key) {
return super.get(key);
}
}
이걸 기반으로 하는 commonDAO
import java.util.List;
import java.util.Map;
import 삭제.CommonData;
public interface commonDAO {
public List<Map<String, Object>> selectlist(CommonData in_data , String sql_id) throws Exception;
public CommonData select(CommonData in_data , String sql_id) throws Exception;
public int listSearchCount(CommonData in_data , String sql_id) throws Exception;
public int insert(CommonData in_data , String sql_id) throws Exception ;
public int update(CommonData in_data , String sql_id) throws Exception;
public int delete(CommonData in_data , String sql_id) throws Exception;
public CommonData selectone(CommonData in_data , String sql_id) throws Exception;
public String selectstr(CommonData in_data , String sql_id) throws Exception;
public Long selectLong(CommonData in_data , String sql_id) throws Exception;
}
crssms_commonDAOImpl 내용인데요.
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;
import 삭제.CommonData;
@Repository
public class crssms_commonDAOImpl implements commonDAO
{
@Inject
@Resource(name="sqlSession2")
private SqlSession session;
private String namespace = "";
@Override
public int insert(CommonData in_data , String sql_id) throws Exception {
return session.insert(namespace + sql_id, in_data);
}
@Override
public int update(CommonData in_data , String sql_id) throws Exception {
return session.update(namespace + sql_id, in_data);
}
@Override
public int delete(CommonData in_data , String sql_id) throws Exception {
return session.update(namespace + sql_id, in_data);
}
@Override
public int listSearchCount(CommonData in_data, String sql_id) throws Exception {
// TODO Auto-generated method stub
return session.selectOne(namespace + sql_id, in_data);
}
@Override
public CommonData selectone(CommonData in_data, String sql_id) throws Exception {
// TODO Auto-generated method stub
return session.selectOne(namespace + sql_id, in_data);
}
@Override
public String selectstr(CommonData in_data, String sql_id) throws Exception {
// TODO Auto-generated method stub
return session.selectOne(namespace + sql_id, in_data);
}
@Override
public List<Map<String, Object>> selectlist(CommonData in_data, String sql_id) throws Exception {
return session.selectList(namespace + sql_id, in_data);
}
@Override
public CommonData select(CommonData in_data, String sql_id) throws Exception {
// TODO Auto-generated method stub
return (CommonData) session.selectList(namespace + sql_id, in_data);
}
@Override
public Long selectLong(CommonData in_data, String sql_id) throws Exception {
// TODO Auto-generated method stub
return session.selectOne(namespace + sql_id, in_data);
}
}
common_Service 내용인데요.
import java.util.List;
import java.util.Map;
import 삭제.CommonData;
public interface common_Service {
public List<Map<String, Object>> selectlist(CommonData in_data , String sql_id) throws Exception;
public CommonData select(CommonData in_data , String sql_id) throws Exception;
public int listSearchCount(CommonData in_data , String sql_id) throws Exception;
public int insert(CommonData in_data , String sql_id) throws Exception ;
public int update(CommonData in_data , String sql_id) throws Exception;
public int delete(CommonData in_data , String sql_id) throws Exception;
public CommonData selectone(CommonData in_data , String sql_id) throws Exception;
public String selectstr(CommonData in_data , String sql_id) throws Exception;
public Long selectLong(CommonData in_data, String sql_id) throws Exception;
}
Crssms_ServiceImpl 내용인데요
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import 삭제.CommonData;
import 삭제.persistence.crssms_commonDAOImpl;
@Service
public class Crssms_ServiceImpl implements common_Service {
@Autowired
private crssms_commonDAOImpl dao;
@Override
public List<Map<String, Object>> selectlist(CommonData in_data, String sql_id) throws Exception {
return dao.selectlist(in_data, sql_id);
}
@Override
public CommonData select(CommonData in_data, String sql_id) throws Exception {
return dao.select(in_data, sql_id);
}
@Override
public int listSearchCount(CommonData in_data, String sql_id) throws Exception {
return dao.listSearchCount(in_data, sql_id);
}
@Override
public int insert(CommonData in_data, String sql_id) throws Exception {
return dao.insert(in_data, sql_id);
}
@Override
public int update(CommonData in_data, String sql_id) throws Exception {
return dao.update(in_data, sql_id);
}
@Override
public int delete(CommonData in_data, String sql_id) throws Exception {
return dao.delete(in_data, sql_id);
}
@Override
public CommonData selectone(CommonData in_data, String sql_id) throws Exception {
return dao.selectone(in_data, sql_id);
}
@Override
public String selectstr(CommonData in_data, String sql_id) throws Exception {
return dao.selectstr(in_data, sql_id);
}
@Override
public Long selectLong(CommonData in_data, String sql_id) throws Exception {
return dao.selectLong(in_data, sql_id);
}
}
이렇고 추가한 mybatis파일은
<?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="Common_Mapper">
<!-- 문자발송 관련 공통 쿼리 처리 기존 쿼리 및 경로 모두 수정할것!! -->
<insert id="SDK_SMS_SEND">
INSERT INTO SDK_SMS_SEND (USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO) VALUES (
'_crs' , 0 , '비밀',#{sMsg}, date_format(now(), '%Y%m%d%H%i%S'),date_format(now(), '%Y%m%d%H%i%S'),#{sMEM_Mobile},'1',
CONCAT('name^',#{sMobile}))
</insert>
<insert id="SDK_MMS_SEND_INSERT">
INSERT INTO SDK_MMS_SEND (USER_ID, SCHEDULE_TYPE, SUBJECT, MMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO) VALUES (
'_crs' , 0 , '비밀',#{sMsg}, date_format(now(), '%Y%m%d%H%i%S'),date_format(now(), '%Y%m%d%H%i%S'),#{sMEM_Mobile},'1',
CONCAT('name^',#{sMobile}))
</insert>
</mapper>
context-datasource.xml 설정한곳을 봐서 알겠지만 파일위치는
/src/main/resources/egovframework/mapper/first/Common_Mapper.xml
이렇습니다. 사용할 땐 이런 식으로 선언해서 사용합니다.
import 삭제.dto.CommonData;
import 삭제.service.Crssms_ServiceImpl;
@Autowired
private Crssms_ServiceImpl sms_service;
중략 ...
String sMEM_Mobile = "보내는 번호";
String sMobile="받는번호";
String sMsg = "메세지";
String sName = "담당자";
CommonData dto = new CommonData();
dto.put("sMobile", sMobile);
dto.put("sMEM_Mobile", sMEM_Mobile);
dto.put("sMsg", sMsg);
sms_service.insert(dto, "Common_Mapper.SDK_SMS_SEND");
이렇게 해서 db를 하나 추가해서 문자 발송까지 정리해 보았습니다.
수고하세요.
'SPRING FRAMEWORK' 카테고리의 다른 글
웹소켓 연결 테스트 소스 (0) | 2024.09.03 |
---|---|
hwplib 라이브러리 hwp파일 생성 다운로드 (0) | 2024.08.01 |
스프링 부트 자바 8버전 지원 POM.XML파일 (0) | 2024.04.24 |
스프링 컨트롤러에서 자바 스크립트 추가 하기 (0) | 2023.02.20 |
스프링 리소스 파일 읽기 (0) | 2023.02.20 |