IT/development212 [mybatis] mybatis oracle merge into mapper.xml SELECT BOARD_SNO_SEQ.NEXTVAL AS boardSno FROM DUAL /* ๊ฒ์๊ธ ๋ฑ๋ก/์์ */ MERGE INTO BOARD_INFO A /* ๋น๊ต ์กฐ๊ฑด(boardSno๊ฐ ๊ฐ์์ง ๋น๊ต) */ USING DUAL ON(A.BOARD_SNO = #{boardSno}) WHEN MATCHED THEN /* update(boardSno๊ฐ ์ผ์นํ๋ฉด update) */ UPDATE TITLE = #{title} , CONTENT = #{content} , MOD_DATE = SYSDATE WHERE BOARD_SNO = #{boardSno} /* insert(boardSno๊ฐ ๋ถ์ผ์น ํ ๊ฒฝ์ฐ insert) */ WHEN NOT MATCHED THEN INSERT ( BO.. IT/development 2023. 6. 3. [spring] springBoot ajax json๊ณผ file ์ ์ก controller /** * ๊ฒ์๊ธ ๋ฑ๋ก ์ฒ๋ฆฌ(๋น๋๊ธฐ) * @param boardVo * @param files * @return */ @PostMapping(value = "/regAjax") @ResponseBody public Integer regAjax(@RequestPart(value = "boardVo") BoardVo boardVo, @RequestPart(value = "files", required = false) List files, HttpSession session) throws IOException, Exception { //ํ ์คํธ๋๊น try catch๋ก ์์ธ์ฒ๋ฆฌ ํ์ง ์๊ณ ๊ทธ๋ฅ throws๋ก ๋์ก๋ค. UserVo userInfo = getUserSessionInfo(sessio.. IT/development 2023. 6. 3. [thymeleaf] thymeleaf javascript๋ก ๋ณ์ 1๊ฐ ์ด์ ์ ๋ฌ ... //์์ธ ํ์ (2๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์) function annualViewPop(id, sno) { const width = 750; const height = 600; const left = (window.innerWidth - width) / 2; const top = (window.innerHeight - height) / 2; const popWindow = window.open("/viewPop?empId=" + id + "&annualSno=" + sno, "viewPop", "width=" + width + ", height=" + height + ", left=" + left + ", top=" + top); } ์๋๊ฐ ํต์ฌ th:onclick="ViewPop([[${list.emp.. IT/development 2023. 5. 30. [springBoot] ๊ณตํด์ผ ์กฐํ API Open API ์ด์ฉ service package kr.test.dev.Service.api; import kr.test.dev.Service.annual.AnnualService; import kr.test.dev.Vo.HolidayItemVo; import kr.test.dev.Vo.HolidayResponseVo; import kr.test.dev.Vo.HolidayVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.st.. IT/development 2023. 5. 15. [logback] log pattern ์ค์ ${LOG_PATTERN} ${LOG_PATTERN} ๊ฒฐ๊ณผ๊ฐ IT/development 2023. 5. 14. [thymeleaf] if unless ์กฐ๊ฑด ์ญ์ ๋ฐ์ดํฐ๊ฐ ์๋ค. โป ์ฝ์ง์ ์ข ํ๋๋ฐ th:if์ ์กฐ๊ฑด๊ณผ th:unless์ ์กฐ๊ฑด์ ๋์ผํ๊ฒ ์ ์ด์ผ ํ๋ค. IT/development 2023. 5. 13. [logback] logback ํ์ผ ์์ฑ [%d{yyyy-MM-dd HH:mm:ss.SSS}] %-3level [%logger{0}:%line] : %msg %n [%d{yyyy-MM-dd HH:mm:ss.SSS}] %-3level [%logger{0}:%line] SQL : %n%msg %n ${LOG_DIR}/${LOG_FILE_NAME}.log [%d{yyyy-MM-dd HH:mm:ss.SSS}] %-3level [%logger{0}:%line] : %msg %n IT/development 2023. 5. 13. [springBoot] springBoot Interceptor ๋ก๊ทธ์ธ ์ฒดํฌ LoginInterceptor package study.thboard2.common.interceptor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @Slf4j //๋ก๊ทธ์ธ ์ธํฐ์ ํฐ public class LoginInterceptor implements HandlerInterceptor { //์๋์ฒ๋ผ ์์กด์ฑ ์ฃผ์ ํ๋ ค๋ฉด config์์ @Bean์ผ๋ก.. IT/development 2023. 5. 13. [springBoot] spring boot jarํ์ผ ๋ฐฐํฌ ์ฝ์ง(feat. ๋ฆฌ๋ ์ค) ์คํ๋ง๋ถํธ์์ jarํ์ผ ์คํ ์ ์ต์ ์ผ๋ก profile๋ฑ์ ์ค์ ํ ์ ์๋๋ฐ ์ด๊ฒ ๋๋ฌธ์ ์ดํ์ ์ฝ์งํด์ ๋ฉ๋ชจํจ ์๋ฒ์์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์๋์ ๊ฐ์ด ์์ฑ(์ต์ ์ ๋ณ์ํ), ์คํ ์ ๊ณ์ profile์ ์ฐพ์ง ๋ชปํ์๋ค. #์ด์ ๋ช ๋ น์ด๋๋ก ํ๋ฉด ๊ณ์ ์๋๋ค. java -jar -์ต์ -์ต์ .. deploy.jar ์์๊ฐ ์ด๋ฐ์์ด ๋์ด์ผ ๋๋ค. #์ด์ ๋ช ๋ น์ด๋ java -jar deploy.jar -์ต์ -์ต์ ์ด ์์๋๊น ๊ณ์ ์๋๋ ๊ฑฐ์๋ค. ๋ค์์ ์ ๋ ๊ฐ์ ์ค์ํ์ง ๋ง์ IT/development 2023. 5. 13. [springBoot] ์ธ์ ์ธ์ฆ ๋ก๊ทธ์ธ/๋ก๊ทธ์์ table CREATE TABLE USER_INFO" ("USER_NO" NUMBER(10,0) NOT NULL ENABLE, "ID" VARCHAR2(20) NOT NULL ENABLE, "PASSWORD" VARCHAR2(50) NOT NULL ENABLE, "NAME" VARCHAR2(20) NOT NULL ENABLE, "EMAIL" VARCHAR2(50) NOT NULL ENABLE, "CREATE_DATE" DATE NOT NULL ENABLE, "UPDATE_DATE" DATE DEFAULT SYSDATE, CONSTRAINT "USER_PK" PRIMARY KEY ("USER_NO", "ID") ); COMMENT ON COLUMN USER_INFO.USER_NO IS '์ฌ์ฉ์ ์๋ฒ(์ํ์ค.. IT/development 2023. 5. 8. ์ด์ 1 ยทยทยท 8 9 10 11 12 13 14 ยทยทยท 22 ๋ค์