본문 바로가기

분류 전체보기

(39)
7) 클래스 가장 기본적인 모양 객체 생성 객체 생성시 필드(프로퍼티)에 디폴트값 주기 자바 생성자 코드블럭의 대체제 init{} 해당 인스턴스를 생성할때 어떤 동작을 하고싶은지 적는곳 객체 생성의 다형성구현 : 부생성자 정의 객체 생성시 실행 순서 상속
6) Nullable 과 NonNull 자바와 달리 Kotlin에서는 따로 정해진 null 예외처리가 없으면 기본적으로 변수에는 null값이 들어갈 수 없다. 그래서 null값을 허용하기 위해 nullable을 활용한다. 그 연산자를 알아보자 ? => Nullable 타입으로 만들어주기 NPE : Null Pointer Exception은 자바에서는 런타임 시에만 잡을 수 있는 에러 이지만 코틀린에서는 컴파일 시점에 잡을 수 있도록 "?"연산자를 지원한다. ?.toUpperCase() null이 아니면 toUpperCase()를 하고 null이면 null을 반환 var nameInUpperCase = name.toUpperCase() // name이 null이면 NPE가 나지만 var nullNameInUpperCase : String? = ..
mapper 등록 두 가지 방법 SqlSessionFactoryBean 스프링과 mybatis가 결합되었을때, SqlSessionFactoryBean을 통해 SqlSessionFactory객체를 생성한다. SqlSessionFactory는 데이터베이스와의 연결과 SQL의 실행에 대한 모든 것을 가진 가장 중요한 객체다. SqlSessionFactory를 설정할땐 두가지의 필수 프로퍼티가 필요한데, DataSource와 configLocation이다. JDBC DataSource를 참조하여 MyBatis와 database서버를 연동시켜주고, configLocation을 참조하여 Configuration.xml 에 있는 변경된 mybatis설정을 반영한다. 스프링에선 SqlSessionFactory를 생성해주는 SqlSessionFacto..
5) 반복문 val students : ArrayList = arrayListOf("joyce", "james", "jenny", "jennifer") for(name : String in students){ println("${name}") } for( String name : students) { } // 자바의 향상된 for문 = for( name : String in students) { } // 코틀린 1에서 10 var sum:Int = 0 for(i:Int in 1..10){ sum += i } 1에서 10 사이 두칸식 띄어서(1, 3, 5, 7, 9) var sum2:Int = 0 for(i:Int in 10..10 step 2){ sum2 += i } 10부터 1까지 내려가라(10, 9, 7, .....
4) Array and List Array Any (== 자바에서 Object 로 두는것과 비슷) => 이런식으로 초기화 배열 인덱스의 값을 바꿀 수 있다. (val인것과는 상관없다..(배열 자체의 크기나 참조값만 바뀌지 않으면 되나보다..) List MutableList
3) 조건식 코틀린 조건식의 특징은 기존 자바에선 If, when문이 자바에서는 Statement, 즉 단순 명령문으로만 사용됬다면 코틀린에서는 어떠한 값을 만드는 표현식인 Expression으로 사용될 수 있다는 것이다. (※ 사실 코틀린에서 모든 함수는 Expression이다. (Unit타입을 리턴하기 때문)) if fun maxBy(a2:Int b2:Int):Int { if(a2>b2){ // 명령문으로서만 사용되고 있는 if문 return a2 } else { return b2 } } 그러나 이렇게 값을 도출하는 Expression으로서 쓰일 수 있다. fun maxBy2(a2:Int, b2:Int) = if(a2>b2) a2 else b2 when fun checkNum(score:Int){ when(sco..
2) val vs var 과 String Template val : val = value, 바뀌지 않는 상수, 초기화 이후 수정될 수 없다. var : var = variation, 변할 수 있는 수, 변수 Val 과 Var의 공통점 : 타입을 자동추론해줘서 생략해도 된다. 그러나 선언만할시 타입은 정해놔야한다. String Template : 문자열안에서 편하게 변수명으로 외부의 변수를 가져올 수 있는 방법(기능) ${변수명}
1) 함수와 접근제한자 리턴값이 없는 경우 fun helloWorld() : Unit{ //:Unit==void리턴값이없을때 println("HelloWorld!") } 파라미터와 리턴값이 있는 경우 fun add(a : Int, b : Int) : Int{ //Integer==Int,변수명:타입 return a + b } function의 블록은 생략될 수 있다 fun sum(a:Int, b:Int) = a + b fun main() { println("sum of 19 and 23 is ${sum(19, 23)}") // sum 함수 호출 } Unit은 생략될 수 있다 fun printSum(a:Int, b:Int){ println("sum of $a and $b is ${a+b}") } -------------------..
트리거 트리거란? 영어로 방아쇠라는 뜻으로 방아쇠를 당기면 그로 인해 총기 내부에서 알아서 일련의 작업을 실행하고 총알이 날아가는 거처럼 데이터베이스에서 어떤 테이블에 INSERT, UPDATE, DELETE같은 문이 실행 되었을 때 정의한 트리거로 인하여 다른 테이블이 수정되는등 자동으로 동작하도록 작성된 프로그램이다. 트리거 특징 트리거는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때 마다 자동적으로 수행되는 사용자 정의 프로시저이다. 트리거는 TABLE과 별도로 DATABASE에 저장된다. 트리거는 VIEW에 대해서가 아니라 TABLE에 관해서만 정의될 수 있다. 트리거는 SQL의 제약조건 방법을 통해 명시할 수 없는 무결성 제약조건을 구현하고, 관련테이블의 데이터를 일치시킬..