@Param 하나의 객체와 일반 타입 변수 스프링에서 마이바티스를 활용하여 파라미터 두 개를 넘겨줄때 @Param을 이용합니다. 다음 두 가지 경우가 있습니다. 1. 일반 타입 변수 1개 또는 여러 개 public void updateReplyCnt(@Param("bno") Long bno,@Param("amount") int amount); 이렇게 @Param으로 넘겨주고 mapper.xml에서는 이를 사용할 때 update jeongchan_board set replyCnt = replyCnt +#{amount} where bno = #{bno} 1개일 때도 마찬가지입니다. 즉 bno, amount 명을 그대로 쓰면 됩니다. 2. 객체 1개와 일반 타입 변수 여러개 만약에 객체 한 개만 넘겨준다면 예를 들어서 UserVO를 넘겨준다면 해당 명.. 데이터베이스/마이바티스 6년 전
ORA-00972: identifier is too long 이 문제는 개체 명이 길기 때문에 발생한다. 즉 테이블 명의 길이를 확인한다. 테이블 명이 너무 길 때 발생하기 때문에 제약조건 조차 걸리지가 않는다. 주의해야한다. 데이터베이스 6년 전
ORACLE- select level 흔히 메뉴의 하위메뉴를 구성할 때 악세서리(Super Category) - 목걸이,팔찌,벨트,반지(Sub category) 상의(Super Category)- NONE(Sub category) 하의(Super Category) - NONE(Sub category) 신발(Super Category) - NONE(Sub category) 최상위 메뉴를 level 1 하위 메뉴를 level2 .....level n으로 구성합니다. 그러기 위해서는 우선 테이블을 구성할 때 필드 중에 자기 참조 필드가 있어야합니다. 예를 들어 최상위 메뉴의 코드 값이 100이면 하위 메뉴의 부모(상위 메뉴) 코드 값은 100이 되어야합니다. 즉 하나의 테이블 내에서 하위 메뉴 코드 값을 외래키로 하여 상위 메뉴 코드를 참조합니다.. 데이터베이스 6년 전
Oracle 순위 뽑기 만약 추천 수가 높은 3인을 뽑거나 순위를 매기거나 할 필요가 생길겁니다. 그때는 RANK()함수나 ROW_NUMBER()를 사용하면 됩니다. 현재 user라는 테이블 내 user_name과 user_like(좋아요 수)가 있다면 이를 RANK()함수를 이용하여 뽑아내려면 쿼리는 select user_like,RANK() OVER(order by user_like desc) from jeongchan_user; 위와 같습니다. 즉 RANK()는 OVER가 뒤따라 붙는데 OVER안에 무엇을 랭크로 삼을 지 정렬 기준을 적어줍니다. order by user_like desc는 좋아요 수를 기준으로 삼는데 내림차순으로 해서 순위를 매겨라라는 뜻입니다. 이렇게 되면 출력 결과는 1 3 4 6이 나온 것을 볼 수.. 데이터베이스 6년 전
마이바티스 결과 매핑(결과매핑 or 생성자) 마이바티스 결과 매핑 1) 조회 결과를 자바 객체에 설정(결과 매핑) 보통 데이터베이스를 사용할 경우 조회 후 결과를 객체에 담아 사용합니다. 결과를 화면에 노출 시킬 때는 JSP파일을 이용합니다. 그에 대응하는 모델 클래스가 존재하거나 여러 개 테이블 대상으로 데이터를 가져오고 한꺼번에 여러 개 모델 클래스에 값을 설정하는 다양한 상황이 존재합니다. 이를 처리하기 위해서 마이바티스는 결과 매핑(Result Mapping)이라는 테크닉을 사용합니다. 부가적으로 mapUnderscoreToCamelCase설정도 함께 사용하게 됩니다. 칼럼명과 일치하지 않거나 별도로 값을 설정하는 규칙을 정의해야하만 정확히 값을 설정할 수 있습니다. 먼저 결과 매핑을 위한 XML 엘리먼트는 아래와 같습니다. resultMa.. 데이터베이스/마이바티스 6년 전
마이바티스 활용 마이바티스 활용 1) 흐름 마이바티스를 앞서 설명 드렸듯이 흐름을 살펴봅시다. 한 개의 댓글 데이터를 가져오는 경우를 예를 들어보죠. 1. 우선 설정 파일을 작성 해주고, 매퍼구문을 작성 ↓ 2. JSP 파일에서 서비스의 메소드 호출 ↓ 3. 서비스에서 Repository(Dao)의 객체 생성 후 메서드 호출 ↓ 4. Repository에서 SqlSession 객체 생성 후 namespace를 통해 SqlSession의 메소드(selectOne)호출 ↓ 5. Repository에서 namespace를 통해 지정된 매퍼 구문의 id를 통해 매퍼 구문 .xml 파일 호출하여 매핑 구문 실행 이러한 흐름으로 구성이 됩니다. 1. 매퍼구문을 작성하기 위해 xml파일을 생성하고 SELECT comment_no, .. 데이터베이스/마이바티스 6년 전
서브쿼리 서브 쿼리 서브 쿼리란 SQL 문장 안에서 보조로 사용되는 또 다른 SELECT 문입니다. 최종 결과 출력 쿼리를 메인 쿼리이면 이를 보조하는 SELECT문이 바로 서브 쿼리 입니다. 서브 쿼리는 SELECT , FROM , WHERE절 모두 사용 가능하고 또한 INSERT UPDATE MERGE DELETE 문에서 사용 가능합니다. 메인 쿼리와의 연관성에 따라 -연관성 없는 서브 쿼리 -연관성 있는 서브 쿼리 형태에 따라 -일반 서브 쿼리(SELECT 절) -인라인 뷰(FROM 절) -중첩 쿼리(WHERE 절) 우선 연관성 없는 서브 쿼리에 대해 알아 봅시다. 연관성 없는 서브 쿼리는 메인 쿼리와의 연관성이 없는 서브 쿼리입니다. 즉 메인 테이블과 조인 조건이 걸리지 않습니다. SELECT count(.. 데이터베이스/MySQL 6년 전
마이바티스 CRUD(삭제) 마이바티스 CRUD(삭제) 마이바티스 CRUD중 삭제에 대해서 알아봅시다. 앞서 삽입 수정 조회에 대해 알아보았습니다. 우선 전통적인 삭제에 대한 JDBC 코드를 보면 public Integer deleteComment(Long commentNo) { Connection conn = null; PreparedStatement stmt = null; try { conn = this.getConnection(); StringBuilder sql = new StringBuilder(""); sql.append("DELETE FROM comment "); sql.append("WHERE comment_no = ? "); stmt = conn.prepareStatement(sql.toString()); stmt... 데이터베이스/마이바티스 6년 전
마이바티스 CRUD(수정) 마이바티스 CRUD(수정) 이번에는 CRUD중 수정에 대해서 알아보도록 하겠습니다. 데이터를 수정하고자 할때 마이바티스는 어떻게 쓰이는가?? 앞서 봤듯이 전통적인 JDBC 코드를 살펴봅시다. public Integer updateComment(Comment comment) {Connection conn = null;PreparedStatement stmt = null; try {conn = this.getConnection(); StringBuilder sql = new StringBuilder("");sql.append("UPDATE comment SET ");sql.append("comment_content = ? ");sql.append("WHERE comment_no = ? ");stmt = co.. 데이터베이스/마이바티스 6년 전