diff --git a/.classpath b/.classpath index 039b7c80..17b99a85 100644 --- a/.classpath +++ b/.classpath @@ -33,7 +33,6 @@ - diff --git a/db/settings/init.sql b/db/settings/init.sql new file mode 100644 index 00000000..c56a5105 --- /dev/null +++ b/db/settings/init.sql @@ -0,0 +1,43 @@ +create table SM_CODE_M ( + L_CODE_ID varchar(35) not null +, L_CODE_NM varchar(50) not null +, L_CODE_NM_EN varchar(50) +, L_CODE_DESC varchar(500) +, SORT_SEQ int +, USE_YN varchar(1) +, REG_ID varchar(35) +, REG_DD datetime +, MOD_ID varchar(35) +, MOD_DD datetime +); + +create table SM_CODE_S ( + S_CODE_ID varchar(35) not null +, L_CODE_ID varchar(35) not null +, S_CODE_NM varchar(100) +, S_CODE_NM_EN varchar(100) +, S_CODE_DESC varchar(500) +, SORT_SEQ int +, COLUMN1 varchar(50) +, COLUMN2 varchar(50) +, USE_YN varchar(1) +, REG_ID varchar(35) +, REG_DD datetime +, MOD_ID varchar(35) +, MOD_DD datetime +); + + +select * from SM_CODE_M + + +SELECT B.S_CODE_ID + , B.S_CODE_NM + + select * +FROM SM_CODE_M A, +SM_CODE_S B +WHERE A.L_CODE_ID = B.L_CODE_ID +AND A.USE_YN = 'Y' +AND B.USE_YN = 'Y' +ORDER BY B.SORT_SEQ diff --git a/pom.xml b/pom.xml index 7407dd44..0b341cc0 100644 --- a/pom.xml +++ b/pom.xml @@ -229,13 +229,18 @@ 2.11.4 - + org.mariadb.jdbc mariadb-java-client 2.2.5 - + + commons-dbcp + commons-dbcp + 1.4 + + diff --git a/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java b/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java new file mode 100644 index 00000000..882fe135 --- /dev/null +++ b/src/main/java/egovframework/com/cmm/service/impl/EgovComAbstractDAO.java @@ -0,0 +1,306 @@ +/** + * + */ +package egovframework.com.cmm.service.impl; + +import java.util.List; +import java.util.Map; + +import javax.annotation.Resource; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; +import org.apache.ibatis.session.SqlSessionFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import egovframework.rte.psl.dataaccess.EgovAbstractMapper; +/** + * EgovComAbstractDAO.java 클래스 + * + * @author 서준식 + * @since 2011. 9. 23. + * @version 1.0 + * @see + * + *
+ * << 개정이력(Modification Information) >>
+ *
+ *   수정일      수정자           수정내용
+ *  -------    -------------    ----------------------
+ *   2011. 9. 23.   서준식        최초 생성
+ *   2016. 5. 11.   장동한        myBatis 방식 적용
+ * 
+ */ +public abstract class EgovComAbstractDAO extends EgovAbstractMapper{ + + private final Logger LOGGER = LoggerFactory.getLogger(this.getClass()); + + @Resource(name="egov.sqlSession") + public void setSqlSessionFactory(SqlSessionFactory sqlSession) { + super.setSqlSessionFactory(sqlSession); + } + + /** + * 입력 처리 SQL mapping 을 실행한다. + * + * @param queryId - 입력 처리 SQL mapping 쿼리 ID + * + * @return DBMS가 지원하는 경우 insert 적용 결과 count + */ + @Override + public int insert(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().insert(queryId); + } + + /** + * 입력 처리 SQL mapping 을 실행한다. + * + * @param queryId - 입력 처리 SQL mapping 쿼리 ID + * @param parameterObject - 입력 처리 SQL mapping 입력 데이터를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return DBMS가 지원하는 경우 insert 적용 결과 count + */ + @Override + public int insert(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().insert(queryId, parameterObject); + } + + /** + * 수정 처리 SQL mapping 을 실행한다. + * + * @param queryId - 수정 처리 SQL mapping 쿼리 ID + * + * @return DBMS가 지원하는 경우 update 적용 결과 count + */ + @Override + public int update(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().update(queryId); + } + + /** + * 수정 처리 SQL mapping 을 실행한다. + * + * @param queryId - 수정 처리 SQL mapping 쿼리 ID + * @param parameterObject - 수정 처리 SQL mapping 입력 데이터(key 조건 및 변경 데이터)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return DBMS가 지원하는 경우 update 적용 결과 count + */ + @Override + public int update(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().update(queryId, parameterObject); + } + + /** + * 삭제 처리 SQL mapping 을 실행한다. + * + * @param queryId - 삭제 처리 SQL mapping 쿼리 ID + * + * @return DBMS가 지원하는 경우 delete 적용 결과 count + */ + @Override + public int delete(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().delete(queryId); + } + + /** + * 삭제 처리 SQL mapping 을 실행한다. + * + * @param queryId - 삭제 처리 SQL mapping 쿼리 ID + * @param parameterObject - 삭제 처리 SQL mapping 입력 데이터(일반적으로 key 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return DBMS가 지원하는 경우 delete 적용 결과 count + */ + @Override + public int delete(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().delete(queryId, parameterObject); + } + + //CHECKSTYLE:OFF + /** + * 명명규칙에 맞춰 selectOne()로 변경한다. + * @deprecated select() 메소드로 대체 + * + * @see EgovAbstractMapper.selectOne() + */ + //CHECKSTYLE:ON + @Deprecated + public Object selectByPk(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectOne(queryId, parameterObject); + } + + /** + * 단건조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map) + */ + @Override + public T selectOne(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectOne(queryId); + } + + /** + * 단건조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 단건 조회 처리 SQL mapping 입력 데이터(key)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map) + */ + @Override + public T selectOne(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectOne(queryId, parameterObject); + } + + /** + * 결과 목록을 Map 을 변환한다. + * 모든 구문이 파라미터를 필요로 하지는 않기 때문에, 파라미터 객체를 요구하지 않는 형태로 오버로드되었다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param mapKey - 결과 객체의 프로퍼티 중 하나를 키로 사용 + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map)의 Map + */ + @Override + public Map selectMap(String queryId, String mapKey) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectMap(queryId, mapKey); + } + + /** + * 결과 목록을 Map 을 변환한다. + * 모든 구문이 파라미터를 필요로 하지는 않기 때문에, 파라미터 객체를 요구하지 않는 형태로 오버로드되었다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 맵 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param mapKey - 결과 객체의 프로퍼티 중 하나를 키로 사용 + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map)의 Map + */ + @Override + public Map selectMap(String queryId, Object parameterObject, String mapKey) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectMap(queryId, parameterObject, mapKey); + } + + /** + * 결과 목록을 Map 을 변환한다. + * 모든 구문이 파라미터를 필요로 하지는 않기 때문에, 파라미터 객체를 요구하지 않는 형태로 오버로드되었다. + * + * @param queryId - 단건 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 맵 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param mapKey - 결과 객체의 프로퍼티 중 하나를 키로 사용 + * @param rowBounds - 특정 개수 만큼의 레코드를 건너띄게 함 + * + * @return 결과 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 단일 결과 객체(보통 VO 또는 Map)의 Map + */ + @Override + public Map selectMap(String queryId, Object parameterObject, String mapKey, RowBounds rowBounds) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectMap(queryId, parameterObject, mapKey, rowBounds); + } + + //CHECKSTYLE:OFF + /** + * 명명규칙에 맞춰 selectList()로 변경한다. + * + * @see EgovAbstractMapper.selectList() + * @deprecated List 메소드로 대체 + */ + //CHECKSTYLE:ON + @Deprecated + public List list(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId, parameterObject); + } + + /** + * 리스트 조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public List selectList(String queryId) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId); + } + + /** + * 리스트 조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 리스트 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public List selectList(String queryId, Object parameterObject) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId, parameterObject); + } + + /** + * 리스트 조회 처리 SQL mapping 을 실행한다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 리스트 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param rowBounds - 특정 개수 만큼의 레코드를 건너띄게 함 + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public List selectList(String queryId, Object parameterObject, RowBounds rowBounds) { + LOGGER.debug("queryId = "+queryId); + return getSqlSession().selectList(queryId, parameterObject, rowBounds); + } + + /** + * 부분 범위 리스트 조회 처리 SQL mapping 을 실행한다. + * (부분 범위 - pageIndex 와 pageSize 기반으로 현재 부분 범위 조회를 위한 skipResults, maxResults 를 계산하여 ibatis 호출) + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param parameterObject - 리스트 조회 처리 SQL mapping 입력 데이터(조회 조건)를 세팅한 파라메터 객체(보통 VO 또는 Map) + * @param pageIndex - 현재 페이지 번호 + * @param pageSize - 한 페이지 조회 수(pageSize) + * + * @return 부분 범위 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 부분 범위 결과 객체(보통 VO 또는 Map) List + */ + @Override + public List listWithPaging(String queryId, Object parameterObject, int pageIndex, int pageSize) { + LOGGER.debug("queryId = "+queryId); + int skipResults = pageIndex * pageSize; + //int maxResults = (pageIndex * pageSize) + pageSize; + + RowBounds rowBounds = new RowBounds(skipResults, pageSize); + + return getSqlSession().selectList(queryId, parameterObject, rowBounds); + } + + /** + * SQL 조회 결과를 ResultHandler를 이용해서 출력한다. + * ResultHandler를 상속해 구현한 커스텀 핸들러의 handleResult() 메서드에 따라 실행된다. + * + * @param queryId - 리스트 조회 처리 SQL mapping 쿼리 ID + * @param handler - 조회 결과를 제어하기 위해 구현한 ResultHandler + * @return + * + * @return 결과 List 객체 - SQL mapping 파일에서 지정한 resultType/resultMap 에 의한 결과 객체(보통 VO 또는 Map)의 List + */ + @Override + public void listToOutUsingResultHandler(String queryId, ResultHandler handler) { + LOGGER.debug("queryId = "+queryId); + getSqlSession().select(queryId, handler); + } +} diff --git a/src/main/java/nlib/bbs/web/BoardController.java b/src/main/java/nlib/bbs/web/BoardController.java index fb9d74af..a83c88ae 100644 --- a/src/main/java/nlib/bbs/web/BoardController.java +++ b/src/main/java/nlib/bbs/web/BoardController.java @@ -68,7 +68,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/listNotices.do") - public String listNotices(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String listNotices(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); @@ -82,24 +82,18 @@ public class BoardController extends NlibCommonController log.debug("listNotices > articleType = " + articleType); log.debug("listNotices > message = " + message); - DataApiReqVO reqVOforCode = new DataApiReqVO(); - reqVOforCode.setAuthKey(createAuthKey(req, authentication)); - reqVOforCode.setPageIndex(0); - reqVOforCode.setPageSize(0); // 페이징 사이즈 코드 목록 조회 - reqVOforCode.addInfoItem("codeUpperId", "PAGE_SIZE"); - DataApiResVO resVOforPageSize = codeService.listCodes(reqVOforCode); + List> pageSizeCodes = codeService.listCodes("PAGE_SIZE"); // 공지사항 유형 코드 목록 조회 - reqVOforCode.addInfoItem("codeUpperId", "ARTICLE_TYPE"); - DataApiResVO resVOforArticleType = codeService.listCodes(reqVOforCode); + List> articleTypeCodes = codeService.listCodes("ARTICLE_TYPE"); // 반환 정보 model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); model.addAttribute("searchKeyword", searchKeyword); - model.addAttribute("pageSizeCodes", resVOforPageSize.getList()); - model.addAttribute("articleTypeCodes", resVOforArticleType.getList()); + model.addAttribute("pageSizeCodes", pageSizeCodes); + model.addAttribute("articleTypeCodes", articleTypeCodes); model.addAttribute("articleType" , articleType); model.addAttribute("message" , message); @@ -114,7 +108,7 @@ public class BoardController extends NlibCommonController */ @RequestMapping(value="/board/listNoticesAjax.do") public ResponseEntity listNoticesAjax(HttpServletRequest req, - Authentication authentication, @RequestBody Map paramMap) { + Authentication authentication, @RequestBody Map paramMap) throws Exception { String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); @@ -159,7 +153,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/selectNotice.do") - public String selectNotice(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String selectNotice(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { // 목록 이동시 전달할 매개변수 String searchKeyword = paramMap.get("searchKeyword"); @@ -212,7 +206,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/listFAQs.do") - public String listFAQs(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String listFAQs(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); @@ -230,20 +224,20 @@ public class BoardController extends NlibCommonController reqVOforCode.setAuthKey(createAuthKey(req, authentication)); reqVOforCode.setPageIndex(0); reqVOforCode.setPageSize(0); + + // 페이징 사이즈 코드 목록 조회 - reqVOforCode.addInfoItem("codeUpperId", "PAGE_SIZE"); - DataApiResVO resVOforPageSize = codeService.listCodes(reqVOforCode); + List> pageSizeCodes = codeService.listCodes("PAGE_SIZE"); // 유형 코드 목록 조회 - reqVOforCode.addInfoItem("codeUpperId", "FAQ_TYPE"); - DataApiResVO resVOforFaqType = codeService.listCodes(reqVOforCode); + List> articleTypeCodes = codeService.listCodes("FAQ_TYPE"); // 반환 정보 model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); model.addAttribute("searchKeyword", searchKeyword); - model.addAttribute("pageSizeCodes", resVOforPageSize.getList()); - model.addAttribute("faqTypeCodes" , resVOforFaqType.getList()); + model.addAttribute("pageSizeCodes", pageSizeCodes); + model.addAttribute("faqTypeCodes" , articleTypeCodes); model.addAttribute("message" , message); model.addAttribute("faqType" , faqType); model.addAttribute("faqType" , faqType); @@ -260,7 +254,7 @@ public class BoardController extends NlibCommonController */ @RequestMapping(value="/board/listFAQsAjax.do") public ResponseEntity listFAQsAjax(HttpServletRequest req, - Authentication authentication, @RequestBody Map paramMap) { + Authentication authentication, @RequestBody Map paramMap) throws Exception { String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); @@ -307,7 +301,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/selectFAQAjax.do") - public ResponseEntity selectFAQAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map paramMap) { + public ResponseEntity selectFAQAjax(HttpServletRequest req, Authentication authentication, @RequestBody Map paramMap) throws Exception { // 게시물 번호 String articleNo = paramMap.get("articleNo"); @@ -336,7 +330,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/listQnAs.do") - public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String listQnAs(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); @@ -348,19 +342,15 @@ public class BoardController extends NlibCommonController log.debug("listQnAs > searchKeyword = " + searchKeyword); log.debug("listQnAs > message = " + message); + // 페이징 사이즈 코드 목록 조회 - DataApiReqVO reqVOforPageSize = new DataApiReqVO(); - reqVOforPageSize.setAuthKey(createAuthKey(req, authentication)); - reqVOforPageSize.setPageIndex(pageIndex); - reqVOforPageSize.setPageSize(pageSize); - reqVOforPageSize.addInfoItem("codeUpperId", "PAGE_SIZE"); - DataApiResVO resVOforPageSize = codeService.listCodes(reqVOforPageSize); + List> pageSizeCodes = codeService.listCodes("PAGE_SIZE"); // 반환 정보 model.addAttribute("pageIndex" , pageIndex); model.addAttribute("pageSize" , pageSize); model.addAttribute("searchKeyword", searchKeyword); - model.addAttribute("pageSizeCodes", resVOforPageSize.getList()); + model.addAttribute("pageSizeCodes", pageSizeCodes); model.addAttribute("message" , message); return "nlib/board/listQnAs"; @@ -374,7 +364,7 @@ public class BoardController extends NlibCommonController */ @RequestMapping(value="/board/listQnAsAjax.do") public ResponseEntity listQnAsAjax(HttpServletRequest req, - Authentication authentication, @RequestBody Map paramMap) { + Authentication authentication, @RequestBody Map paramMap) throws Exception { String searchKeyword = paramMap.get("searchKeyword"); String pageIndex = StringUtil.getString(paramMap.get("pageIndex"), "1"); @@ -418,7 +408,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/selectQnA.do") - public String selectQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String selectQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { // 목록 이동시 전달할 매개변수 String searchKeyword = paramMap.get("searchKeyword"); @@ -470,7 +460,7 @@ public class BoardController extends NlibCommonController @RequestMapping("/board/insertQnAForm.do") public String insertQnAForm(HttpServletRequest req, Authentication authentication , @RequestParam Map paramMap - , ModelMap model) { + , ModelMap model) throws Exception { // 입력 매개변수 출력 설정 addParamsToModel(paramMap, model); @@ -492,7 +482,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/insertQnA.do") - public String insertQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String insertQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { NlibLoginVO loginVO = getNlibLoginVO(authentication); @@ -565,7 +555,7 @@ public class BoardController extends NlibCommonController } @RequestMapping("/board/verifyWriter.do") - public String verifyWriter(HttpServletRequest req) { + public String verifyWriter(HttpServletRequest req) throws Exception { return "nlib/board/verifyWriter"; } @@ -579,7 +569,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/updateQnAForm.do") - public String updateQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String updateQnAForm(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { // 목록 이동시 전달할 매개변수 String searchKeyword = paramMap.get("searchKeyword"); @@ -657,7 +647,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/updateQnA.do") - public String updateQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String updateQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { log.debug("paramMap > " + paramMap); @@ -758,7 +748,7 @@ public class BoardController extends NlibCommonController * @return */ @RequestMapping("/board/deleteQnA.do") - public String deleteQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) { + public String deleteQnA(HttpServletRequest req, Authentication authentication, @RequestParam Map paramMap, ModelMap model) throws Exception { String message = null; diff --git a/src/main/java/nlib/cmm/service/CodeService.java b/src/main/java/nlib/cmm/service/CodeService.java index c6f9fcfc..1ab2aea6 100644 --- a/src/main/java/nlib/cmm/service/CodeService.java +++ b/src/main/java/nlib/cmm/service/CodeService.java @@ -1,6 +1,9 @@ package nlib.cmm.service; +import java.util.HashMap; +import java.util.List; + import org.springframework.stereotype.Service; import nlib.restful.service.DataApiReqVO; @@ -8,6 +11,6 @@ import nlib.restful.service.DataApiResVO; public interface CodeService { - public DataApiResVO listCodes(DataApiReqVO reqVO); + public List> listCodes(String iCodeId) throws Exception; } \ No newline at end of file diff --git a/src/main/java/nlib/cmm/service/impl/CodeDAO.java b/src/main/java/nlib/cmm/service/impl/CodeDAO.java index abbe2118..f6a367a1 100644 --- a/src/main/java/nlib/cmm/service/impl/CodeDAO.java +++ b/src/main/java/nlib/cmm/service/impl/CodeDAO.java @@ -1,28 +1,12 @@ - -package nlib.cmm.service.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Repository; - -import nlib.cmm.web.MainController; -import nlib.restful.DataApi; -import nlib.restful.service.DataApiReqVO; -import nlib.restful.service.DataApiResVO; - -@Repository("codeDAO") -public class CodeDAO extends DataApi -{ - private static final Logger log = LoggerFactory.getLogger(CodeDAO.class); - - /** - * 주 자원의 URI - */ - public static final String RESOURCE_URI = "/uac/service/code/list"; - - public DataApiResVO listCodes(DataApiReqVO reqVO) { - reqVO.setReqUrl(RESOURCE_URI + "/" + reqVO.getInfoItem("codeUpperId")); - return get(reqVO); - } - -} \ No newline at end of file +package nlib.cmm.service.impl; + +import java.util.HashMap; +import java.util.List; + +import egovframework.rte.psl.dataaccess.mapper.Mapper; + +@Mapper("codeDAO") +public interface CodeDAO { + + public List> listCodes(String iCodeId) throws Exception; +} diff --git a/src/main/java/nlib/cmm/service/impl/CodeServiceImpl.java b/src/main/java/nlib/cmm/service/impl/CodeServiceImpl.java index 4f0f8394..aea75c02 100644 --- a/src/main/java/nlib/cmm/service/impl/CodeServiceImpl.java +++ b/src/main/java/nlib/cmm/service/impl/CodeServiceImpl.java @@ -1,6 +1,8 @@ - package nlib.cmm.service.impl; +import java.util.HashMap; +import java.util.List; + import javax.annotation.Resource; import org.slf4j.Logger; @@ -9,8 +11,7 @@ import org.springframework.stereotype.Service; import egovframework.rte.fdl.cmmn.EgovAbstractServiceImpl; import nlib.cmm.service.CodeService; -import nlib.restful.service.DataApiReqVO; -import nlib.restful.service.DataApiResVO; +import nlib.util.StringUtil; @Service("codeService") public class CodeServiceImpl extends EgovAbstractServiceImpl implements CodeService @@ -20,11 +21,10 @@ public class CodeServiceImpl extends EgovAbstractServiceImpl implements CodeServ @Resource(name="codeDAO") private CodeDAO codeDAO; - /*public DataApiResVO listCodes(DataApiReqVO reqVO) { - return codeDAO.listCodes(reqVO); - }*/ - - public DataApiResVO listCodes(DataApiReqVO reqVO) { - return codeDAO.listCodes(reqVO); + public List> listCodes(String iCodeId) throws Exception { + + if(StringUtil.isEmpty(iCodeId)) return null; + + return codeDAO.listCodes(iCodeId.toUpperCase()); } } \ No newline at end of file diff --git a/src/main/java/nlib/cmm/web/CodeController.java b/src/main/java/nlib/cmm/web/CodeController.java index 7349b666..b7faa99f 100644 --- a/src/main/java/nlib/cmm/web/CodeController.java +++ b/src/main/java/nlib/cmm/web/CodeController.java @@ -1,6 +1,7 @@ package nlib.cmm.web; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.annotation.Resource; @@ -8,17 +9,13 @@ import javax.servlet.http.HttpServletRequest; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.http.ResponseEntity; -import org.springframework.security.core.Authentication; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import nlib.cmm.NlibCommonController; import nlib.cmm.service.CodeService; -import nlib.restful.service.DataApiReqVO; -import nlib.restful.service.DataApiResVO; -import nlib.util.StringUtil; @Controller public class CodeController extends NlibCommonController { @@ -28,60 +25,16 @@ public class CodeController extends NlibCommonController { @Resource(name="codeService") private CodeService codeService; - @RequestMapping(value="/code/listCodesAjax.do") - public ResponseEntity listCodeAjax(HttpServletRequest req, - Authentication authentication, @RequestBody Map paramMap) { + @RequestMapping( {"/code/listCodes.do"} ) + public String setContent(HttpServletRequest req, @RequestParam Map paramMap, ModelMap model) throws Exception { - String codeSearchKeyword = paramMap.get("codeSearchKeyword"); - String codePageIndex = paramMap.get("codePageIndex"); - String codePageSize = paramMap.get("codePageSize"); - String codeUpperId = paramMap.get("codeUpperId"); + String lCodeId = paramMap.get("lCodeId"); - log.debug("listCodeAjax > codeSearchKeyword = " + codeSearchKeyword); - log.debug("listCodeAjax > codePageIndex = " + codePageIndex); - log.debug("listCodeAjax > codePageSize = " + codePageSize); - log.debug("listCodeAjax > codeUpperId = " + codeUpperId); - - //------------------------------- - // REQ VO 구성 - //------------------------------- - DataApiReqVO reqVO = new DataApiReqVO(); - reqVO.setAuthKey(createAuthKey(req, authentication)); - reqVO.setPageIndex(codePageIndex); - reqVO.setPageSize(codePageSize); - - // 추가 정보 설정 - reqVO.addInfoItem("searchKeyword", codeSearchKeyword); - reqVO.addInfoItem("codeUpperId", codeUpperId); - - // 요청 - DataApiResVO resVO = codeService.listCodes(reqVO); - - //------------------------------- - // JSON변환 응답 처리 - //------------------------------- - // JS-GRID 페이징 처리를 포함한 응답값 처리 - // (1) 페이징을 서버단에서 처리하는 경우 (pagingloading = false) - // {data: [{...}], - // itemsCount: 255 - // } - // (2) 페이징을 클라이언트에서 처리하는 경우 (pagingloading = true) - // {data: [{...}], - // itemsCount: 255 - // } - - // 코드 페이징 사이즈값이 없거나 0인 경우, 서버에서 페이징 처리하지 않고 전체 데이터 전송 - if(StringUtil.isEmpty(codePageSize) || Integer.parseInt(codePageSize) <= 0) { - return makeResponseEntityJson(resVO.getList()); - } - - // 코드 페이징 처리되는 경우 - HashMap retMap = new HashMap(); - retMap.put("data", resVO.getList()); - retMap.put("itemsCount", resVO.getRecordTotCount()); - - return makeResponseEntityJson(retMap); + List> resultList = codeService.listCodes(lCodeId); + model.addAttribute("resultList", resultList); + model.addAttribute("lCodeId", lCodeId); + + return "nlib/code/listCodes"; } - } diff --git a/src/main/java/nlib/security/SpringSecurityConfig.java b/src/main/java/nlib/security/SpringSecurityConfig.java index 1ead7ed9..5ccd6d36 100644 --- a/src/main/java/nlib/security/SpringSecurityConfig.java +++ b/src/main/java/nlib/security/SpringSecurityConfig.java @@ -57,6 +57,7 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { .antMatchers("/board/**") .antMatchers("/inform/**") .antMatchers("/alert/**") + .antMatchers("/code/**") ; } diff --git a/src/main/resources/egovframework/egovProps/globals.properties b/src/main/resources/egovframework/egovProps/globals.properties index 5693f068..029fd479 100644 --- a/src/main/resources/egovframework/egovProps/globals.properties +++ b/src/main/resources/egovframework/egovProps/globals.properties @@ -23,6 +23,11 @@ Globals.DbType = maria #MariaDB # hosts \ud30c\uc77c\uc5d0 \uc120 \ub4f1\ub85d \ud544\uc694 : 210.181.197.70 nlib-db.nculture.org +# [\ub85c\uceecPC DB\uc124\uc815] +# > create database uac_cltr_db; +# > create user 'uac_cltr' identified by 'uac_cltr'; +# > grant all privileges on uac_cltr_db.* to 'uac_cltr'; +# > flush privileges; Globals.maria.DriverClassName=org.mariadb.jdbc.Driver Globals.maria.Url=jdbc:mariadb://nlib-db.nculture.org:3306/uac_cltr_db Globals.maria.UserName = uac_cltr diff --git a/src/main/resources/egovframework/mapper/config/mapper-config.xml b/src/main/resources/egovframework/mapper/config/mapper-config.xml index 3c484287..17568b6e 100644 --- a/src/main/resources/egovframework/mapper/config/mapper-config.xml +++ b/src/main/resources/egovframework/mapper/config/mapper-config.xml @@ -13,9 +13,6 @@ - - - \ No newline at end of file diff --git a/src/main/resources/egovframework/mapper/nlib/cmm/CMM_CODE_SQL.xml b/src/main/resources/egovframework/mapper/nlib/cmm/CMM_CODE_SQL.xml index b957d4d3..88019a4c 100644 --- a/src/main/resources/egovframework/mapper/nlib/cmm/CMM_CODE_SQL.xml +++ b/src/main/resources/egovframework/mapper/nlib/cmm/CMM_CODE_SQL.xml @@ -1,169 +1,18 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - + SELECT B.S_CODE_ID + , B.S_CODE_NM + FROM SM_CODE_M A, + SM_CODE_S B + WHERE A.L_CODE_ID = #{lCodeId} + AND A.L_CODE_ID = B.L_CODE_ID + AND A.USE_YN = 'Y' + AND B.USE_YN = 'Y' + ORDER BY B.SORT_SEQ - - - INSERT INTO COMTNFILE - (ATCH_FILE_ID, CREAT_DT, USE_AT) - VALUES - ( #{atchFileId}, SYSDATE(), 'Y') - - - - - - INSERT INTO COMTNFILEDETAIL - ( ATCH_FILE_ID, FILE_SN, FILE_STRE_COURS, STRE_FILE_NM, - ORIGNL_FILE_NM, FILE_EXTSN, FILE_SIZE, FILE_CN ) - VALUES - ( #{atchFileId}, #{fileSn}, #{fileStreCours}, #{streFileNm}, - #{orignlFileNm}, #{fileExtsn}, #{fileMg}, #{fileCn} ) - - - - - - DELETE FROM COMTNFILEDETAIL - WHERE - ATCH_FILE_ID = #{atchFileId} - AND - FILE_SN = #{fileSn} - - - - - - - - - - UPDATE COMTNFILE - SET USE_AT = 'N' - WHERE ATCH_FILE_ID = #{atchFileId} - - - - - - - - - \ No newline at end of file diff --git a/src/main/resources/egovframework/spring/context-datasource.xml b/src/main/resources/egovframework/spring/context-datasource.xml new file mode 100644 index 00000000..e5980c10 --- /dev/null +++ b/src/main/resources/egovframework/spring/context-datasource.xml @@ -0,0 +1,38 @@ + + + + + + + classpath:/egovframework/egovProps/globals.properties + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/egovframework/spring/context-mapper.xml b/src/main/resources/egovframework/spring/context-mapper.xml index 7222d888..c38599a1 100644 --- a/src/main/resources/egovframework/spring/context-mapper.xml +++ b/src/main/resources/egovframework/spring/context-mapper.xml @@ -1,6 +1,9 @@ - + @@ -9,17 +12,23 @@ - - classpath:/egovframework/mapper/com/**/*_${Globals.DbType}.xml + classpath:/egovframework/mapper/nlib/**/*.xml - + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 3b82c206..52f9ea21 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -6,10 +6,10 @@ - + - + diff --git a/src/main/webapp/WEB-INF/jsp/nlib/code/listCodes.jsp b/src/main/webapp/WEB-INF/jsp/nlib/code/listCodes.jsp new file mode 100644 index 00000000..382544fc --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/nlib/code/listCodes.jsp @@ -0,0 +1,83 @@ +<% +/** + *
+ * @Class Name : listCodes.jsp
+ * 
+ * @Description : 묻고답하기 목록을 조회한다.
+ * 
+ * 
+ * @프로젝트명: 지방문화원 통합자료관리시스템 구축사업 (2021)
+ *
+ * 
+ * + * @ ------------ -------- --------------------------- + * @ 수정일 수정자 수정내용 + * @ ------------ -------- --------------------------- + * @ 2021. 8. 5. KNKIM 최초 생성 + * + * + * @author 이씨플라자 * DIGITALSHIP KNKIM + * @since 2021. 8. 5. + * @version 1.0 + * + */ + %> +<%@ page language="java" contentType="text/html; charset=UTF-8" %> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> +<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> +<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %> + +공통코드 + + + + +${pageTitle} + + + + + + +

${pageTitle }

+ +메시지 : ${message} + 
+ +
+ + + + + PAGE_SIZE_OPTION + +
+ + + + + + + + + + + + +
코드코드명
+ + + diff --git a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp index 4927b9a9..84732014 100644 --- a/src/main/webapp/WEB-INF/tiles/inc/menu.jsp +++ b/src/main/webapp/WEB-INF/tiles/inc/menu.jsp @@ -26,6 +26,7 @@
  • QR코드
  • 암호화
  • 프로퍼티갱신
  • +
  • 코드조회