一、后端处理
1、Mysql数据库
用date类型
2、Mybatis处理
这里主要是因为实体类的date是无法直接存入数据库的date,所以需要类型声明jdbcType=DATE
:
2.1 java实体的date存入mysql数据库
@Insert("insert into t_staff(staffid,staffname,staffimg,staffbirthdate) values (#{staffid},#{staffname},#{staffimg},#{staffbirthdate,jdbcType=DATE})")
public void db_addStaff(Staff staff);
2.2 mysql数据库的date取出
通过@Result( )实现date映射类型的处理
@Select("select * from t_staff where staffcode=#{code}")
@Results({
@Result(column = "staffbirthdate", property = "staffbirthdate",jdbcType = JdbcType.DATE,javaType = java.util.Date.class)
})
public Staff db_findStaffsbyCode(String code);
3、bean处理或Controller处理
Staff.class
@DateTimeFormat(pattern = "yyyy-MM-dd") *//*注解时间格式,不然前端会出现请求语法畸形 *//*
@JsonFormat(pattern = "yyyy-MM-dd",locale = "zh",timezone = "GMT+8")
private date staffbirthdate;
这里需要先在pom.xml引入一下包
<!-- 日期注解包:@DateTimeFormat -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.9</version>
</dependency>
<!-- JSON: jackson -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-lgpl</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
以上是一种方法,也可以直接在controller里用InitBinder
处理,
@InitBinder/*这里不特指,就表示全局适用*/
protected void InitBinder(ServletRequestDataBinder binder){
binder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
二、前端处理:
1、输入:date类型
出生日期:<input type="date" name="staffbirthdate"/>
2、输出并可修改:
<fmt:formatDate var="dateTest" value="${staff.staffbirthdate}" pattern="yyyy-MM-dd"/>
<input name="staffbirthdate" value="${dateTest}"/>"