본문 바로가기

개발자노트/DBMS

(18)
아이바티스 - 항목 별 합계 ( 대분류별 합계 소분류별 합계 ) 게시판을 만들다 보면 항목별 합계가 필요할 때가 있다. 단순히 해당컬럼 값들에 대한 합을 구하면 SUM 한번으로 끝나지만, 소분류끼리의 합을 대분류를 기준으로 해서 끊어서 합을 구할 때 사용한 방법이다. 다음과 같이, 합계는 대분류 끼리 따로 나오게 할 것이다. SUM(b.컬럼1) OVER(PARTITION BY a.대분류코드,a.소분류코드) AS 합을부를별칭 SUM(b.컬럼2) OVER(PARTITION BY a.대분류코드,a.소분류코드) AS 합을부를별칭 SUM(b.컬럼3) OVER(PARTITION BY a.대분류코드,a.소분류코드) AS 합을부를별칭 SUM(b.컬럼4) OVER(PARTITION BY a.대분류코드,a.소분류코드) AS 합을부를별칭 SUM(b.컬럼5) OVER(PARTITION B..
아이바티스 - 날짜 출력 object object 뜰 때 (TO_CHAR) 날짜를 출력하고자 할 때 , 화면에 object object가 들어가있는 것을 볼 수 있다. 테이블에 insert 되어있는 정보가 DBMS에 DATE로 들어가 있기 때문에 바로 출력을 하게 되면 해당화면을 볼 경우가 있다. 이럴 때 가장 쉬운 방법으로는 SELECT 문에서 데이터를 가져올 때 TO_CHAR를 사용해주면 된다. SELECT TO_CHAR(날짜컬럼, 'YYYY.MM.DD") AS 별칭 FROM 테이블명 이런식으로 하게되면 연도.월.날짜로 출력되게 된다. 작은 따옴표 안에 . 과 같은 구분자는 - 나 _ 등 다른 구분자를 사용할 수 있으니 본인이 원하는 출력대로 바꾸어 사용하면 된다!
아이바티스 include 서브쿼리 ( 검색 + 정렬 ) , sql,jqgrid 공지사항 게시판을 출력해주는 SQL문이 있다. 통상적으로 아이바티스의 경우 이런 식으로 해당 쿼리문을 실행할 id와, input, output으로 수행한다. 기본적으로 게시판 selectAll 문에는 serach 즉 검색이 포함되어 있는 경우가 많다. 내가 이 서브쿼리를 사용하게 된 이유는 , 1순위로 공지사항이 최상단에 출력되고, 그 후에 출력 되는 것들은 PK에 의해 출력 되고, 그 후 페이징처리를 위해 cnt값을 넘겨주어야 했다. 먼저 serach를 통해 select 될 아이바티스 sql문을 작성한다. /* DAO.selectList */ SELECT A.컬럼1 , A.컬럼2 , A.컬럼3 FROM 테이블명 A WHERE 1=1 A.조건1컬럼 = #search조건1# A.조건2컬럼 = #search조건2# ..
[SQL] (Oracle) JDBC에서 selectAll final String sql_selectAll="SELECT * FROM STUDENT WHERE NAME LIKE '%'||?||'%' ORDER BY SID ASC"; // LIKE 구문을 JDBC에서 쓰려면 '%'|| ? || '%" 으로 써야함 , %도 각 각 글자로 취급하기 때문에..? public ArrayList selectAll(StudentVO vo){ // boolean타입이 아니니 반환할 정보를 만들어 놓는다 ArrayList datas=new ArrayList(); conn=JDBCUtil.connect(); try { pstmt=conn.prepareStatement(sql_selectAll); pstmt.setString(1, vo.getName()); // 객체정보에 이름정보..
[SQL] (Oracle) JDBC에서 selectOne final String sql_selectOne="SELECT * FROM STUDENT WHERE SID=?"; public StudentVO selectOne(StudentVO vo) { conn=JDBCUtil.connect(); ResultSet rs=null; try { pstmt=conn.prepareStatement(sql_selectOne); pstmt.setInt(1, vo.getSid()); // 입력값으로 들어온 Sid로 setInt한다. rs=pstmt.executeQuery(); if(rs.next()) { StudentVO data=new StudentVO(); data.setName(rs.getString("NAME")); // 이름 data.setScore(rs.getInt(..
[SQL] JDBC에서 delete final String sql_delete="DELETE FROM STUDENT WHERE SID=?"; public boolean deleteStudent(StudentVO vo) { conn=JDBCUtil.connect(); try { pstmt=conn.prepareStatement(sql_delete); pstmt.setInt(1, vo.getSid()); int res=pstmt.executeUpdate(); // 반환값이 int, 수행한 횟수를 나타냄 1명삭제 2명삭제..등등 if(res==0) { return false; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return fal..
[SQL] JDBC에서 중복코드를 최소화 해주는 [JDBCUtil] 우리가 일상에서 유용하게 사용되는 것들을 Utility 하다고 표현하듯이, JDBC을 사용할 때 유용하게 쓸 수 있는 기능들을 모아논 것들을[JDBCUtil]이라고 한다. 이 클래스를 왜 사용할까? 1) C R R U D 에서 계속 사용됨.. 2) DAO가 증가하면 또 CRUD도 증가됨 → ... → ctrl+c, ctrl+v 하는 일이 많아짐! → but Util을 사용하여 중복코드를 최소화 하기 위해 이것들을 모듈화! 하는 것이 Util클래스 // 우리가 JDBC에서 많이 사용 되는 것들을 모듈화 해줄 것이다. // static이 붙은 것은 객체를 만들어서 사용할 것이 아닌 객체와 무관하게 사용할 것이라 // static으로 시작하게 된다. // 또한 수정 될 일이 없으니 final 까지 사용 // ..
[SQL] JDBC에서 [PreparedStatement=pstmt] 를 이용한 정보맵핑 PreparedStatement - 쉽게 stmt 상위호환이다. - ?에 값을 넣을 수 있도록 함(매핑 느낌) 기본 사용 방법 Connection conn; // 커넥션 객체 생성 PreparedStatement pstmt; // pstmt 객체 생성 pstmt=conn.prepareStatement(sql) // 만들 적에 sql문이 들어간다! 그렇다면 stmt와의 차이점은 무엇인가? stmt -> 일단 만들고, 직접 쿼리문(SQL문)을 메서드의 인자로 전달 pstmt -> 만들당시에 쿼리문(SQL문)을 전달하고, 이후에 값을 메서드의 인자로 전달 CRUD 중 C에 해당되는 Insert에 적용해보기. 내가 가지고 있는 테이블은 atrribute로 SID INT PRIMARY KEY, -- PK NAME..