본문 바로가기

전체 글236

Querydsl where 절에 문자열 replace 함수 사용 방법 where절에 사용하기 위해 stringTemplete을 활용한다. /** * sp의 공백을 제거하고 영문을 소문자로 변환하여 리턴한다. * DB값을 변환해서 검색할 때 사용 * * @param sp DB에 입력된 문자열 */ public static StringTemplate removeBlankAndConvertLower(StringPath sp) { return Expressions.stringTemplate("lower(replace({0}, ' ', ''))", sp); } 2023. 3. 8.
Poi 라이브러리에서 wrapText = true 지정하여 2줄 이상의 텍스트를 넣었는데 자동 줄바꿈만 되고 높이가 한 줄 높이 그대로인 경우 자동줄바꿈만 되고 높이가 한줄 높이 그대로인 경우가 있다. 그런 경우 아래처럼 옵션을 주면 자동으로 맞춰준다. currentRow.setHeight((short)-1) SXSSFWorkbook 기준으로 잘 동작하는 것을 확인하였다. 2023. 1. 13.
Poi Library 오류 : The maximum column width for an individual cell is 255 characters. 엑셀 다운로드를 구현하고 스타일을 적용하는 과정에서 아래 오류를 발견했다. The maximum column width for an individual cell is 255 characters. 원인은, Poi 라이브러리에서 지원하는 최대 가로 길이가 255 * 256이기 때문. 255는 글자수를 의미하고 256은 엑셀파일에서 보는 기준 한글자(영어 기준)의 가로 길이다. 즉, 영문 255자까지가 허용되는 컬럼 가로 길이다. 해결은 단순히 최대값의 제한을 걸면 되므로 Math.min(A,B) 로 제한을 걸면 된다. 참고로 한글은 256이 아니라 512로 하면 적절하게 맞는다. 즉 한글은 122자 정도 길이가 한계라고 보면 된다. 이렇게 가로 길이를 제한하고 난 뒤에는 CellStyle을 이용해 wrapT.. 2023. 1. 13.
[Dart] 기본문법 Classes Class 선언 기본 class Player { String name = 'nico'; final int xp = 1500; sayHello() { // this.name 등 this는 사용가능하지만 클래스 내에서는 사용이 권고되지 않고 있음 print('Hello, my name is $name'); } } void main() { var player = Player(); print(player.name); player.name = 'change'; print(player.name); player.sayHello(); } Constructor 생성자 파라미터를 어느 변수에 넣을 것인지 명시하여 Class의 late prefix를 없애고 생성자 코드수도 줄여 가독성을 높인다. // 일반적인 생성자 cla.. 2023. 1. 11.
[Dart] 기본문법 Functions 함수 기본 선언 방식 // 일반적인 함수 선언 String sayHello(String name) { return "Hello, $name nice to meet you!"; } // 바로 리턴할 경우 람다식으로 축약 가능 fat arrow syntax String sayHello2(String name) => "Hello, $name nice to meet you!"; // 수식 함수에 fat arrow syntax 적용 num plus(num a, num b) => a + b; void main() { print(sayHello2('nico')); print(plus(2,3)); } Named Parameters named argument로 파라미터에 이름을 지정({}로 감싸고 오브젝트를 넘기듯이 함.. 2023. 1. 10.
[Dart] 기본문법 Data types 기본 타입 타입은 모두 class로 되어 있고 class는 object로 되어 있는 강력한 객체 지향적 언어 void main() { String name = "name"; bool alive = true; int age = 12; double money = 69.99; num x = 12; // int or double or ... x = 1.1;// 가능 } List [] 안에 데이터를 넣어 선언하고 var혹은 타입을 명시할 수 있다. collection if와 collection for를 지원. void main() { // list 선언 var numbers = [1,2,3,4]; List numbers2 = [1,2,3,4]; numbers.add(1);// var 이므로 추가 가능 // col.. 2023. 1. 10.
[Dart] 기본 문법 Variables 온라인 편집기 주소 : https://dartpad.dev DartPad dartpad.dev 기본 형태 void main() { print('hello world'); } Dynamic type : 타입이 정해지지 않은 변수 선언 및 사용 void main() { var name;// or dynamic name; 으로 선언도 가능 name = 'string'; name = 12; name = true; if(name is String) { // 문자열일 때 } else if(name is int) { // int형 숫자일 때 처리 등 } } null safety : 변수 등에 null의 허용에 대한 식별자를 기재하여 사전에 npe를 차단 // null safety 하지 않은 코드 bool isEmpt.. 2023. 1. 10.
method를 찾고 invoke 하는 함수 작업하다 사용하지 않을 것 같아서 코드만 여기에 정리. package com.gsretail.pbu.common.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import com.gsretail.pbu.common.exception.BusinessException; import com.gsretail.pbu.common.status.ErrorEnum; public class MethodUtils { /** * obj의 name 메소드를 찾아 .. 2023. 1. 5.
Java8 Bigdecimal 지수 표현 제거 8.124E-7 이 있을 때, Double로 파싱 > new Bigdecimal() 생성 안됨 기타 다른 서칭 답안들 안됨 Bigdecimal.toPlainString() 됨 eg) Bigdecimal b = 8.124E-7; b.toPlainString() 2022. 11. 28.