Cute Hello Kitty Kaoani

전체 글

Framework & Library/MyBatis

[Oracle/MyBatis] 에러 모음

ORA-00911: invalid character 잘못된 문자가 들어가면 발생. 주로 쿼리 뒤에 ; 를 넣을 때 발생 indexoutofboundsexception: index: , size: Mybatis의 경우 쿼리문의 컬럼 값을 가져와 VO의 데이터에 자동으로 매핑한다. 그렇기에 이러한 에러가 발생한다면 현재 VO의 데이터에 쿼리문의 컬럼이 제대로 매핑되지 않았다. 나같은 경우는 DTO(VO)에는 테이블의 모든 속성을 작성하고 생성자도 만들었다. 그리고 Mapper XML파일에서 select문을 작성할 때 테이블의 일부 컬럼만을 조회할 수 있도록 작성했는데 DTO(VO)의 데이터와 조회할 컬럼을 일치하도록 수정하여 해결할 수 있었다. IO 오류 : The Network Adapter could n..

Framework & Library/MyBatis

[MyBatis] 동적 SQL (Dynamic SQL) 기능 - foreach문

동적 SQL에서 필요한 것은 collection에 대해 반복처리를 하는 것이다. 종종 IN 조건을 사용할 때 사용한다. select문에서 foreach 사용 select deptno, dname, loc from dept #{item} 파라미터 객체로 List 인스턴스나 배열을 전달할 수 있다. 그렇게하면 MyBatis는 Map으로 자동으로 감싸고 이름을 키로 사용한다. List 인스턴스는 "list" 를 키로 사용하고, 배열 인스턴스는 "array"를 키로 사용한다. // Main.java // select * from dept where deptno In (값, 값2, 값3, ... ) List deptnoList = Arrays.asList(10, 20, 30, 40); List list = ses..

Framework & Library/MyBatis

[MyBatis] 동적 SQL (Dynamic SQL) 기능 - if, choose/when/otherwise

MyBatis의 가장 강력한 기능 중 하나는 특정 조건에 따라 변경되는 동적 SQL (Dynamic SQL) 기능이다. if 조건식 작성 select deptno, dname, loc from dept dname = #{dname} order by 1 choose / when / otherwise 다중 조건식 작성 select deptno, dname, loc from dept deptno IN (50, 60) deptno = 70 deptno In (10,20,30,40)

Framework & Library/MyBatis

[MyBatis] SQL Map XML 파일

Mybatis 는 src 폴더에 Mapper 설정 정보를 저장하는 xml 파일 하나 Configuration.xml 와 SQL 쿼리를 저장하는 xml 파일 테이블명Mapper.xml 을 테이블 당 하나씩 작성한다. 아래 내용은 SQL 쿼리를 저장하는 SQL Map XML 파일에 대한 내용이다. SQL Map XML 파일 id : 구문을 찾기 위해 사용될 수 있는 namespace(명명공간) 내 유일한 구분자 parameterType : 패키지 경로를 포함한 전체 클래스명이나 별칭 resultType : 구문에 의해 리턴되는 패키지 경로를 포함한 전체 클래스명이나 별칭 select deptno, dname, loc from dept where deptno = #{deptno} 구문의 이름은 selectDe..

Framework & Library/MyBatis

[MyBatis] INSERT문/UPDATE문/DELETE문 요청

MyBatis의 연동과 SELECT문 요청은 아래 글 참고 [MyBatis] MyBatis 실행 순서 정리 ✍️ - SELECT 문 MyBatis는 자바 언어를 기반으로 데이터베이스 프로그래밍을 쉽게 할 수 있게 도와주는 SQL Mapper 프레임 워크로 데이터베이스와 자바 객체들 간의 상호 매핑을 단순화하고 SQL 쿼리를 실행하는데 gangintheremark.tistory.com DML 요청 MyBatis 는 기본적으로 auto commit 이 아니기 때문에 명시적으로 commit 호출을 해야한다. (JDBC는 자동commit) // insert int n = session.insert(""); int n = session.insert("", Object obj); // update int n = s..

Framework & Library/MyBatis

[MyBatis] MyBatis 실행 순서 정리 ✍️ - SELECT 문

MyBatis는 자바 언어를 기반으로 데이터베이스 프로그래밍을 쉽게 할 수 있게 도와주는 SQL Mapper 프레임 워크로 데이터베이스와 자바 객체들 간의 상호 매핑을 단순화하고 SQL 쿼리를 실행하는데 도움을 주는 기능들을 제공한다. JDBC와 다르게 프로그램에 있는 SQL쿼리들을 한 구성파일(.xml)에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점이 있다. [JDBC] JDBC 실행 순서 정리 ✍️ - SELECT문 요청 JDBC(Java Database Connectivity) 는 어떤 환경에서건 자바 언어를 사용하는 경우에 DBMS 종류에 상관없이 데이터베이스에 접근할 수 있는 독립적인 프로그래밍 API이다. 다음은 JDBC를 구현하는 기본적인 gangintheremark.tistory..

Algorithm/Problem Solving

[BOJ] 1002번 터렛 - JAVA(자바)

