项目结构:


一、数据库中time的字段为datetime
1. 数据库设计如图

2. addNews.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
<script language="javascript" type="text/javascript" src="${ctx }/js/My97DatePicker/WdatePicker.js"></script>
<table>
<tr>
<td align="right">时间:</td>
<td>
<input cssClass="Wdate" onfocus="WdatePicker({skin:'whyGreen',dateFmt:'yyyy-MM-dd HH:mm:ss'});" name="newsTime" size="40" value="" />
</td>
</tr>
</table>
<!--添加其他字段的代码省略-->

插入时间所使用的控件:My97DatePicker http://www.my97.net/index.asp ,也可以这里下载

3. News.java

import java.io.Serializable;
import java.util.Date; import org.springframework.format.annotation.DateTimeFormat; //新闻
public class News implements Serializable{
private Integer newsID;
private String newsTitle;
private String newsAbstract;
private String newsAuthor;
/**
* 使用@ModelAttribute接收参数时
* form表单中有日期,Spring不知道该如何转换,
* 要在实体类的日期属性上加@DateTimeFormat(pattern="yyyy-MM-dd")注解
* 使用@DateTimeFormat格式:这样jsp页面传递过来的String类型的时间 '2018-04-12 19:40:17' 转换为 Date 类型
*/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date newsTime;//新闻时间
private String newsContent; public News(){
super();
}
//setter and getter
}

4. NewsMapper.java和NewDynaSqlProvider.java
(1)NewsMapper.java

//动态插入新闻
@SelectProvider(type=NewsDynaSqlProvider.class,method="insertNews")
void save(News news);

(2)NewDynaSqlProvider.java

//动态插入
public String insertNews(final News news){
return new SQL(){
{
INSERT_INTO("news");
if(news.getNewsTitle() != null && !news.getNewsTitle().equals("")){
VALUES("newsTitle", "#{newsTitle}");
}
if(news.getNewsAbstract() != null && !news.getNewsAbstract().equals("")){
VALUES("newsAbstract", "#{newsAbstract}");
}
if(news.getNewsAuthor() != null && !news.getNewsAuthor().equals("")){
VALUES("newsAuthor", "#{newsAuthor}");
}
if(news.getNewsTime() != null && !news.getNewsTime().equals("")){
VALUES("newsTime", "#{newsTime}");
}
if(news.getNewsContent() != null && !news.getNewsContent().equals("")){
VALUES("newsContent", "#{newsContent}");
}
}
}.toString();
}

5. testService.java和testServiceImpl.java

(1)testService.java

/**
* 添加新闻
* @param News 新闻对象
*/
void addNews(News news);

(2)testServiceImpl.java

@Override
public void addNews(News news) {
newsMapper.save(news);
}

6. NewsController.java

@RequestMapping(value="/addNewst")
public ModelAndView addNewst(
String flag,
@ModelAttribute News news,
ModelAndView mv,
HttpSession session){
if(flag.equals("1")){
mv.setViewName("addNews");
}else{
testService.addNews(news);
mv.setViewName("redirect:/htNews");
}
return mv;
}

插入时间除了在News.java中使用@DateTimeFormat设置一下时间格式,在插入语句中跟插入String类型的字段没有区别。

运行界面:

7. 查询语句

//查询所有新闻(包括查询时间)
@Select("select * from news")
List<News> findAllNews();

8. 查询页面获取时间时,也要设置时间格式:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="f" %>
<!--省略其他代码-->
<p>
<f:formatDate value="${news.newsTime }" type="both" dateStyle="long"/>
</p>
<!--省略其他代码-->

<fmt:formatDate> 标签设置时间格式的属性参考:http://www.runoob.com/jsp/jstl-format-formatdate-tag.html

运行界面:

另外发现在插入时间2018-04-11 15:54:26时,后台获取的时间并不是2018-04-11 15:54:26的格式,而是Wed Apr 11 15:54:26 CST 2018

News [newsID = null newsTitle = 新闻标题 newsAbstract = abstract newsTime = Wed Apr 11 15:54:26 CST 2018 newsContent = add time]
date type: class java.util.Date
newsTime: Wed Apr 11 15:54:26 CST 2018

传入的数据时间格式:

二、数据库中time的字段为timestamp
1. 数据库中字段属性为timestamp时,可设置自动更新时间
设置方法:
(1)用创建数据库时设置

