Spring
[Spring MVC ]Mybatis mapper.xml에서 date(java.util.date)자료형 다루기
하루인생
2021. 4. 13. 01:11
mysql에서 timestamp으로 저장된 approvaldate데이터를 가져올 때 resultType으로 java.util.Date형식으로 받아왔다.
<select id="getApprovalDate" resultType="java.util.Date">
select approvaldate from tbl_chat_validate where id=#{id} and chnum = #{chnum};
</select>
위와 같이 데이터를 반환하면 아래 사진과 같은 형태를 띈다.
하지만 mysql에서의 timestamp형식은 아래 사진과 같다.
그래서 반환된 java.util.date 형식을 timestamp에 맞게끔 바꿔줘야 한다.
이를 위해서 SimpleDateFormat클래스를 이용하면 된다. 아래와 같이 형식을 지정해주고 사용하면 된다.
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
그리고 지정한 형식을 java.util.date 변수에 적용시켜주면 된다.
그러면 정상적으로 timestamp형식으로 변환이 되었다.
String mysqlDate = format.format(Jdate);
이제 이렇게 변환된 String형의 문자를 mysql에 적용시키기 위해서 다시 timestamp형식으로 변환 해줘야 한다.
아래와 비슷하게 사용해주면 된다.
where chnum =#{chnum} and sendDate >= date_format(#{mysqlDate},'%Y-%m-%d %H:%i:%s')
코드로 보기
Date Jdate = chatValidateMapper.getApprovalDate(321,"user3");
System.out.println(Jdate);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mysqlDate = format.format(Jdate);
System.out.println(mysqlDate);
<select id="getAllChatMessage" resultType="org.example.domain.ChatMessageVO">
<![CDATA[
select *
from tbl_chat_message
where chnum =#{chnum} and sendDate >= date_format(#{approvalDate},'%Y-%m-%d %H:%i:%s')
]]>
</select>