전체 글

초보 개발자의 지식 공유의 장
Mybatis 동적 쿼리 DBMS별 Like 문 DB는 MySql을 쓰고 있고, Mybatis에서 WHERE절에 LIKE 검색을 하였는데 데이터가 모두 나오는 기이한 현상이 있었다. 찾아보니, DBMS별로 Mybatis LIKE문이 다른것을 발견했다. (Oracle만 쓰다보니 당연히 되겄거니 하고 하였는데 안되었음) MySql SELECT * FROM TABLE WHERE column_name LIKE CONCAT('%', #{keyword}, '%') Oracle SELECT * FROM TABLE WHERE column_name LIKE '%' || #{keyword} || '%' MsSql SELECT * FROM TABLE WHERE column_name LIKE '%' + #{keyword} +..
자동 설정 이해하기 Spring boot main 클래스의 상위에 보면 @SpringBootApplication이라는 어노테이션을 볼 수 있다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); // 이 class와 arguments를 넘겨준다. } } 이 어노테이션을 아래와 같이 설정이 되어 있는데, 여기서 @EnalbeAutoConfiguration이란 놈이 자동으로 설정을 해주는 녀석이다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @D..
2019/07/03 - [프로그래밍 노트/SPRING BOOT] - [Spring Boot] 스프링 부트 시작하기 의존성 관리 Spring Boot는 어떻게 수 많은 의존성을 갖고 왔을까? 우리는 pom.xml 의존성 설정에 version을 주지 않았는데 spring boot는 알아서 수 많은 의존성 lib를 갖고왔다. 이것은 의존성 관리 기능 때문인데 parent pom을 따라가다보면 spring-boot-dependencies 프로젝트가 존재하는데 이곳에서 spring version을 관리하고 있다. 우리는 spring-boot-dependencies에서 관리하는 라이브러리를 사용하게 된다. 우리가 spring boot 프로젝트를 생성하면 부모pom 으로 spring-boot-starter-paren..
메이븐은 하나의 프로젝트에서 여러 모듈을 관리할 수 있는 모듈 기능을 지원한다. (한 프로젝트가 여러 모듈을 가지면서 빌드를 한 번에 진행하는 방법) 여기서 필요한 개념인 아래의 3가지 기능을 알아보자 상속(inheritance) 집합(aggregation) 의존 관계(dependency) 상속 메이븐 설정파일이 기본으로 최상위 POM을 상속하듯이 프로젝트에서도 공통으로 사용하는 설정은 공통 POM파일을 만들어 관리하고 하위 모듈에서 이POM을 상속할 수 있다. 메이븐에서 상속기능을 사용하려면 부모POM에서 엘리먼트를 설정해야 한다. parent POM.xml 4.0.0 com.corn diary pom 1.0-SNAPSHOT .... child POM.xml ... com.corn diary 1.0-S..
스프링 부트(Spring Boot) 소개 https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/getting-started-introducing-spring-boot.html 스프링 부트에 대한 소개가 위 링크에 나와있다. => 제품수준의 스프링 기반의 애플리케이션을 빠르고 쉽게 만들 수 있게 제공하는 것이 스프링 부트이다. (Spring Boot makes it easy to create stand-alone(독립적으로), production-grade Spring-based Applications that you can run.) 특징(primary goals 이라고 표현되어 있음) Spring 개발을 빠르고 광범위하게 사용할 수 ..
Function 함수적 인터페이스는 매개값과 리턴값이 있는 applyXXX() 메소드를 가지고 있다. 이 메소드는 매개값을 리턴값으로 매핑(타입 변환)하는 역할을 한다. 인터페이스명 추상 메소드 설명 Function R apply(T t) 객체 T를 객체 R로 매핑 BiFunction R apply(T t, U u) 객체 T, U를 객체 R로 매핑 DoubleFunction R apply(double value) double를 객체 R로 매핑 IntFunction R apply(int value) int를 객체 R로 매핑 IntToDoubleFunction double applyAsDouble(int value) int를 double로 매핑 IntToLongFunction long applyAsLong(..
Supplier 함수적 인터페이스는 매개값은 없고 리턴값이 있는 getXXX() 메소드를 가지고 있다. 이 메소드들은 호출한 곳으로 데이터를 리턴(공급)하는 역할을 한다. 인터페이스명 추상 메소드 설명 Supplier T get() T 객체를 리턴 BooleanSupplier boolean getAsBoolean() boolean 값을 리턴 DoubleSupplier double getAsDouble() double 값을 리턴 IntSupplier int getAsInt() int 값을 리턴 LongSupplier long getAsLong() long 값을 리턴 public static void main(String[] args) { IntSupplier intSupplier = () ->{ int n..
Consumer 함수적 인터페이스는 리턴값이 없는 accept() 메소드를 가지고 있다. Consumer는 단지 매개값을 소비하는 역할만 하며, 소비한다는 말은 사용만하고 리턴값이 없다는 뜻이다. 인터페이스명 추상 메소드 설명 Consumer void accept(T t) 객체를 T를 받아 소비 BiConsumer void accept(T t, U u) 객체 T, U를 받아 소비 DoubleConsumer void accept(double value) double 값을 받아 소비 intConsumer void accept(int value) int 값을 받아 소비 LongConsumer void accept(long value) long 값을 받아 소비 ObjDoubleConsumer void accep..
자바에서 한 개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이용할 수 있다. Runnable 인터페이스도 마찬가지이다. Runnable runnable = () -> { ... }; Thread thread = new Thread(() -> { ... }); // Thread 생성자 호출 자바8부터 빈번하게 사용되는 함수적 인터페이스(functional Interface)는 java.util.function 표준 API패키지로 제공한다. java.util.function이 제공하는 functional Interface의 목적은 메소드 또는 생성자의 매개 타입으로 사용되어 람다식에 대입될 수 있다. 함수적 인터페이스는 크게 Consumer, Supplier, Function, Operator, P..
이 포스팅을 하는 이유는, MAC에 윈도우 PC 키보드를 연결하면 키보드배열이 달라서 무척 불편해서이다. 일단 차이점을 알아보자. 애플키보드 Fn / Control / Option / Command 순 (왼쪽 기준) 윈도우 키보드 Ctrl / 윈도우키 / Alt 순 여기서 윈도우 키보드를 MAC북에 연결하게 되면 다음과 같이 매핑된다. MAC Window(일반키보드) Command키 윈도우키 Option키 Alt키 맥북에서는 맨 오른쪽에 Command키가 있는데 윈도우 키보드를 연결하면 맨 오른쪽에서 한칸 왼쪽에 있는 것이 Command가 되는 것이다. (무척 헷갈림) 키보드 배열을 동일하게 설정해 보자 1. 환경설정 > 키보드 2. 보조키 3. 연결된 키보드의 매핑 순서를 변경 Option -> Com..
깡냉쓰
평범한 개발자 노트