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等 ...
随机推荐
- TortoiseGit版本库中某个文件显示问号或叹号的问题解决办法
这是一个怪问题,原因就是文件名大小写与版本库管理的大小写不一致. 解决办法: 1.先把文件夹中的物理文件名改为版本库浏览器中显示的文件名(版本库浏览器中的文件名不知道怎么改),改了以后这个文件图标就变 ...
- Laya中的Image、Texture、WebGLImage
Image Image是Laya的一个UI组件,继承自Component. Image.bitmap属性,是AutoBitmap类型:AutoBitmap继承自Graphics,负责处理图片九宫格逻辑 ...
- shell中与运算 cut切分行 if while综合在一起的一个例子
前言: 公司要统计 treasury库hive表磁盘空间,写了个脚本,如下: 查询hive仓库表占用hdfs文件大小: hadoop fs -du -h /user/hive/warehouse/t ...
- 关于spring boot 使用 mybatis plus INSERT的时候id报错
mybatis plus 在INSERT的时候会默认自动设置插入id 我当时数据库采用的id自增. 在使用插入语句的时候并没有set ID 但是它默认给了一大串 更改mybatis plus全局配置 ...
- hdfs命令大全
hdfs常用命令: 第一部分:hdfs文件系统命令 第一类:文件路径增删改查系列: hdfs dfs -mkdir dir 创建文件夹 hdfs dfs -rmr dir 删除文件夹dir hdf ...
- Hyperledger Fabric CA User’s Guide——开始(三)
Fabric CA User’s Guide——开始 先决条件 安装Go 1.9+ 设置正确的GOPATH环境变量 安装了libtool和libtdhl-dev包 下面是在Ubuntu上安装libto ...
- Calico网络方案
参考文档: Difficulties with traditional overlay networks:https://www.projectcalico.org/learn/ Get Start( ...
- python 拾遗
三引号 可以当做多行字符串使用.在类或者方法中用的时候,可以当做docstrings来使用.具体的规则为: 该文档字符串所约定的是一串多行字符串,其中第一行以某一大写字母开始,以句号结束.第二行为空行 ...
- hadoop 集群HA高可用搭建以及问题解决方案
hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...
- Linux shell中&,&&,|,||的用法
前言 在玩dvwa的命令注入漏洞的时候,遇到了没有预料到的错误,执行 ping 127.0.0.1 & echo "<?php phpinfo(); ?>" & ...