반응형 mybatis22 [mybatis] parameter 값 동시 전달 목차 mybatis에 데이터 전달 시 vo의 필드와 vo안의 list 동시 전달 javascript if (confirm("저장하시겠습니까?")) { dlbrList = []; $('#tab3Body tr').each(function() { var rowData = { 'exmnSn': $(this).find('#exmnSnId').val() } dlbrList.push(rowData); }); var paramData = { cmitNo: $("#cmitNoId").val(), mtgMngNo: $("#mtgMngNoId").val(), //vo안의 list명과 일치해야 함 dlbrList: dlbrList }; $.ajax({ url: '/save.do', method: 'POST', data: JS.. IT/development 2024. 3. 31. [mybatis] mybatis data binding (feat. vo) 최근에 알게된 사실인데 mybatis 사용 시 select하는 컬럼명과 vo 필드가 서로 카멜케이스, 스네이크케이스로 일치할 경우 자동으로 vo에 바인딩 하기 때문에 as를 따로 주지않아도 된다.--예시 쿼리SELECT USER_NAME FROM users--예시 VO@Datapublic class User { //이렇게 컬럼명의 카멜케이스로 된 경우는 자동 바인딩됨 private String userName; }이걸 몰라서 그동안 아래처럼 컬럼마다 전부 AS를 달았었다..이제부터 생략해야지SELECT user_name as userName , user_id as userId , user_email as userEmail --.... FROM USERS 혹 컬럼명과 vo.. IT/development 2024. 3. 17. [mybatis] 동적 쿼리 집계 쿼리 예시 조회구분에 따라 년 또는 월로 그룹핑해서 집계를 구하는 예시 SELECT DATE_FORMAT(FRST_REG_DT, '%Y') || '년' AS searchMon/*년*/ DATE_FORMAT(FRST_REG_DT, '%M') AS searchMon/* 월 */ DATE_FORMAT(FRST_REG_DT, '%M') AS searchMon/* 월 */ , COUNT(code) AS searchTotalCnt , COUNT(CASE WHEN code = '10' THEN 1 END) AS searchPassedCnt , COUNT(CASE WHEN code = '20' THEN 1 END) AS searchRejectedCnt FROM TEST_BOARD TO_CHAR(FRST_REG_DT, 'YYYY-.. IT/development 2024. 2. 25. [mybatis] list foreach delete 목차 화면에서 체크박스에 체크된 데이터 중 회원번호를 담아서 서버로 전달, delete query에서 IN절로 처리 view function deleteData() { if (confirm("삭제 하시겠습니까?")) { //선택된 row 배열 var selectedRows = []; //table의 td제일 앞에 checkbox란 id를 가진 엘리먼트에서 회원번호 가져옴 $("input[id='checkbox']:checked").each(function () { var rowData = { 'num': $(this).closest('tr').find('#num').text(), //회원번호 } selectedRows.push(rowData); }); $.ajax({ url: '/info/delete.d.. IT/development 2024. 1. 21. [mybatis] dynamic query template 나중에 내가 사용하기 위해 동적 쿼리 template을 기록한다. AND B.CODE IS NULL AND B.CODE IS NOT NULL AND C.CODE = 'A' AND C.CODE = 'D' AND C.CODE = 'P' AND B.CODE = #{entrprsSeCd} AND A.MBTLNUM LIKE '%' || #{mbtlnum} || '%' AND A.MBER_NM LIKE '%' || #{mberNm} || '%' 위 동적쿼리는 이렇게 작동한다. 를 통해 넘어온 parameter의 조건 일치여부에 따라 AND절을 동적으로 추가 또는 생성 예를 들면 다음과 같다. 1. mberGubun값만 'GNR'인 경우(일반회원만) //SELECT 절 생략 WHERE B.CODE IS NULL(원래.. IT/development 2023. 12. 24. [mybatis] update 동적 쿼리(feat. <set></set>) /* 게시글 수정 */ UPDATE BOARD_INFO TITLE = #{title} , CONTENT = #{content} , MOD_DATE = SYSDATE WHERE BOARD_SNO = #{boardSno} 테스트 IT/development 2023. 6. 24. [springBoot/thymeleaf] ajax 페이지네이션 sample(feat. study용) 목차 ddl(Oracle) /* 게시판 */ CREATE TABLE "BOARD_INFO" ("BOARD_NO" NUMBER NOT NULL ENABLE, "TITLE" VARCHAR2(50) NOT NULL ENABLE, "CONTENT" VARCHAR2(4000) NOT NULL ENABLE, "USER_ID" VARCHAR2(20) NOT NULL ENABLE, "USE_YN" CHAR(1) DEFAULT 'Y' NOT NULL ENABLE, "REG_DATE" DATE DEFAULT SYSDATE NOT NULL ENABLE, "MOD_DATE" DATE, CONSTRAINT "BOARD_INFO_PK" PRIMARY KEY ("BOARD_NO") ); COMMENT ON COLUMN BOARD_.. IT/development 2023. 6. 4. [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. [mybatis] selectkey값 return(Oracle) SELECT BOARD_NO_SEQ.NEXTVAL FROM DUAL /* 게시글 작성 */ INSERT INTO BOARD ( BOARD_NO , TITLE , CONTENT , WRITER , CREATE_DATE ) VALUES ( #{boardNo} , #{title} , #{content} , #{writer} , SYSDATE ) /* 게시글 등록(mapper interface) */ void insertBoard(BoardVo boardVo); /** * 게시글 등록(service) * @param boardVo * @throws Exception */ public void regBoard(BoardVo boardVo) throws Exception{ boardMapper.insertBoard.. IT/development 2023. 5. 6. [mybatis] 검색(Oracle) /* 게시글 목록 조회 */ SELECT ROWNUM AS no , T1.boardNo , T1.title , T1.content , T1.writer , T1.createDate , T1.updateDate FROM (SELECT BOARD_NO AS boardNo , TITLE AS title , CONTENT AS content , WRITER AS writer , TO_CHAR(CREATE_DATE, 'YYYY-MM-DD') AS createDate , TO_CHAR(UPDATE_DATE, 'YYYY-MM-DD') AS updateDate FROM BOARD WHERE 1=1 AND USE_YN = 'Y' ORDER BY CREATE_DATE DESC )T1 WHERE 1=1 AND TITLE L.. IT/development 2023. 5. 6. [spring/mybatis] Rest API 계층구조(1:N) 객체 조회(feat .쉬운 예제) 목차 역시나 미래의 나를 위해 기록한다. 계층구조 조회가 처음 접하고 익숙해지기 전까지는 좀 어렵다.(물론 지금도 쉬운 건 아니다.) 모든 일이 익숙해지면 아무것도 아닌 게 그전까지는 어려운 법이다. Rest API 계층구조 조회 간단 예시다. 사용자(UserDto) 객체가 도서 객체(BookDto)를 list로 가지고 있는 구조다. 회원과 도서의 관계를 1:N으로 매핑했고 회원이 부모고 책이 자식이다. 아래처럼 한명의 회원이 여러개의 책을 대출할 수 있는 조건 그래서 회원 객체는 도서 객체를 list로 가지고 있어야 한다. 아래 DB 테이블을 보면 회원번호 1번인 천둥의 신 토르가 열혈강호 1권~5권까지 가지고 있다. API니까 당연히 클라이언트에 전달할 객체인 dto와 db 조작시 사용할 객체인 vo.. IT/development 2022. 12. 25. [mybatis] mybatis multi update(다중 업데이트) 목차 다중 업데이트를 하는 방법 중 mybatis에서 지원하는 multi update를 이용한 방법을 기록한다. application.properteis #allowMultiQueries=true mybatis multi update 사용하기 위해선 이걸 꼭 넣어야 한다. spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3307/test?characterEncoding=UTF-8&allowMultiQueries=true spring.datasource.username=test spring.datasource.password=1234 mapper xml UPDATE tb_common_code SET code_id = #{item.codeId} ,code_.. IT/development 2022. 12. 16. 이전 1 2 다음 반응형