向mysql表中插入/更新数据时自动添加创建时间/更新时间

本文介绍两种优化MySQL数据库中时间字段的方法:一是通过修改字段类型为TIMESTAMP并设置默认值为CURRENT_TIMESTAMP实现自动添加及更新时间;二是配置生成策略进一步优化。文章通过示例展示了如何在插入和更新数据时自动维护创建时间和更新时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

 

处理方式一:修改数据库字段类型

测试插入数据:

测试更新数据:

处理方式二:配置生成策略


[MySQL版本] 8.x

处理方式一:修改数据库字段类型

自动添加创建时间:

将字段类型设置为TIMESTAMP,非空、默认值为:CURRENT_TIMESTAMP

ALTER TABLE t_type MODIFY COLUMN create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间';

自动更新更新时间:

将字段类型设置为TIMESTAMP,非空、默认值为:

CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

ALTER TABLE t_type MODIFY COLUMN update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL COMMENT '更新时间';

测试插入数据:

    @Autowired
    private ITypeMapper typeMapper;

    @Test
    public void testInsertCurrentTime(){
        IType type = new IType();
        type.setName("散文");
        type.setUserId(81);
        typeMapper.insertType(type);
    }

 执行SQL:

==>  Preparing: INSERT INTO t_type (type_name, user_id) VALUES(?,?);
==> Parameters: 散文(String), 81(Integer)
<==    Updates: 1

数据库中记录:

 插入数据时自动添加了创建时间和更新时间;

测试更新数据:

    @Test
    public void testInsertCurrentTime(){
        IType type = new IType();
        type.setName("小说");
        type.setUserId(81);
        typeMapper.updateType(type);
    }

执行SQL:

==>  Preparing: UPDATE t_type SET type_name=? WHERE user_id=?;
==> Parameters: 小说(String), 81(Integer)
<==    Updates: 1

数据库中记录:

处理方式二:配置生成策略

。。。。更新ing

Java中向数据插入数据同步更新创建时间可以通过以下步骤实现: 1. 在数据添加一个创建时间的字段,例如create_time,类型为datetime或timestamp。 2. 在Java程序中,使用java.sql包中的PreparedStatement对象来执行SQL语句。 3. 在执行插入操作之前,获取当前时间并转换为java.sql.Timestamp类型。 4. 将当前时间设置为create_time字段的值。 5. 执行插入操作。 以下是一个示例代码: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Timestamp; import java.util.Date; public class InsertData { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test"; String username = "root"; String password = "root"; String sql = "INSERT INTO user(name, age, create_time) VALUES (?, ?, ?)"; try { Connection conn = DriverManager.getConnection(url, username, password); PreparedStatement pstmt = conn.prepareStatement(sql); // 设置参数 pstmt.setString(1, "张三"); pstmt.setInt(2, 20); // 设置创建时间为当前时间 Timestamp createTime = new Timestamp(new Date().getTime()); pstmt.setTimestamp(3, createTime); // 执行插入操作 int rows = pstmt.executeUpdate(); System.out.println("插入了" + rows + "行数据"); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上述代码中,我们使用了java.sql.Timestamp类来时间,并将其设置为create_time字段的值。这样,每次插入数据都会自动更新该字段的值为当前时间
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值