1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 $-1$ 출력한다. www.acmicpc.net 문제에서 두 좌표와 각각의 거리가 주어져 원을 그릴 수 있다. 그 원이 바로 문제에서 말하는 사람이 있을 수 있는 위치이다. 사람이 있을 수 있는 위치가 무한대인 경우는 두 좌표가 일치하고, 원의 크기가 같을 때 사람이 있을 수 있는 위치가 한 곳인 경우는 두 원이 내접, 외접하는 경우이다. 두 원의 반지름 차 == 두 좌표의 거리 or 두 원의 반지름 합 == 두 좌표의 거리 사람이 있을 수 있는 위치가 두 곳인 경우는 두 원이 두 점에서 만나는 경우이다. 두 원의 반지름 차 < 두 좌표의 거리 < 두 원의 반..

카테고리 없음

[알고리즘] 투 포인터(two pointer), 슬라이딩 윈도우(Sliding window)

이 두 알고리즘은 O(N2)이상 걸릴 시간 복잡도를 부분 배열을 활용하여 O(N)으로 줄일 수 있다. 이 두 알리고리즘의 차이점으로 투 포인터 알고리즘은 부분 배열의 길이가 가변적이지만 슬라이딩 윈도우 알고리즘은 부분 배열의 길이가 고정적이다. 투 포인터 (two pointer) 투 포인터 알고리즘은 배열에 순차적으로 접근해야 할 때 두 개의 점 위치를 기록하면서 처리하는 알고리즘이다. 투 포인터 알고리즘에서는 대표적으로 두 개의 유형이 존재한다. 2개의 포인터 변수 시작점이 배열의 시작점인 경우 정렬된 배열 안에서 2개의 포인터 변수가 각각 시작점 0 과 끝점 arr.length-1 에 위치한 경우 투 포인터로 해결해야하는 문제에서는 모든 배열의 값들을 탐색하여 특생 조건을 일치시키는 개수 또는 최소/..

Algorithm/알고리즘

[Java/알고리즘] 유클리드 호제법 - 최대공약수, 최소공배수

유클리드 호제법 유클리드 호제법은 두 수의 최대공약수(GCD)를 찾기 위한 알고리즘이다. 두 수 중 큰 수를 작은 수로 나눈다. 나머지가 0이면 작은 수가 최대 공약수 나머지가 0이 아니면 작은 수가 큰 수가되고, 나머지를 작은 수로 대체하여 1단계로 돌아간다. 즉, 큰 수를 작은 수로 나눠 나머지가 0이 될 때까지 반복하는 방식이다. 최대공약수(GCD) 구현 // 재귀 방식 public int gcd(int a, int b) { if( b == 0 ) return a; return gcd(b, a % b); } 최소공배수(LCM) 구현 최대공약수(gcd)를 이용해 최소공배수를 구한다. 최소공배수는 두 수의 곱에 최대 공약수를 나눈 값과 같다. public int lcm(int a, int b) { re..

Algorithm/Problem Solving

[BOJ] 2960번 에라토스테네스의 체 - JAVA(자바)

2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 이젠 자신있는 소수 문제 💪💪 에라토스테네스의 체는 소수를 빠르게 판별할 수 있는 알고리즘으로 원래의 에라토스테네스의 체는 소수의 배수만 지우는 구조로 구현되는데 이 문제는 소수까지 지우는 것으로 해결해야된다. 지워진 숫자는 continue 를 통해 넘어갈 수 있어 소수를 구하는데 있어 효율적인 방식이다. import java.util.*; class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(); int k =..

Framework & Library/JDBC

[JDBC] JDBC 트랜잭션 처리

💪 트랜잭션 참고 💡 트랜잭션 여러 개의 작업들을 하나의 작업처럼 처리해야 되는 경우 이용된다. 하나 이상의 DML이 모여 하나의 트랜잭션으로 구성한다. JDBC에서 모든 DML 작업이 자동으로 auto commit 된다. 하지만 트랜잭션으로 처리해야만 하는 작업에서는 명시적으로 auto commit을 비활성화한 후 작업해야 한다. Service 클래스에서 Connection API의 setAutoCommit() 메서드를 이용하여 자동 commit을 비활성화 시키고 이 후 commit() rollback() 메서드를 사용하여 트랜잭션을 처리할 수 있다. 메서드가 모두 성공하면 commit(), 만약 하나라도 예외가 발생하면 rollback() 으로 처리한다. // update , delete 기능 => ..

Framework & Library/JDBC

[JDBC] DAO 및 DTO 패턴 사용 실습

이전 글 참고 필수 ✨ [JDBC] DAO 패턴 및 DTO 패턴 데이터베이스를 연동하는 프로그램을 개발할 때 반드시 사용되는 2가지 개발 패턴이 있다. DAO (Data Access Object) 패턴 DB의 데이터에 접근하기 위한 객체로, 직접 DB에 접근하여 데이터를 조회, 삽입 gangintheremark.tistory.com dept 테이블에 저장된 레코드를 조회, 검색, 수정, 삭제할 수 있는 기능을 DAO 및 DTO 패턴을 적용하여 구현한 실습이다. Main 클래스명 : DeptMain.java DAO 클래스명 : DeptDAO.java DTO 클래스명 : DeptDTO.java Service 인터페이스명 : DeptService.java Service 클래스명 : DeptServiceImpl..

gangintheremark
갱ㅎr