시스템아 미안해
mariaDB decimal에 빈 값 넣기(jsp,java,mybatis,mariaDB) 본문
1. 일단 mybatis에서 CONVERT(#{decimal값 jdbcType=DECIMAL}, DECIMAL(15,2)) 을 해줬을때
insert는 되고 update는 안된다.
2. int값을 mybatis의 parameter를 #{decLowestPrice} 이렇게 설정하고, DB상에서 column자료형을 DECIMAL로 설정하면 자동으로 DECIMAL로 들어감
- 그러나 빈값을 넣을땐 에러 발생
3. 빈값을 넣을때 CONVERT(#{decCommision jdbcType=INTEGER}, DECIMAL(15,2)) 이렇게 설정하면 에러가 안남
- 그러나 값이 테이블에 전혀 안들어감
4. 자바에서 형변환 처리 안하고 String으로 mybatis에 넘긴 후
CAST(#{decLowestPrice jdbcType=VARCHAR}) AS DECIMAL(15,2))
이렇게 하니 안됨
5.
DecimalFormat df = new DecimalFormat("###############.##");
map.put("decCommision",df.format(NumberUtils.toDouble(String.valueOf(map.get("decCommision")))));
System.out.println(map.get("decCommision").getClass());
자바에서 DecimalFormat으로 형변환 하기 위해서 double로 바꾼 후 찍어봤는데
String으로 찍힘 :(
그래도 성공..
null로 넣었을땐
값을 넣었을땐
## 최종 코드 (★빈 값을 NULL로 바꿔야 에러 안남★)
DecimalFormat df = new DecimalFormat("###############.##");
if(map.get("decLowestPrice")!="") {
map.put("decLowestPrice",df.format(NumberUtils.toDouble(String.valueOf(map.get("decLowestPrice")))));
}
else {
map.put("decLowestPrice",null);
}
if(map.get("decCommision")!="") {
map.put("decCommision",df.format(NumberUtils.toDouble(String.valueOf(map.get("decCommision")))));
}
else {
map.put("decCommision",null);
}
mariaDB 함수인 IFNULL을 쓸때도 ( #{파라미터}, '') 가 아니라 ( #{파라미터}, NULL)로 해야겠다
mybatis
decLowestPrice = #{decLowestPrice},
decCommision = #{decCommision},
'error diary' 카테고리의 다른 글
javax.el.ELException: Failed to parse the expression [${ }] (0) | 2022.12.13 |
---|---|
이클립스 저장 전 코드 에러가 계속 뜰때 (0) | 2022.12.02 |
mybatis-mariaDB parameter set 에러 (0) | 2022.11.30 |
ContextLoaderListener을 읽지 못할때 (0) | 2022.11.30 |
HttpMessageConverter가 안먹을때 (0) | 2022.11.30 |