项目结构:


一、数据库中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. C# string 的一点属性、方法什么的

    今天学的基本可以说是都属于方法和属性 下面这两句话非常重要,确实非常重要 凡是可以  “ . ”     出来的,前面是黑色的小扳手的:属性 紫色的立方体的:方法 这个对于以后自学帮助是不小的,当然, ...

  2. xshell提示评估过期怎么办?

    刚刚打开xshell准备连上虚拟机写代码,结果提示评估过期,真的很气,在百度上找了好久才找到解决办法,现在分享给大家:. 1.复制这个链接在浏览器打开https://www.netsarang.com ...

  3. 180801-Spring之定时任务基本使用篇

    文章链接:https://liuyueyi.github.io/hexblog/2018/08/01/180801-Spring之定时任务基本使用篇/ Spring之定时任务基本使用篇 spring- ...

  4. Linux学习之常用命令(二)

    1.上次介绍了一些常用的系统命令,这次又总结了一些小命令,故分享一下: 网卡地址查询的命令: ifconfig #不同于Windows系统,它的是ifconfig而不是ipconfig ip -a # ...

  5. (2017)你最不建议使用的Python Web框架?

    https://www.sohu.com/a/164042813_737973   挺有意思的 经过一周的Django学习,以及对比,最终选定了以Flask入手来学习Python web开发.

  6. 网格系统-bootStrap4常用CSS笔记

    .row 定义一行 .col 均分列数,最多一行12列.每列左右间隙各15px .col-{1到12} 定义在所有屏幕下的列宽 .col-{sm|md|lg|xl}-{1到12} 定义在指定屏幕下该列 ...

  7. LeetCode 刷题笔记 2. 有效的括号(Valid Parentheses)

    tag: 栈(stack) 题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须 ...

  8. mysql安装(rpm)

    mysql安装(rpm) 1.卸载系统自带的 mariadb-lib [root@centos-linux ~]# rpm -qa|grep mariadb mariadb-libs-5.5.44-2 ...

  9. 【Go】累加器的测试问题记录

    关于GoLang学习过程中的一个问题mark,教程上说两个累加器的地址应该是不一样的,但是实际测试出来结果一样 package main import( "fmt" ) func ...

  10. windows离线补丁包下载路径-云盾安骑士

    我们有一台阿里云服务器,只有内网可以访问,无外网资源. 阿里云账户邮箱反复收到阿里云云盾的漏洞报警通知,推荐安装安骑士组件. 安骑士组件是收费服务.阿里云服务器,无法连上外网,无法自动安装补丁.需要将 ...