问题背景
根据之前介绍的Mybatis-generator,本章介绍我们常用的几种时间插入到mysql的方式
- 插件可以自动生成mapper映射文件
- 可以自己灵活更改sql语句
注意事项:
- 因为我写的是一个系列,在之前的文章介绍过的一般不会重复介绍,可以根据以下链接查看之前的知识点
- 默认已安装mysql6或以上版本
- 默认已安装JDK
- 可以根据本文的项目搭建自己创建工程,也可以直接下载源码进行参考
- 第一篇文章有数据表创建,我在贴一份吧,源码里面也有
# 创建数据库
CREATE DATABASE mysqlTest;
# 选择使用数据库
USE mysqlTest;
# 创建表t_article并插入相关数据
DROP TABLE IF EXISTS datetime_record;
DROP TABLE IF EXISTS generator_record;
CREATE TABLE datetime_record (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录id',
create_time datetime(3) COMMENT '创建时间',
update_time datetime(3) COMMENT '更新时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE generator_record (
id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录id',
create_time varchar(50) COMMENT '创建时间',
update_time varchar(50) COMMENT '更新时间',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DAO层使用Mybatis-generator生成映射文件连接Mysql入门测试用例(无限速源码下载),单条增删改查CRUD(一)
DAO层使用Mybatis-generator生成映射文件连接Mysql入门测试用例(无限速源码下载),selectByExample,insertSelective,countByExample,selectOneByExample的使用(二)
DAO层使用Mybatis-generator生成映射文件连接Mysql入门测试用例(无限速源码下载),deleteByExample,batchInsert,updateByExampleSelective,updateByExample的使用(三)
DAO层使用Mybatis-generator生成映射文件连接Mysql入门测试用例(无限速源码下载),page分页和limit的使用(四)
DAO层使用Mybatis-generator生成映射文件连接Mysql入门测试用例(无限速源码下载),insert和update插入返回带自增主键的两种方式(五)
DAO层使用Mybatis-generator生成映射文件连接Mysql入门测试用例(无限速源码下载),Datetime时间插入五种方式(六)
时间插入
1 数据库类型为DateTime,使用new Date()进行插入时间
@Test
public void datetimeTest1() {
Date date = new Date();
DatetimeRecord datetimeRecord = DatetimeRecord.builder()
.createTime(date)
.updateTime(date)
.build();
int insert = datetimeRecordMapper.insert(datetimeRecord);
log.info("insert: {}", insert);
}
注意后面的小数点是在创建表的时候,添加的,保留三位小数
2 数据库类型为DateTime,使用Timestamp进行插入,这个精度比Date低一些
@Test
public void datetimeTest2() {
Date date = new Date();
//Timestamp比Date精度低一些
Timestamp timestamp = new Timestamp(date.getTime());
DatetimeRecord datetimeRecord = DatetimeRecord.builder()
.createTime(timestamp)
.updateTime(timestamp)
.build();
int insert = datetimeRecordMapper.insert(datetimeRecord);
log.info("insert: {}", insert);
}
3 数据库类型为varchar,使用字符串进行插入
package com.yg.mybatisgenerator.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTimeUtils {
public final static String DATE_TIME_FORMAT_PATTERN = "yyyy-MM-dd HH:mm:ss";
public final static String DATE_FORMAT_PATTERN = "yyyy-MM-dd";
public static String getNowDate() {
Date data = new Date();
SimpleDateFormat formatter = new SimpleDateFormat(DATE_TIME_FORMAT_PATTERN);
String currentTime = formatter.format(data);
return currentTime;
}
}
@Test
public void datetimeTest3() {
GeneratorRecord generatorRecord = GeneratorRecord.builder()
.createTime(DateTimeUtils.getNowDate())
.updateTime(DateTimeUtils.getNowDate())
.build();
int insert = generatorRecordMapper.insert(generatorRecord); // 成功返回1,插入一条数据成功
log.info("generatorRecord: {}", generatorRecord);
log.info("insert: {}", insert);
GeneratorRecord record = generatorRecordMapper.selectByPrimaryKey(1L);
log.info("generatorRecord: {}", record);
}
4 数据库类型为DateTime,使用SimpleDateFormat格式化插入
@Test
public void datetimeTest4() throws ParseException {
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DATE_TIME_FORMAT_PATTERN);
String format = simpleDateFormat.format(date);
log.info("format: {}", format);
date = simpleDateFormat.parse(format);
DatetimeRecord datetimeRecord = DatetimeRecord.builder()
.createTime(date)
.updateTime(date)
.build();
int insert = datetimeRecordMapper.insert(datetimeRecord);
log.info("insert: {}", insert);
}
5 更改mapper,将时间改成now()
@Test
public void datetimeTest5(){
DatetimeRecord datetimeRecord = DatetimeRecord.builder()
.build();
int insert = datetimeRecordMapper.insert(datetimeRecord);
log.info("insert: {}", insert);
}
6 整体目录结构
总结
- 可以把更新操作改成now(),就不用每次都自己插入了
作为程序员第 73 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha ...