springmvc+mybatis 处理时间
项目结构:

一、数据库中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 处理时间的更多相关文章
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)【转】
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- 解决springmvc+mybatis+mysql中文乱码问题【转】
这篇文章主要介绍了解决java中springmvc+mybatis+mysql中文乱码问题的相关资料,需要的朋友可以参考下 近日使用ajax请求springmvc后台查询mysql数据库,页面显示中文 ...
- Maven创建web项目:SpringMVC+Mybatis 【转】
IDEA14创建Maven管理的SpringMVC+Mybatis,web项目 项目构建步骤 1.File->New->Project 勾选Create from archetype 点击 ...
- 基于Spring+SpringMVC+Mybatis的Web系统搭建
系统搭建的配置大同小异,本文在前人的基础上做了些许的改动,重写数据库,增加依据权限的动态菜单的实现,也增加了后台返回json格式数据的配置,详细参见完整源码. 主要的后端架构:Spring+Sprin ...
- IDEA中maven搭建Spring+SpringMVC+mybatis项目
一.介绍 使用IDEA搭建maven web项目,整合框架Spring+SpringMVC+mybatis 项目结构图:
- 【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(三)
Spring+SpringMVC MVC呢,现在似乎越来越流行使用SpringMVC框架,我自己用的感觉,是非常好,确实很舒服,配置一开始是麻烦了一点点,但是后续的开发真的是很清爽! SpringMV ...
- Spring+SpringMvc+Mybatis框架集成搭建教程
一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以在自己搭建SSM框架集成的时候,出现了这样或者那样的问题,很是苦恼 ...
- (转)springMVC+mybatis+ehcache详细配置
一. Mybatis+Ehcache配置 为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方 ...
- springmvc+mybatis+spring 整合源码项目
A集成代码生成器 [正反双向(单表.主表.明细表.树形表,开发利器)+快速构建表单; freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等 ...
随机推荐
- Java 图片处理解决方案:ImageMagick 快速入门教程
文章首发于[博客园-陈树义],点击跳转到原文Java 图片处理解决方案:ImageMagick 快速入门教程. ImageMagick介绍 ImageMagick是一个免费的创建.编辑.合成图片的软件 ...
- Unity依赖注入(笔记)
一.介绍 控制反转(Inversion of Control,简称IoC):整洁架构思想,不允许内部获知外部的存在,这就导致了我们必须在内层定义与外层交互的接口,通过依赖注入的方式将外层实现注入到内部 ...
- Installshield相关的后续操作<一>图解
1.XML文件读取 选择需要读取XML文件 2.SQL数据库的安装 这里选择的文件是数据库脚本.如果脚本没有创建数据库的语句,还需手动输入. 3.自定义界面Dialogs 下一步: 上面红色框框里面是 ...
- Hbase RESTFul API创建namespace返回500
1.使用官方提供的/namespaces/namespace创建namespace失败,返回500,官方提供示例:/namespaces/namespace POST 创建一个新的namespace. ...
- python-分叉树枝
import turtle def draw_branch(length): #绘制右侧树枝 if length >5: if length == 10: turtle.pencolor('gr ...
- FICO(费埃哲)评分系统有什么优缺点?在国内的发展怎么样?
权威回答: FICO的优点很明显: 在美国数据库较全面.一般存储有最近7-10年的个人信用记录,包括银行信用.商业信用甚至保险等. 客观性.计算机自动完成评估工作,克服人为操作的失误. 快捷性.出结果 ...
- CsvReader和CsvWriter操作csv文件
使用方法: 提供把实例数据输出到磁盘csv文件的功能 提供读取csv文件,并封装成指定实例的功能 小工具自己依赖了slf4j+logbak,以及fastJson,如果与系统冲突,可以在pom文件中去除 ...
- HTML和JS自解码机制
1.HTML 如果用户的输入被嵌入到HTML代码中,会进行HTML解码 解码方式包括: 1.HTML实体编码: 假定下面onclick后面的内容是可控的 点击按钮 2.进制编码: 点击按钮 2.JS ...
- git实践笔记
title: git实践笔记 date: 2016-10-15 18:40:26 tags: [Git] categories: [Tool,Git] --- 概述 本文记录常用 git 的功能和命令 ...
- Linux 150命令之查看文件及内容处理命令 more split file diff paste wc dps2unix
more命令 使用more命令显示more /var/log/boot.log-20171129文件,可以从图中看出,系统在显示满一个屏幕时暂停,使用空格可以翻页,使用Q键可以退出. split sp ...