Programming Project ์ž‘์—…์‹ค/๋‚ด์šฉ ์ •๋ฆฌ

[BackEnd][Maven-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ : ๋‹ต๋ณ€ ๋“ฑ๋ก / ์ˆ˜์ •

์ฃผ๋‹ˆ์“ฐ๐Ÿง‘‍๐Ÿ’ป 2022. 3. 22. 22:10
728x90
๋ฐ˜์‘ํ˜•

 

 

๐Ÿง‘๐Ÿป‍๐Ÿ’ป Git Hub ์ฃผ์†Œ

 

 

๐Ÿ—‚ ๋ชฉ์ฐจ

โ— [BackEnd][Maven-PJ] ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ๊ธ€ ๋“ฑ๋ก(์ž‘์„ฑ) / ์ˆ˜์ •

โ— [BackEnd][Maven-PJ] ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ๋ชฉ๋ก ์กฐํšŒ

โ— [BackEnd][Maven-PJ]๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ์ƒ์„ธ ์กฐํšŒ

โ— [BackEnd][Maven-PJ]๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : ์‚ญ์ œ

โ— [BackEnd][Maven-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ : ๋‹ต๋ณ€ ๋“ฑ๋ก / ์ˆ˜์ •

โ— [BackEnd][Maven-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ : ๋‹ต๋ณ€ ์‚ญ์ œ

 

๐Ÿ‘จ‍๐Ÿ‘ฉ‍๐Ÿ‘ง‍๐Ÿ‘ฆ ํšŒ์› ๊ด€๋ จ

โ— [BackEnd][Maven-PJ] ์‚ฌ๋‚ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ํšŒ์› ๊ด€๋ จ : ํšŒ์› ๊ฐ€์ž…

 

 

๐Ÿ“š๋ถ€ ๋ก 

โ— [BackEnd][Maven-PJ]๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์„œ๋น„์Šค - ๊ฒŒ์‹œํŒ ๋งŒ๋“ค๊ธฐ : Paging์ฒ˜๋ฆฌ

 

๐Ÿค” ๋‚ด๊ฐ€ ๋งŒ๋‚œ Exception

โ— [Exception ์ •๋ฆฌ] org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

โ— [Vue.js][Spring] Post Data ์ „์†ก ๊ฐ„ null๊ฐ’ ์ „์†ก ๋ฌธ์ œ

โ€‹

 

 

 

 

 

 

๐Ÿš€ ๋‹ต๋ณ€ ๋งŒ๋“ค๊ธฐ - ๋“ฑ๋ก / ์ˆ˜์ •

    ๐Ÿ”ฝ  Source Code

        ๐Ÿ“ฆ DevInquryReplyVO.java

DevInquryReplyVO.java

์ด VO๋Š” ๊ฒŒ์‹œํŒ VO์—์„œ ๊ผญ ํ•„์š”ํ•œ ์ผ๋ถ€๋งŒ ๋”ฐ๋กœ ์ •์˜๋ฅผ ํ•ด ๋‘” ๊ฒƒ์ด์—์š”.
์“ธ๋ฐ์—†์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์ •์˜ ํ•ด ๋†“์œผ๋ฉด Front End์™€ Data๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ, ๋ณด์•ˆ ์ทจ์•ฝ์ ์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๊ณ , ์„ฑ๋Šฅ Issue๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

 

    ๐Ÿ”ฝ  Code ๋ถ„์„

        ๐Ÿ“ฆ DevInquryReplyController.java

DevInquryReplyController.java

28๋ฒˆ์งธ ์ค„์—๋Š” ๋‘ ๊ฐœ์˜ Annotion์„ ์„ ์–ธ์„ ํ–ˆ๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ `RequiredArgsConstuctor`๋Š” fina๋กœ ์ง€์ •๋œ Member ๋ณ€์ˆ˜์— ์ƒ์„ฑ์ž๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , DIํ•ด ์ฃผ๋Š” Annotaion์ธ ๊ฒƒ์ด์—์š”.

๋‘๋ฒˆ์งธ `Sl4j`๋Š” Console์ฐฝ์— Log๋ฅผ ์ฐ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, `System.out.println()`์˜ ๊ฒฝ์šฐ ์„ฑ๋Šฅ๋ฉด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๋‹จ์ ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ Application ๊ฐœ๋ฐœ ์‹œ์—๋Š” ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์—์š”.

29 ~ 30๋ฒˆ์งธ ์ค„์— ์žˆ๋Š” Annotaion์€ Swagger์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ด๊ฑด ์ฐจํ›„ ๋”ฐ๋กœ ์ •๋ฆฌ๋ฅผ ํ•˜๋„๋ก ํ•  ๊ฒƒ์ด์—์š”.

๊ทธ๋ฆฌ๊ณ , 31๋ฒˆ์งธ ์ค„์— `RestController`๋ผ๋Š” Annotion์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด์—์š”.

 

 

DevInquryReplyController.java - ๊ธ€ ๋“ฑ๋ก / ์ˆ˜์ • API

43๋ฒˆ์งธ ์ค„์— ๋จผ์ € Map์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ๋Š”๋ฐ, Key๋Š” ๋ฌธ์ž์—ด๋กœ ๋ฐ›๊ณ , ๊ฐ’์€ ๊ฐ์ฒด(Object)๋กœ ๋ฐ›๋„๋ก ํ•˜๋Š” result๋ผ๋Š” Map์„ ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”. ์ด๊ฒƒ์„ ๋งŒ๋“œ๋Š” ์ด์œ ๋Š” 53๋ฒˆ์งธ ์ค„์„ ๋ณด์‹œ๋ฉด ์•„์‹œ๊ฒ ์ง€๋งŒ, ๊ฒฐ๊ณผ๊ฐ’์„ Returnํ•  ๋•Œ, ๋‹ด๊ณ ์ž ํ•˜๋Š” ๋‚ด์šฉ์„ ๋‹ด๊ธฐ ์œ„ํ•จ์ด์—์š”.

๊ทธ๋ž˜์„œ ํ•ด๋‹น Method์— ๋ฐ˜ํ™˜ Type์„ Object๋กœ ํ•ด ์ค€ ๊ฒƒ์ด์—์š”.

์ด ์นœ๊ตฌํ•œํ…Œ๋Š” Front End๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ์–ด๋–ค ๊ฒŒ์‹œ๊ธ€์— ๋‹ต๋ณ€์ธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ๊ฒŒ์‹œ๊ธ€ ์ผ๋ จ๋ฒˆํ˜ธ(inqrySn)์™€ ๋‹ต๋ณ€ ์—ฌ๋ถ€(answerAt), ๊ทธ๋ฆฌ๊ณ , ์ œ์ผ ์ค‘์š”ํ•œ ๋‹ต๋ณ€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋“ค์–ด๊ฐˆ ๋‹ต๋ณ€ ๋‚ด์šฉ(answerCn), ๊ทธ๋ฆฌ๊ณ , ๋‹ต๋ณ€์„ ๋ˆ„๊ฐ€ ์ ์—ˆ๋Š”์ง€๋ฅผ ํ‘œ์‹œํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด ๋‹ต๋ณ€ ์ž‘์„ฑ์ž(answerUserSn)๊ณผ ์–ธ์ œ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•œ ๋‹ต๋ณ€ ์ž‘์„ฑ์ผ(answerDt)๋ฅผ ๋ฐ›๋Š” DevInquryReplyVO ๊ฐ์ฒด๋ฅผ ๋ฐ›์„ ๊ฒƒ์ด์—์š”.

 

Controller์˜ ํ•˜๋Š” ์ผ์€ ๋‹จ์ˆœํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”. Route ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” Service์— ๋ณธ๊ฒฉ์ ์ธ ์—…๋ฌด ์ฒ˜๋ฆฌ๋ฅผ ๋งก๊ธธ ๊ฒƒ์ด์—์š”.

์˜ค! ์•ˆ ๊ทธ๋ž˜๋„ 49๋ฒˆ์งธ ์ค„์— `devInquryReplyService.devInquryReplyRegist();`๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ devInquryReplyVO ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋Ÿผ Service๋ฅผ ๋งŒ๋‚˜๋Ÿฌ ๊ฐ€๋ด์•ผ๊ฒ ์–ด์š”!

 

 

        ๐Ÿ“ฆ DevInquryReplyService.java

devInquryReplyRegist()

์œ„์˜ Code๋Š” Interface๋กœ ๊ตฌํ˜„์ด ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด์—์š”. Service๋ฅผ Interface์™€ ๊ตฌํ˜„์ฒด(Implement)๋กœ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š” ๊ฐ์ฒด ์˜์กด ๊ด€๊ณ„ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

 

์ด ๊ณณ์—์„œ๋Š” ์ถ”์ƒ Method๋งŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด๋ž๋‹ˆ๋‹ค.

 

 

        ๐Ÿ“ฆ DevInquryReplyServiceImpl.java

DevInquryReplyServiceImpl.java

 

์ด ๊ณณ์—์„œ๋Š” @Transational๋„ ๋ณด์ด๊ณ , @Service๋„ ๋ณด์ด๋„ค์š”.

๊ทธ๋ฆฌ๊ณ , DevInquryReplyMapper๋ผ๋Š” final Member ๋ณ€์ˆ˜๋ฅผ DIํ•˜๊ธฐ ์œ„ํ•ด @RequiredArgsConstructor๋„ ์ด์šฉํ•œ ๊ฒƒ์ด์—์š”.

 

   /**
     * ๊ฒŒ์‹œ๊ธ€ ๋“ฑ๋ก
     * @param devInquryReplyVO ๋‹ต๊ธ€ ๋“ฑ๋ก ์‹œ ๋‚ด์šฉ์„ ๋‹ด์€ Value Object
     */

    @Override
    public Object devInquryReplyRegist(DevInquryReplyVO devInquryReplyVO) {

        log.info("DevInquryReplyService๋ฅผ ๊ตฌํ˜„ํ•œ DevInquryReplyServiceImpl์˜ devInquryReplyRegist(DevInquryReplyVO devInquryReplyVO)๊ฐ€ ํ˜ธ์ถœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!");

        Map<String, Object> result = new HashMap<>();

        try {
            log.info("๋‹ต๋ณ€ ๋‚ด์šฉ์ด NULL์ด ์•„๋‹Œ์ง€ ํ™•์ธ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

            if (devInquryReplyVO.getAnswerCn() == null || Objects.equals(devInquryReplyVO.getAnswerDt(), "")) {

                log.info("๋‹ต๋ณ€ ๋‚ด์šฉ์ด NULL ์ž…๋‹ˆ๋‹ค!");

                result.put("code", 400);
                result.put("message", "Bad Request / ๋‹ต๋ณ€ ๋‚ด์šฉ์ด NULL ์ž…๋‹ˆ๋‹ค.");

                log.info("400 Code์™€ ํ•จ๊ป˜ \"Bad Request / ๋‹ต๋ณ€ ๋‚ด์šฉ์ด NULL ์ž…๋‹ˆ๋‹ค.\" ๋ฐ˜ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

                return result;
            } // if (devInquryReplyVO.getAnswerCn() == null || Objects.equals(devInquryReplyVO.getAnswerDt(), "")) ๋

            log.info("๋‹ต๋ณ€ ๋‚ด์šฉ ๋“ฑ๋ก์„ ์œ„ํ•ด ์ตœ์ดˆ ๋‹ต๋ณ€ ์—ฌ๋ถ€(answerAt)์„ true๋กœ ๋ณ€๊ฒฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");

//            devInquryReplyVO.setAnswerAt("Y");

            // TODO - ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ๋กœ์ง ๊ตฌํ˜„ ๋’ค ์•„๋ž˜ ํ•˜๋“œ์ฝ”๋”ฉ ์ˆ˜์ • ํ•„์š”
            log.info("๋‹ต๊ธ€ ์ž‘์„ฑ์ž์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ VO์— ์ž…๋ ฅํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");
            devInquryReplyVO.setAnswerUserSn(1);

            log.info("devInquryReplyMapper์˜ devInquryReplyRegist(devInquryReplyVO)๋ฅผ ํ˜ธ์ถœ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!");
            devInquryReplyMapper.devInquryReplyRegist(devInquryReplyVO);

            result.put("code", 201);
            result.put("message", "๋‹ต๊ธ€ ๋“ฑ๋ก ์„ฑ๊ณต!");
            result.put("resultSn", devInquryReplyVO.getInqrySn());

            return result;

        } catch (Exception e) {

            log.warn("๋‹ต๊ธ€ ๋“ฑ๋ก ์ค‘ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ Catch์ ˆ์ด ๋™์ž‘ํ•˜์˜€์Šต๋‹ˆ๋‹ค!");

            e.printStackTrace();

            log.warn(e.getMessage());

            result.put("code", 500);

            return result;
        } // try-catch ๋
    } // devInquryReplyRegist(DevInquryReplyVO devInquryReplyVO) ๋
๋ฐ˜์‘ํ˜•

 

์‹ค์งˆ์ ์œผ๋กœ ์ด ๊ณณ์—์„œ ํ•„์š”ํ•œ Logic์„ ์ฒ˜๋ฆฌํ•˜๊ณ , DB์— ๋ณด๋‚ผ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด์„œ Mapper๋ฅผ ํ†ตํ•ด MyBatis๋กœ DB์— Query๋ฅผ ๋‚ ๋ ค์ฃผ๊ณ , ๊ทธ ๋ฐ˜ํ™˜๊ฐ’์„ ๊ฐ€๊ณตํ•ด์„œ ์ „๋‹ฌ ํ•ด ์ฃผ๋Š” ๊ณณ์ด์—์š”.

 

devInquryReplyRegist() - 45 ~ 75

๋จผ์ € try ๋ฌธ ๋ถ€ํ„ฐ ๋ถ„์„ํ•ด ๋ณด๋„๋ก ํ•  ๊ฒƒ์ด์—์š”.

48๋ฒˆ์งธ ์ค„์— ๋‹ต๋ณ€ ๋‚ด์šฉ(answerCn)์ด null์ด๊ฑฐ๋‚˜, ๊ณต๋ฐฑ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด์—์š”.

๋งŒ์•ฝ Null์ด๋ผ๋ฉด ๊ตณ์ด DB๋ฅผ ์ด์šฉํ•  ํ•„์š”๊ฐ€ ์—†๊ณ , ๋‹ต๋ณ€์„ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋‹ˆ 400 Error (Bad Request)๋ฅผ ํ†ตํ•ด Client์—๊ฒŒ '์ž˜๋ชป๋œ ์š”์ฒญ์„ ์ฃผ์…จ์Šต๋‹ˆ๋‹ค!' ๋ผ๊ณ  ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด 52, 53๋ฒˆ์งธ ์ค„์— ์ž‘์—…์„ ํ•œ ๊ฒƒ์ด๊ณ , ๊ทธ ๋‚ด์šฉ์„ ๋‹ด์€ result Map์„ ๋ฐ˜ํ™˜ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”.

Null์ด ์•„๋‹ˆ๋ผ๋ฉด 66๋ฒˆ์งธ ์ค„์— ํ˜„์žฌ ํšŒ์› ๊ด€๋ จ Logic์ด ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ, ์ž„์‹œ๋กœ ๋‹ต๋ณ€ ์ž‘์„ฑ์ž ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด setter๋ฅผ ์ด์šฉํ•ด์„œ ์ด์šฉ์ž ์ •๋ณด๋ฅผ ๋„ฃ์–ด์ฃผ๊ณ , 69๋ฒˆ์งธ ์ค„์— ๋ณธ๊ฒฉ์ ์œผ๋กœ Mapper์— ํ•ด๋‹น Method๋ฅผ ๋ถˆ๋Ÿฌ VO ๊ฐ์ฒด๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด์„œ DB ์ฒ˜๋ฆฌ๋ฅผ ๋ถ€ํƒํ•˜๋Š” ๊ฒƒ์ด์—์š”.

์ •์ƒ์ ์œผ๋กœ ๋“ฑ๋ก์ด ๋˜์—ˆ๋‹ค๋ฉด HTTP Status Code 201(Create)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด์šฉ์„ ๋„ฃ์–ด์ฃผ๊ณ , ๋‹ต๋ณ€์ด ๋‹ฌ๋ฆฐ ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ ๋ฒˆํ˜ธ๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ ํ•ด ์ฃผ๊ธฐ ์œ„ํ•ด result์— ๋‹ด๊ณ , 75๋ฒˆ์งธ ์ค„์— ๋ฐ˜ํ™˜์„ ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

        ๐Ÿ“ฆ DevInquryReplyMapper.java

DevInquryReplyMapper.java - devInquryReplyRegist()

 

@Mapper๋ฅผ ํ†ตํ•ด์„œ ์ด Class๊ณผ ์—ฐ๊ฒฐ๋  ๊ตฌํ˜„ xml File๊ณผ ์—ฐ๊ฒฐ์„ ํ•ด ์ค„ ๊ฒƒ์ด๊ณ , @Repository๋ฅผ ์ด์šฉํ•ด์„œ ํ•ด๋‹น Interface๊ฐ€ Repository์ด๋ผ๊ณ  ์•Œ๋ ค์ฃผ๋ฉด์„œ DI๋ฅผ Spring์—๊ฒŒ ๋งก๊ธธ ๊ฒƒ์ด์—์š”.

 

 

 

 

        ๐Ÿ“ฆ ReplyMapper.xml

ReplyMapper.xml - 1 ~ 14

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ DB์—๊ฒŒ ๋‚ ๋ ค์ค€ Query๋ฅผ ์ž‘์„ฑํ•˜๋Š” Mapper.xml์„ ๋งŒ๋‚˜๋Ÿฌ ์˜จ ๊ฒƒ์ด์—์š”.

3๋ฒˆ์งธ ์ค„์„ ๋ณด๋ฉด ์ด Mapper Interface๋ฅผ Mapping ํ•ด ๋‹ฌ๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋กœ ์ž…๋ ฅ์„ ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

Table ์ •๊ทœํ™”๋Š” ์ฐจ ํ›„ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 6๋ฒˆ์งธ ์ค„์€ ๋ฌด์‹œํ•˜์…”๋„ ์ข‹์€ ๊ฒƒ์ด์—์š”.๐Ÿ˜…

 

์—ฌ๋Ÿฌ๋ถ„์€ ์ง€๊ธˆ ๋‹ต๋ณ€ ๋“ฑ๋ก์ด๋ผ๋Š” ๋‚ด์šฉ์— ๋Œ€ํ•ด ๋ณด๊ณ  ๊ณ„์‹œ๋Š”๋ฐ, SQL ๋‚ด์šฉ์„ ๋ณด๋ฉด Update๋ฅผ ๋‚ ๋ฆฌ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”. ์ฃผ๋‹ˆํ•˜๋ž‘์ด ์ •๊ทœํ™” ๋ถˆ๋Ÿ‰์ด๋ผ๊ณ  ํ•˜๋Š” ์ด์œ ๊ฐ€ ๋ฐ”๋กœ ์ด๊ฒƒ์ธ๋ฐ,

 

tb_com_inqry

์ด Table์ด Q&A ๊ฒŒ์‹œํŒ๊ณผ ๋‹ต๋ณ€์ด ๋ชจ๋‘ ์ด์šฉํ•˜๋Š” Table์ธ ๊ฒƒ์ด์—์š”.

create๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์€ ๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ(INQRY_SJ), ๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ(INQRY_CN)๋“ฑ์ด Not Null์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ต๋ณ€์„ create๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด Not Null ์ •์ฑ…์— ์˜ํ•ด DB์— INSEART๋ฅผ ํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด์—์š”.

๊ทธ๋ž˜์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด์ฉ” ์ˆ˜ ์—†์ด UPDATE๋ฅผ ์ด์šฉํ•œ ๊ฒƒ์ด๋ž๋‹ˆ๋‹ค. 

๋˜ํ•œ ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ธํ•ด ๋“ฑ๋ก๊ณผ ์ˆ˜์ •์ด ํ•จ๊ป˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

์œ„์— SQL ๋ฌธ์„ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ฒŒ์‹œ๊ธ€ ์ผ๋ จ๋ฒˆํ˜ธ(inqrySn)์— ํ•ด๋‹นํ•˜๋Š” ์ปฌ๋Ÿผ์— ๋‹ต๋ณ€ ์—ฌ๋ถ€(ANSWER_AT)์„ "Y"๋กœ ๋„ฃ์–ด์ฃผ๊ณ , ๋‹ต๋ณ€ ๋‚ด์šฉ(InqryCn), ๋‹ต๊ธ€ ์ž‘์„ฑ์ž ์ผ๋ จ๋ฒˆํ˜ธ(answerUserSn)๋ฅผ ์ž…๋ ฅ ํ•ด ์ฃผ๊ณ , ์ž‘์„ฑ์ผ์„ SQL now()๋ฅผ ์ด์šฉํ•ด์„œ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

    ๐Ÿ”ฝ  ๊ฒฐ๊ณผ ํ™”๋ฉด

POSTMAN TEST

 

 

DB ํ™•์ธ ๊ฒฐ๊ณผ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•