一種在ssm框架下時間互動的簡單解決方案
阿新 • • 發佈:2019-01-04
總結基於ssm框架下的統一快速處理時間的簡單方案。
1 約定與頁面互動格式
後臺程式為前端頁面提供介面,統一使用時間字串互動:包含兩種字串格式:"yyyy-MM-dd HH:mm:ss"和"yyyy-MM-dd";
一般而言,頁面使用時間控制元件,容易實現統一的格式化樣式,當需要時間精度較高時,帶上時分秒,當時間精度僅需要精確到天時,僅儲存年月日即可。
2 約定資料庫儲存格式
以oracle資料為例:時間的儲存分為:
DATE、TIME/TIMESTAMP
DATE:在資料庫中儲存時間僅精確到日 年月日 yyyy/MM/dd
TIME/TIMESTAMP:在資料庫中儲存時間精確到秒
3 時間工具類
自定義時間工具類,對兩種格式的時間進行轉換:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 時間格式 */ public static final String PATTERN_TIME = "yyyy-MM-dd HH:mm:ss"; /** * 日期格式 */ public static final String PATTERN_DATE = "yyyy-MM-dd"; static SimpleDateFormat timeFormat = new SimpleDateFormat(PATTERN_TIME); static SimpleDateFormat dateFormat = new SimpleDateFormat(PATTERN_DATE); public static Date parse(String content) { if (null != content && content.trim().length() > 0) { try { return timeFormat.parse(content); } catch (ParseException e) { try { return dateFormat.parse(content); } catch (ParseException e1) { return null; } } } return null; } }
4 全域性時間轉換服務
自定義全域性時間轉換器,對所有bean中的date格式的值進行轉換:import java.util.Date; import org.springframework.core.convert.converter.Converter; public class GlobalDateConverter implements Converter<String, Date> { @Override public Date convert(String source) { if (null != source && "" != source && !"NaN".equals(source)) { return DateUtil.parse(source); } else { return null; } } }
5 向springmvc容器中注入全域性時間轉換器
向springmvc配置的註解驅動中註冊:<bean id="converionService"
class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.xxx.ssm.common.converter.GlobalDateConverter" />
</property>
</bean>
<mvc:annotation-driven enable-matrix-variables="true"
conversion-service="converionService">
<mvc:message-converters>
<beans:bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</beans:bean>
</mvc:message-converters>
</mvc:annotation-driven>
6 在bean中添加註解,使用jackson:@JsonFormat
按照指定格式輸出時間字串到頁面:@JsonFormat(pattern = DateUtil.PATTERN_DATE)
7 在bean中添加註解,確定資料庫儲存格式:
@ColumnType(jdbcType = JdbcType.TIMESTAMP)