MyBatis-plus框架下資料庫表中的建立時間(create_time)、修改時間(update_time)的處理
我們在一般的資料庫操作中可能經常見到這種操作,表中有兩列,分別為這條資料的建立時間和修改時間,那我們該如何處理呢?在新增資料的或者修改資料的時候 new Date嗎?這樣太low了。
兩種處理方式:
一、資料庫層面的處理
一般不推薦使用,工作中不允許修改資料庫
1、表中新增create_time、update_time兩列,並設定預設值和
欄位:create_time
欄位:修改時間
2、單元測試
1、實體類
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
@TableId(type = IdType.AUTO) //主鍵自增策略
private Integer id;
private String bookname;
private String author;
private Date createTime;
private Date updateTime;
}
2、定義BookMapper介面
@Repository
public interface BookMapper extends BaseMapper<Book> {
}
3、編寫測試類進行測試並檢視結果
@RunWith(SpringRunner.class)
@SpringBootTest
public class BookTimeTest {
@Autowired
private BookMapper bookMapper;
@Test
public void insertBook(){
Book book=new Book();
book.setBookname("白夜行");
book.setAuthor("東野圭吾");
bookMapper.insert(book);
System.out.println("新增結果:"+book);
//1 白夜行 東野圭吾 2020-12-06 21:24:34 2020-12-06 21:24:34
}
@Test
public void updateBook(){
Book book=new Book();
book.setId(1);
book.setBookname("白夜行222");
book.setAuthor("東野圭吾");
bookMapper.updateById(book);
//表中資料:
// 1 白夜行222 東野圭吾 2020-12-06 21:24:34 2020-12-06 21:28:19
}
}
結果證明我們的建立時間和修改時間都能自動完成新增與更新,完全由資料庫端執行,不需要我們人為操作。
二、程式碼側層面上的處理(推薦使用)
通過MyBatis-plus註解與執行器幫我們實現
1、表中只需建立兩個欄位create_time、update_time,不需要像上面那樣進行任何處理。
2、實體類中新增註解
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Book {
@TableId(type = IdType.AUTO) //主鍵自增策略
private Integer id;
private String bookname;
private String author;
@TableField(fill = FieldFill.INSERT) //新增時自動填充
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE) //新增或修改時自動填充
private Date updateTime;
}
public enum FieldFill {
DEFAULT, ——預設不進行任何操作
INSERT,——新增時進行填充操作
UPDATE,——修改時進行填充操作
INSERT_UPDATE; ——新增或修改時進行填充操作
}
3、編寫處理器處理註解
@Component //一定要將處理器新增到 Ioc容器中
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override //1、重寫插入時候的填充策略
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ...");
//setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override //2、重寫修改時候的填充策略
public void updateFill(MetaObject metaObject) {
log.info("start update fill ...");
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
4、測試結果成功
相關文章
- 時間序列資料的處理
- 基於Mybatis-Plus實現自動化操作建立時間和修改時間MyBatis
- Java中如何得到檔案的建立時間&最後修改時間Java
- Java中對時間的處理Java
- 修改SQL Server資料庫表的建立時間最簡單最直接有效的方法SQLServer資料庫
- Java8中的時間處理Java
- ASP.Net中的時間處理ASP.NET
- Tensorflow 視窗時間序列資料的處理
- 批量處理時臨時增加回滾表空間臨時表空間檔案
- 獲取資料庫表的資訊(大小,索引大小,建立時間,行數)資料庫索引
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- Oracle中定位資料表的最近DML時間Oracle
- oracle對於時間間隔的處理Oracle
- Linux下修改檔案建立時間(修改檔案更改時間)Linux
- 修改系統時間對oracle資料庫的影響Oracle資料庫
- Oracle Temp臨時表空間處理Oracle
- oracle 表空間 不足時如何處理Oracle
- PHP 時間處理PHP
- java時間處理Java
- ORACLE 處理時間Oracle
- bash時間處理
- Python的時間、日期和時間戳的處理辦法Python時間戳
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- 查詢一個表插入資料的時間,按BLOCK時間BloC
- VNPY2 中凌晨0點時間戳的處理問題,和夜盤資料時間戳分析時間戳
- SQLServer資料庫中建立臨時表SQLServer資料庫
- oracle臨時表空間過大的原因&&處理Oracle
- [工具]PHP 中的日期時間處理利器 – CarbonPHP
- Python中的時間處理大總結Python
- [工具]PHP 中的日期時間處理利器 - CarbonPHP
- 字串和日期時間的處理字串
- iOS 關於時間的處理iOS
- 時間同步的修改
- Oracle 資料倉儲簡單時間維度表的建立Oracle
- 檢視系統中各種等待時間佔用的資料庫時間比例資料庫
- . 資料庫臨時表空間的資料檔案的丟失資料庫
- 刪除臨時表空間hang處理
- laravel sync()同步時修改中間表欄位Laravel