CREATE TABLE `notices` (
`noticeID` int(50) NOT NULL AUTO_INCREMENT,
`noticeName` varchar(100),
`noticeContent` varchar(500),
`noticeTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`noticeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

如果希望在更新记录时还能自动更新noticeTime字段为当前时间:

`noticeTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

(2)在Navicat for MySQL中设置


2. Notices.java

import java.io.Serializable;
import java.util.Date; public class Notices implements Serializable{
private Integer noticeID;
private String noticeName;
private String noticeContent;
private Date noticeTime; public Notices(){
super();
}
//setter and getter
}

3. SQL动态插入,在插入内容时,会自动获取当前时间并保存进数据库

     //动态插入公告
public String insertNotice(final Notices notices){ return new SQL(){
{
INSERT_INTO("notices");
if(notices.getNoticeName() != null && !notices.getNoticeName().equals("")){
VALUES("noticeName", "#{noticeName}");
}
if(notices.getNoticeContent() != null && !notices.getNoticeContent().equals("")){
VALUES("noticeContent", "#{noticeContent}");
}
}
}.toString();
}

三、MySQL中timestamp和datetime的区别

timestamp

datetime

默认格式

yyyy-MM-dd HH:mm:ss

时间范围

'1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC

即1970——2038年

'1000-01-01 00:00:00' to '9999-12-31 23:59:59'

即1001——9999年

时区

自动时区转化

不支持时区

存储

4字节(空间利用率更高)

8字节

默认值

如果不设置的话,默认值也是null

null

参考:https://www.cnblogs.com/zhaoyanghoo/p/5581710.html

springmvc+mybatis 处理时间的更多相关文章

  1. SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  2. 解决springmvc+mybatis+mysql中文乱码问题【转】

    这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...

  3. Maven创建web项目:SpringMVC+Mybatis 【转】

    IDEA14创建Maven管理的SpringMVC+Mybatis,web项目 项目构建步骤 1.File->New->Project 勾选Create from archetype 点击 ...

  4. 基于Spring+SpringMVC+Mybatis的Web系统搭建

    系统搭建的配置大同小异,本文在前人的基础上做了些许的改动,重写数据库,增加依据权限的动态菜单的实现,也增加了后台返回json格式数据的配置,详细参见完整源码. 主要的后端架构:Spring+Sprin ...

  5. IDEA中maven搭建Spring+SpringMVC+mybatis项目

    一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图:

  6. 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(三)

    Spring+SpringMVC MVC呢,现在似乎越来越流行使用SpringMVC框架,我自己用的感觉,是非常好,确实很舒服,配置一开始是麻烦了一点点,但是后续的开发真的是很清爽! SpringMV ...

  7. Spring+SpringMvc+Mybatis框架集成搭建教程

    一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...

  8. (转)springMVC+mybatis+ehcache详细配置

    一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...

  9. springmvc+mybatis+spring 整合源码项目

    A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等 ...

随机推荐

  1. dubbo 接口初入门

    最近公司开发新的一套系统,开发出来的方案会基于dubbo分布式服务框架开发的,那么什么是dubbo,身为测试的我,第一眼看到这个,我得去了解了解dubbo是啥玩意,为开展的测试工作做准备,提前先学 d ...

  2. python的变量的命名规则以及定义

    1.变量,指计算机中存储数据的空间 2.变量的命名方式:变量名 = 值 3.变量的命名规定(标识符的命名规定): 只能由数字,字母,下划线组成(可以用中文但是不推荐) 不能以数字开头 不能与关键词重名 ...

  3. c++的重载 缺省参数和命名空间详解

    参加了几次笔试,发现有很多c++方面的问题被卡了.从现在开始进攻c++.之后会陆续更新c++学习笔记. 先说说我学习的书籍,大家如果有好的书籍推荐,感谢留言. 暂时是在看这些书自学. 1.C++介绍. ...

  4. Unity Shader 学习之旅

    Unity Shader 学习之旅 unityshader图形图像 纸上学来终觉浅,绝知此事要躬行 美丽的梦和美丽的诗一样 都是可遇而不可求的——席慕蓉 一.渲染流水线 示例图 Tips:什么是 GP ...

  5. redis-4.0.2

    redis-4.0.2.tar.gz 链接:https://pan.baidu.com/s/1qj4bSgM1s2InLikugRNqKA 提取码:tozq 复制这段内容后打开百度网盘手机App,操作 ...

  6. docker usage

    docker ps -a 查看物理机上面所有容器信息列表 docker exec -it $docker_id /bin/bash 进入容器以默认帐号 docker exec -it -u root ...

  7. Scrum立会报告+燃尽图(十月十一日总第二次):需求分析

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2191 Scrum立会master:张俊余 一.小组介绍 组长:付佳 组员 ...

  8. Final冲刺贡献分

    小组名称:Hello World! 项目名称:空天猎 组长:陈建宇 成员:刘成志.刘耀泽.刘淑霞.黄泽宇.方铭.贾男男 一.贡献分数规则: (1)基础分:5 , 4 ,4 , 3 , 2 ,2 ,1. ...

  9. 探路者-Beta发布中间产物

    版本控制 版本控制报告:http://www.cnblogs.com/linym762/p/7881047.html git地址:https://git.coding.net/clairewyd/to ...

  10. 接着继续(OO博客第四弹)

    .测试与JSF正确性论证 测试和JSF正确性论证是对一个程序进行检验的两种方式.测试是来的最直接的,输入合法的输入给出正确的提示,输入非法的输入给出错误信息反馈,直接就能很容易的了解程序的运行情况.但 ...